
void __gmpn_sqrlo(mp_ptr rp,mp_srcptr xp,mp_size_t n)

{
  longlong lVar1;
  undefined *puVar2;
  mp_limb_t *pmVar3;
  undefined4 *puVar4;
  uint *puVar5;
  int iVar6;
  mp_limb_t *pmVar7;
  uint uVar8;
  mp_ptr pmVar9;
  int iVar10;
  tmp_reentrant_t *ptVar11;
  tmp_reentrant_t *ptVar12;
  tmp_reentrant_t *ptVar13;
  size_t *psVar14;
  mp_limb_t mVar15;
  uint uVar16;
  mp_srcptr pmVar17;
  uint *puVar18;
  size_t *psVar19;
  undefined1 *puVar20;
  uint *in_a3;
  int iVar21;
  uint uVar22;
  mp_srcptr pmVar23;
  mp_srcptr pmVar24;
  mp_srcptr pmVar25;
  mp_limb_t *unaff_s0;
  int iVar26;
  uint *unaff_s3;
  uint *unaff_s4;
  mp_limb_t *unaff_s5;
  undefined1 *puVar27;
  undefined1 *unaff_s6;
  mp_ptr pp;
  mp_srcptr unaff_s7;
  int iVar28;
  undefined *puVar29;
  code *pcVar30;
  undefined *puVar31;
  int *piVar32;
  int *piVar33;
  int *piVar34;
  int an;
  undefined4 uVar35;
  code *pcVar36;
  longlong lVar37;
  int aiStack_50 [6];
  tmp_reentrant_t *__tmp_marker;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  piVar33 = aiStack_50;
  piVar32 = aiStack_50;
  piVar34 = aiStack_50;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  if (n < 0x28) {
    puVar20 = (undefined1 *)n;
    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();
    ptVar11 = (tmp_reentrant_t *)rp;
    puVar5 = xp;
  }
  else {
    unaff_s3 = (uint *)(n * 8);
    __tmp_marker = (tmp_reentrant_t *)0x0;
    if (unaff_s3 < (uint *)0x7f01) {
      piVar32 = aiStack_50 + n * -2;
      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);
    }
    else {
      unaff_s0 = (mp_limb_t *)
                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);
    }
    unaff_s5 = (mp_limb_t *)(n * 4);
    if (n < 0x2e00) {
      unaff_s5 = unaff_s0 + n;
      if (n < 0x52) {
        unaff_s3 = (uint *)(n >> 1);
LAB_000555e4:
        n = n - (int)unaff_s3;
        unaff_s6 = (undefined1 *)(n * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);
        pmVar17 = xp + n;
        if ((mp_ptr)n != (mp_ptr)0x0) {
LAB_00055760:
          mVar15 = *unaff_s0;
          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;
          *rp = mVar15;
        }
joined_r0x0005570c:
        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;
        if ((int)unaff_s3 < 0x28) {
          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;
        }
      }
      else {
        if (n < 0x70) {
          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);
          n = n - (int)unaff_s3;
          unaff_s6 = (undefined1 *)(n * 4);
          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);
          pmVar17 = xp + n;
          mVar15 = *unaff_s0;
LAB_000556dc:
          pmVar7 = unaff_s0 + 1;
          pmVar9 = rp;
          do {
            *pmVar9 = mVar15;
            pmVar3 = pmVar7 + 1;
            mVar15 = *pmVar7;
            pmVar7 = pmVar3;
            pmVar9 = pmVar9 + 1;
          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));
          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;
          goto joined_r0x0005570c;
        }
        if (n < 0x204) {
          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);
          goto LAB_000555e4;
        }
        unaff_s3 = (uint *)((uint)n / 10);
        n = n - (int)unaff_s3;
        unaff_s6 = (undefined1 *)(n * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);
        pmVar17 = xp + n;
        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;
        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;
      }
      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);
      rp = (mp_ptr)((int)rp + (int)unaff_s6);
      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);
      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);
      puVar5 = rp;
      in_a3 = unaff_s3;
      (*(code *)PTR___gmpn_add_n_00097334)(rp);
    }
    else {
      *(mp_size_t *)((int)piVar32 + 0x10) = n;
      puVar5 = xp;
      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);
      iVar21 = n + -1;
      puVar20 = (undefined1 *)*unaff_s0;
      pmVar9 = rp;
      pmVar7 = unaff_s0;
      do {
        pmVar7 = pmVar7 + 1;
        *pmVar9 = (mp_limb_t)puVar20;
        iVar21 = iVar21 + -1;
        puVar20 = (undefined1 *)*pmVar7;
        pmVar9 = pmVar9 + 1;
      } while (iVar21 != 0);
      n = (mp_size_t)(rp + n);
      *(undefined1 **)(n + -4) = puVar20;
      in_a3 = (uint *)0x0;
    }
    ptVar11 = __tmp_marker;
    unaff_s4 = rp;
    unaff_s7 = xp;
    piVar33 = piVar32;
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar2) {
    return;
  }
  uVar35 = 0x557c8;
  puVar29 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  lVar37 = CONCAT44(ptVar11,puVar5);
  puVar31 = puVar29 + 0x49870;
  puVar4 = *(undefined4 **)(puVar29 + 0x41d70);
  uVar22 = *puVar5;
  *(undefined **)((int)piVar33 + -0xf0) = puVar31;
  *(undefined4 **)((int)piVar33 + -0xe0) = puVar4;
  *(undefined **)((int)piVar33 + -0x20) = puVar2;
  *(mp_size_t *)((int)piVar33 + -0x24) = n;
  *(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0;
  *(undefined4 *)((int)piVar33 + -4) = uVar35;
  *(int **)((int)piVar33 + -8) = aiStack_50;
  *(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7;
  *(undefined1 **)((int)piVar33 + -0x10) = unaff_s6;
  *(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5;
  *(uint **)((int)piVar33 + -0x18) = unaff_s4;
  *(uint **)((int)piVar33 + -0x1c) = unaff_s3;
  *(undefined4 *)((int)piVar33 + -0x2c) = *puVar4;
  if ((int)puVar20 < 3) {
    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;
    puVar27 = puVar20;
    if (puVar20 == &DAT_00000001) {
      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);
    }
    else {
      ptVar11->next = (tmp_reentrant_t *)lVar1;
      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);
      piVar34 = aiStack_50;
      lVar37 = lVar1;
    }
  }
  else {
    unaff_s4 = (uint *)(puVar20 + -1);
    pcVar30 = *(code **)(puVar29 + 0x418d4);
    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;
    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;
    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;
    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);
    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);
    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);
    iVar26 = *(int *)((int)piVar33 + -0xf0);
    piVar34 = (int *)((int)unaff_s3 + iVar21);
    if ((int)unaff_s4 < 4) {
      iVar21 = 1;
    }
    else {
      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;
      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);
      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);
      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));
      unaff_s7 = puVar5 + 2;
      puVar27 = puVar20 + -4;
      do {
        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);
        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);
        puVar27 = puVar27 + -2;
        iVar26 = *(int *)((int)piVar33 + -0xf0);
        unaff_s4 = unaff_s4 + -1;
        unaff_s6 = unaff_s6 + 8;
        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));
        unaff_s7 = unaff_s7 + 1;
      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);
      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;
    }
    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {
      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);
    }
    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);
    unaff_s5[-0x28] = (mp_limb_t)piVar34;
    ptVar12 = ptVar11;
    puVar18 = puVar5;
    do {
      uVar22 = *puVar18;
      ptVar13 = ptVar12 + 1;
      puVar18 = puVar18 + 1;
      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;
      ptVar12->next = (tmp_reentrant_t *)lVar37;
      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);
      ptVar12 = ptVar13;
    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);
    if (((uint)puVar20 & 1) != 0) {
      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));
      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];
    }
    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);
    puVar5 = *(uint **)((int)piVar33 + -0xdc);
    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);
    psVar14 = &ptVar11->size;
    psVar19 = psVar14;
    puVar20 = puVar27;
    in_a3 = puVar5;
    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();
    lVar37 = CONCAT44(psVar14,psVar19);
    puVar31 = *(undefined **)((int)piVar33 + -0xf0);
  }
  if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {
    return;
  }
  pcVar30 = *(code **)(puVar31 + -0x7b70);
  pcVar36 = __gmpn_toom22_mul;
  (*pcVar30)();
  pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20);
  *(undefined1 **)((int)piVar33 + -0x128) = puVar27;
  iVar21 = (int)puVar20 >> 1;
  *(int **)((int)piVar33 + -0x108) = piVar34;
  an = (int)puVar20 - iVar21;
  *(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5;
  *(uint **)((int)piVar33 + -0x124) = puVar5;
  *(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0;
  *(uint **)((int)piVar33 + -0x118) = unaff_s4;
  *(uint **)((int)piVar33 + -0x11c) = unaff_s3;
  *(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11;
  *(code **)((int)piVar33 + -0x104) = pcVar36;
  pmVar17 = pmVar9 + an;
  *(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7;
  *(undefined1 **)((int)piVar33 + -0x110) = unaff_s6;
  *(int *)((int)piVar33 + -0xfc) = (int)lVar37;
  *(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4;
  iVar26 = *(int *)((int)piVar33 + -0xf0) - an;
  if (iVar21 == an) {
    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);
    iVar10 = iVar21;
    do {
      iVar10 = iVar10 + -1;
      pcVar36 = *(code **)(pcVar30 + 0x41aa4);
      if (iVar10 < 0) goto LAB_00055eb0;
      uVar22 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar22 == puVar5[an + 1]);
    pcVar36 = *(code **)(pcVar30 + 0x41aa4);
    if (uVar22 <= puVar5[an + 1]) {
      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)
                 ,an);
      iVar10 = *(int *)((int)piVar33 + -0x140);
      *(undefined4 *)((int)piVar33 + -0x130) = 1;
      goto LAB_00055b54;
    }
LAB_00055eb0:
    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),
               an);
    iVar10 = *(int *)((int)piVar33 + -0x140);
    *(undefined4 *)((int)piVar33 + -0x130) = 0;
    if (an != iVar26) goto LAB_00055b5c;
LAB_00055ed4:
    pmVar23 = in_a3 + an;
    puVar5 = in_a3 + an + -1;
    iVar28 = an;
    do {
      iVar28 = iVar28 + -1;
      pcVar30 = *(code **)(iVar10 + -0x7b2c);
      if (iVar28 < 0) goto LAB_00055f0c;
      uVar22 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar22 == puVar5[an + 1]);
    pcVar30 = *(code **)(iVar10 + -0x7b2c);
    if (puVar5[an + 1] < uVar22) {
LAB_00055f0c:
      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;
      (*pcVar30)(pmVar17,in_a3,pmVar23,an);
      iVar10 = *(int *)((int)piVar33 + -0x140);
      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);
    }
    else {
      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;
      (*pcVar30)(pmVar17,pmVar23,in_a3,an);
      iVar10 = *(int *)((int)piVar33 + -0x140);
      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);
      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;
    }
  }
  else {
    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);
    if (iVar28 == 0) {
      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);
      iVar10 = iVar21;
      do {
        iVar10 = iVar10 + -1;
        if (iVar10 < 0) goto LAB_00055b2c;
        uVar22 = *puVar5;
        puVar5 = puVar5 + -1;
      } while (uVar22 == puVar5[an + 1]);
      pcVar30 = *(code **)(pcVar30 + 0x41aa4);
      if (uVar22 <= puVar5[an + 1]) {
        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),
                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);
        iVar10 = *(int *)((int)piVar33 + -0x140);
        *(undefined4 *)((int)piVar33 + -0x130) = 1;
        pmVar9[iVar21] = 0;
        goto LAB_00055b54;
      }
    }
    else {
LAB_00055b2c:
      pcVar30 = *(code **)(pcVar30 + 0x41aa4);
    }
    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),
                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);
    iVar10 = *(int *)((int)piVar33 + -0x140);
    *(undefined4 *)((int)piVar33 + -0x130) = 0;
    pmVar9[iVar21] = iVar28 - iVar6;
LAB_00055b54:
    if (an == iVar26) goto LAB_00055ed4;
LAB_00055b5c:
    pmVar24 = in_a3 + an;
    iVar6 = an - iVar26;
    pmVar23 = in_a3 + an + -1;
    iVar28 = iVar6;
    do {
      mVar15 = *pmVar23;
      iVar28 = iVar28 + -1;
      pmVar23 = pmVar23 + -1;
      if (mVar15 != 0) goto LAB_00055b90;
    } while (iVar28 != 0);
    puVar5 = in_a3 + iVar26 + -1;
    iVar28 = iVar26;
    do {
      iVar28 = iVar28 + -1;
      if (iVar28 < 0) goto LAB_00055b90;
      uVar22 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar22 == puVar5[an + 1]);
    pcVar30 = *(code **)(iVar10 + -0x7b2c);
    if (puVar5[an + 1] < uVar22) {
LAB_00055b90:
      iVar28 = 0;
      if (iVar26 != 0) {
        pcVar30 = *(code **)(iVar10 + -0x7b2c);
        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;
        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);
        iVar10 = *(int *)((int)piVar33 + -0x140);
        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);
        iVar28 = iVar26;
        if (iVar6 != 0) {
          pmVar23 = in_a3 + iVar26;
          if (an <= iVar26) goto LAB_00055bc8;
          pmVar25 = pmVar17 + iVar26;
          mVar15 = *pmVar23;
          *pmVar25 = mVar15 - 1;
          while (iVar28 = iVar28 + 1, mVar15 == 0) {
            pmVar25 = pmVar25 + 1;
            if (an == iVar28) goto LAB_00055bc8;
            mVar15 = pmVar23[1];
            pmVar23 = pmVar23 + 1;
            *pmVar25 = mVar15 - 1;
          }
        }
      }
      if ((pmVar17 != in_a3) && (iVar28 < an)) {
        pmVar23 = in_a3 + iVar28;
        pmVar7 = pmVar17 + iVar28;
        do {
          mVar15 = *pmVar23;
          pmVar23 = pmVar23 + 1;
          *pmVar7 = mVar15;
          pmVar7 = pmVar7 + 1;
        } while (pmVar23 != pmVar24);
      }
    }
    else {
      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;
      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);
      iVar10 = *(int *)((int)piVar33 + -0x140);
      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);
      pmVar23 = pmVar17 + iVar26;
      do {
        iVar6 = iVar6 + -1;
        *pmVar23 = 0;
        pmVar23 = pmVar23 + 1;
      } while (iVar6 != 0);
      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;
    }
  }
LAB_00055bc8:
  *(int *)((int)piVar33 + -300) = an * 8;
  *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;
  if (0x13 < an) {
    *(int *)((int)piVar33 + -0x148) = an;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;
    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,
                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));
    iVar10 = *(int *)((int)piVar33 + -0x140);
    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);
  }
  else {
    pcVar30 = *(code **)(iVar10 + -0x7bd0);
    *(int *)((int)piVar33 + -0x148) = an;
    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);
    iVar10 = *(int *)((int)piVar33 + -0x140);
    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);
  }
  pp = pmVar17 + an;
  if (iVar26 < iVar21) {
    if (iVar26 < 0x14) {
      pcVar30 = *(code **)(iVar10 + -0x7bd0);
      *(int *)((int)piVar33 + -0x148) = iVar26;
LAB_00055c5c:
      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);
      iVar10 = *(int *)((int)piVar33 + -0x140);
    }
    else {
      if (iVar21 << 2 < iVar26 * 5) {
        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;
        *(int *)((int)piVar33 + -0x148) = iVar26;
        goto LAB_00055ff8;
      }
      pcVar30 = *(code **)(iVar10 + -0x7c88);
      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;
      *(int *)((int)piVar33 + -0x148) = iVar26;
      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);
      iVar10 = *(int *)((int)piVar33 + -0x140);
    }
  }
  else {
    if (iVar21 < 0x14) {
      pcVar30 = *(code **)(iVar10 + -0x7bd0);
      *(int *)((int)piVar33 + -0x148) = iVar21;
      goto LAB_00055c5c;
    }
    *(int *)((int)piVar33 + -0x148) = iVar21;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;
LAB_00055ff8:
    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,
                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));
    iVar10 = *(int *)((int)piVar33 + -0x140);
  }
  if (0x13 < an) {
    *(int *)((int)piVar33 + -0x148) = an;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;
    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,
                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));
    iVar10 = *(int *)((int)piVar33 + -0x140);
  }
  else {
    pcVar30 = *(code **)(iVar10 + -0x7bd0);
    *(int *)((int)piVar33 + -0x148) = an;
    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);
    iVar10 = *(int *)((int)piVar33 + -0x140);
  }
  iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an);
  iVar21 = (iVar21 + iVar26) - an;
  puVar5 = pp + an;
  iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an);
  iVar28 = *(int *)((int)piVar33 + -0x140);
  uVar22 = iVar26 + iVar10;
  if (iVar21 != 0) {
    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);
    iVar28 = *(int *)((int)piVar33 + -0x140);
    if (iVar26 != 0) {
      if (iVar21 < an) {
        pmVar9 = pp + iVar21;
        mVar15 = *pmVar9;
        *pmVar9 = mVar15 + 1;
        if (mVar15 + 1 != 0) {
          iVar21 = *(int *)((int)piVar33 + -0x130);
          goto LAB_00055cec;
        }
        do {
          iVar21 = iVar21 + 1;
          if (an == iVar21) goto LAB_00055f98;
          mVar15 = pmVar9[1];
          pmVar9 = pmVar9 + 1;
          *pmVar9 = mVar15 + 1;
        } while (mVar15 + 1 == 0);
      }
      else {
LAB_00055f98:
        iVar10 = iVar10 + 1;
      }
    }
  }
  iVar21 = *(int *)((int)piVar33 + -0x130);
LAB_00055cec:
  if (iVar21 == 0) {
    iVar21 = (**(code **)(iVar28 + -0x7b2c))
                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);
    iVar21 = -iVar21;
  }
  else {
    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));
  }
  uVar8 = iVar21 + iVar10;
  uVar16 = uVar22 + *pp;
  *pp = uVar16;
  if (uVar16 < uVar22) {
    do {
      mVar15 = pp[1] + 1;
      pp[1] = mVar15;
      if (mVar15 != 0) break;
      pp = pp + 2;
      mVar15 = *pp;
      *pp = mVar15 + 1;
    } while (mVar15 + 1 == 0);
  }
  uVar22 = *puVar5;
  if (uVar8 < 3) {
    *puVar5 = uVar8 + uVar22;
    if (uVar8 + uVar22 < uVar8) {
      do {
        uVar22 = puVar5[1] + 1;
        puVar5[1] = uVar22;
        if (uVar22 != 0) {
          return;
        }
        puVar5 = puVar5 + 2;
        uVar22 = *puVar5;
        *puVar5 = uVar22 + 1;
      } while (uVar22 + 1 == 0);
    }
  }
  else {
    while( true ) {
      *puVar5 = uVar22 - 1;
      if (uVar22 != 0) break;
      uVar22 = puVar5[1];
      puVar5 = puVar5 + 1;
    }
  }
  return;
}



void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)

{
  longlong lVar1;
  undefined *puVar2;
  undefined4 *puVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint *puVar9;
  uint uVar10;
  uint *puVar11;
  int iVar12;
  uint uVar13;
  uint *unaff_s0;
  uint *puVar14;
  int iVar15;
  int iVar16;
  uint *puVar17;
  uint *unaff_s3;
  uint *unaff_s4;
  uint *unaff_s5;
  uint *puVar18;
  undefined1 *unaff_s6;
  uint *unaff_s7;
  int iVar19;
  undefined *puVar20;
  code *pcVar21;
  undefined *puVar22;
  int *piVar23;
  int *piVar24;
  int *piVar25;
  int iVar26;
  undefined4 uVar27;
  code *pcVar28;
  longlong lVar29;
  int aiStack_50 [6];
  uint *local_30;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  piVar24 = aiStack_50;
  piVar23 = aiStack_50;
  piVar25 = aiStack_50;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  if ((int)param_3 < 0x28) {
    puVar11 = param_3;
    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();
    puVar17 = param_1;
    puVar5 = param_2;
  }
  else {
    unaff_s3 = (uint *)((int)param_3 * 8);
    local_30 = (uint *)0x0;
    if (unaff_s3 < (uint *)0x7f01) {
      piVar23 = aiStack_50 + (int)param_3 * -2;
      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);
    }
    else {
      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);
    }
    unaff_s5 = (uint *)((int)param_3 * 4);
    if ((int)param_3 < 0x2e00) {
      unaff_s5 = unaff_s0 + (int)param_3;
      if ((int)param_3 < 0x52) {
        unaff_s3 = (uint *)((int)param_3 >> 1);
LAB_000555e4:
        param_3 = (uint *)((int)param_3 - (int)unaff_s3);
        unaff_s6 = (undefined1 *)((int)param_3 * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
        puVar17 = param_2 + (int)param_3;
        if (param_3 != (uint *)0x0) {
LAB_00055760:
          uVar13 = *unaff_s0;
          if (param_3 != (uint *)0x1) goto LAB_000556dc;
          *param_1 = uVar13;
        }
joined_r0x0005570c:
        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;
        if ((int)unaff_s3 < 0x28) {
          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;
        }
      }
      else {
        if ((int)param_3 < 0x70) {
          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);
          param_3 = (uint *)((int)param_3 - (int)unaff_s3);
          unaff_s6 = (undefined1 *)((int)param_3 * 4);
          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
          puVar17 = param_2 + (int)param_3;
          uVar13 = *unaff_s0;
LAB_000556dc:
          puVar5 = unaff_s0 + 1;
          puVar11 = param_1;
          do {
            *puVar11 = uVar13;
            puVar18 = puVar5 + 1;
            uVar13 = *puVar5;
            puVar5 = puVar18;
            puVar11 = puVar11 + 1;
          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));
          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;
          goto joined_r0x0005570c;
        }
        if ((int)param_3 < 0x204) {
          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);
          goto LAB_000555e4;
        }
        unaff_s3 = (uint *)((uint)param_3 / 10);
        param_3 = (uint *)((int)param_3 - (int)unaff_s3);
        unaff_s6 = (undefined1 *)((int)param_3 * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
        puVar17 = param_2 + (int)param_3;
        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;
        if (param_3 != (uint *)0x0) goto LAB_00055760;
      }
      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);
      param_1 = (uint *)((int)param_1 + (int)unaff_s6);
      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);
      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);
      puVar5 = param_1;
      param_4 = unaff_s3;
      (*(code *)PTR___gmpn_add_n_00097334)(param_1);
    }
    else {
      *(uint **)((int)piVar23 + 0x10) = param_3;
      puVar5 = param_2;
      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);
      iVar12 = (int)param_3 + -1;
      puVar11 = (uint *)*unaff_s0;
      puVar18 = param_1;
      puVar17 = unaff_s0;
      do {
        puVar17 = puVar17 + 1;
        *puVar18 = (uint)puVar11;
        iVar12 = iVar12 + -1;
        puVar11 = (uint *)*puVar17;
        puVar18 = puVar18 + 1;
      } while (iVar12 != 0);
      param_3 = param_1 + (int)param_3;
      param_3[-1] = (uint)puVar11;
      param_4 = (uint *)0x0;
    }
    puVar17 = local_30;
    unaff_s4 = param_1;
    unaff_s7 = param_2;
    piVar24 = piVar23;
    if (local_30 != (uint *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar2) {
    return;
  }
  uVar27 = 0x557c8;
  puVar20 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  lVar29 = CONCAT44(puVar17,puVar5);
  puVar22 = puVar20 + 0x49870;
  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);
  uVar13 = *puVar5;
  *(undefined **)((int)piVar24 + -0xf0) = puVar22;
  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;
  *(undefined **)((int)piVar24 + -0x20) = puVar2;
  *(uint **)((int)piVar24 + -0x24) = param_3;
  *(uint **)((int)piVar24 + -0x28) = unaff_s0;
  *(undefined4 *)((int)piVar24 + -4) = uVar27;
  *(int **)((int)piVar24 + -8) = aiStack_50;
  *(uint **)((int)piVar24 + -0xc) = unaff_s7;
  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;
  *(uint **)((int)piVar24 + -0x14) = unaff_s5;
  *(uint **)((int)piVar24 + -0x18) = unaff_s4;
  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;
  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;
  if ((int)puVar11 < 3) {
    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;
    puVar14 = puVar11;
    if (puVar11 == (uint *)0x1) {
      *puVar17 = uVar13 * uVar13;
    }
    else {
      *puVar17 = (uint)lVar1;
      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);
      piVar25 = aiStack_50;
      lVar29 = lVar1;
    }
  }
  else {
    unaff_s4 = (uint *)((int)puVar11 + -1);
    pcVar21 = *(code **)(puVar20 + 0x418d4);
    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;
    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;
    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;
    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);
    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);
    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);
    iVar15 = *(int *)((int)piVar24 + -0xf0);
    piVar25 = (int *)((int)unaff_s3 + iVar12);
    if ((int)unaff_s4 < 4) {
      iVar12 = 1;
    }
    else {
      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;
      unaff_s4 = puVar5 + (int)puVar11;
      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);
      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));
      unaff_s7 = puVar5 + 2;
      puVar18 = puVar11 + -1;
      do {
        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);
        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);
        puVar18 = (uint *)((int)puVar18 + -2);
        iVar15 = *(int *)((int)piVar24 + -0xf0);
        unaff_s4 = unaff_s4 + -1;
        unaff_s6 = unaff_s6 + 8;
        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);
        unaff_s7 = unaff_s7 + 1;
      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);
      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;
    }
    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {
      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);
    }
    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);
    unaff_s5[-0x28] = (uint)piVar25;
    puVar18 = puVar17;
    puVar14 = puVar5;
    do {
      uVar13 = *puVar14;
      puVar9 = puVar18 + 2;
      puVar14 = puVar14 + 1;
      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;
      *puVar18 = (uint)lVar29;
      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);
      puVar18 = puVar9;
    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);
    if (((uint)puVar11 & 1) != 0) {
      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));
      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];
    }
    puVar14 = *(uint **)((int)piVar24 + -0xd4);
    puVar5 = *(uint **)((int)piVar24 + -0xdc);
    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);
    puVar9 = puVar17 + 1;
    puVar18 = puVar9;
    puVar11 = puVar14;
    param_4 = puVar5;
    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();
    lVar29 = CONCAT44(puVar9,puVar18);
    puVar22 = *(undefined **)((int)piVar24 + -0xf0);
  }
  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {
    return;
  }
  pcVar21 = *(code **)(puVar22 + -0x7b70);
  pcVar28 = __gmpn_toom22_mul;
  (*pcVar21)();
  iVar12 = (int)((ulonglong)lVar29 >> 0x20);
  *(uint **)((int)piVar24 + -0x128) = puVar14;
  iVar15 = (int)puVar11 >> 1;
  *(int **)((int)piVar24 + -0x108) = piVar25;
  iVar26 = (int)puVar11 - iVar15;
  *(uint **)((int)piVar24 + -0x114) = unaff_s5;
  *(uint **)((int)piVar24 + -0x124) = puVar5;
  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;
  *(uint **)((int)piVar24 + -0x118) = unaff_s4;
  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;
  *(uint **)((int)piVar24 + -0x120) = puVar17;
  *(code **)((int)piVar24 + -0x104) = pcVar28;
  puVar17 = (uint *)(iVar12 + iVar26 * 4);
  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;
  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;
  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;
  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;
  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;
  if (iVar15 == iVar26) {
    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);
    iVar8 = iVar15;
    do {
      iVar8 = iVar8 + -1;
      pcVar28 = *(code **)(pcVar21 + 0x41aa4);
      if (iVar8 < 0) goto LAB_00055eb0;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar28 = *(code **)(pcVar21 + 0x41aa4);
    if (uVar13 <= puVar5[iVar26 + 1]) {
      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)
                 ,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      *(undefined4 *)((int)piVar24 + -0x130) = 1;
      goto LAB_00055b54;
    }
LAB_00055eb0:
    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),
               iVar26);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    *(undefined4 *)((int)piVar24 + -0x130) = 0;
    if (iVar26 != iVar16) goto LAB_00055b5c;
LAB_00055ed4:
    puVar11 = param_4 + iVar26;
    puVar5 = param_4 + iVar26 + -1;
    iVar4 = iVar26;
    do {
      iVar4 = iVar4 + -1;
      pcVar21 = *(code **)(iVar8 + -0x7b2c);
      if (iVar4 < 0) goto LAB_00055f0c;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar21 = *(code **)(iVar8 + -0x7b2c);
    if (puVar5[iVar26 + 1] < uVar13) {
LAB_00055f0c:
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,param_4,puVar11,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
    }
    else {
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,puVar11,param_4,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;
    }
  }
  else {
    iVar4 = iVar15 * 4;
    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);
    if (iVar19 == 0) {
      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);
      iVar8 = iVar15;
      do {
        iVar8 = iVar8 + -1;
        if (iVar8 < 0) goto LAB_00055b2c;
        uVar13 = *puVar5;
        puVar5 = puVar5 + -1;
      } while (uVar13 == puVar5[iVar26 + 1]);
      pcVar21 = *(code **)(pcVar21 + 0x41aa4);
      if (uVar13 <= puVar5[iVar26 + 1]) {
        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),
                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);
        iVar8 = *(int *)((int)piVar24 + -0x140);
        *(undefined4 *)((int)piVar24 + -0x130) = 1;
        *(int *)(iVar12 + iVar4) = 0;
        goto LAB_00055b54;
      }
    }
    else {
LAB_00055b2c:
      pcVar21 = *(code **)(pcVar21 + 0x41aa4);
    }
    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),
                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    *(undefined4 *)((int)piVar24 + -0x130) = 0;
    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;
LAB_00055b54:
    if (iVar26 == iVar16) goto LAB_00055ed4;
LAB_00055b5c:
    puVar11 = param_4 + iVar26;
    iVar19 = iVar26 - iVar16;
    puVar5 = param_4 + iVar26 + -1;
    iVar4 = iVar19;
    do {
      uVar13 = *puVar5;
      iVar4 = iVar4 + -1;
      puVar5 = puVar5 + -1;
      if (uVar13 != 0) goto LAB_00055b90;
    } while (iVar4 != 0);
    puVar5 = param_4 + iVar16 + -1;
    iVar4 = iVar16;
    do {
      iVar4 = iVar4 + -1;
      if (iVar4 < 0) goto LAB_00055b90;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar21 = *(code **)(iVar8 + -0x7b2c);
    if (puVar5[iVar26 + 1] < uVar13) {
LAB_00055b90:
      iVar4 = 0;
      if (iVar16 != 0) {
        pcVar21 = *(code **)(iVar8 + -0x7b2c);
        *(uint **)((int)piVar24 + -300) = puVar11;
        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);
        iVar8 = *(int *)((int)piVar24 + -0x140);
        puVar11 = *(uint **)((int)piVar24 + -300);
        iVar4 = iVar16;
        if (iVar19 != 0) {
          puVar5 = param_4 + iVar16;
          if (iVar26 <= iVar16) goto LAB_00055bc8;
          puVar18 = puVar17 + iVar16;
          uVar13 = *puVar5;
          *puVar18 = uVar13 - 1;
          while (iVar4 = iVar4 + 1, uVar13 == 0) {
            puVar18 = puVar18 + 1;
            if (iVar26 == iVar4) goto LAB_00055bc8;
            uVar13 = puVar5[1];
            puVar5 = puVar5 + 1;
            *puVar18 = uVar13 - 1;
          }
        }
      }
      if ((puVar17 != param_4) && (iVar4 < iVar26)) {
        puVar18 = param_4 + iVar4;
        puVar5 = puVar17 + iVar4;
        do {
          uVar13 = *puVar18;
          puVar18 = puVar18 + 1;
          *puVar5 = uVar13;
          puVar5 = puVar5 + 1;
        } while (puVar18 != puVar11);
      }
    }
    else {
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,puVar11,param_4,iVar16);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
      puVar5 = puVar17 + iVar16;
      do {
        iVar19 = iVar19 + -1;
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      } while (iVar19 != 0);
      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;
    }
  }
LAB_00055bc8:
  *(int *)((int)piVar24 + -300) = iVar26 * 8;
  *(uint **)((int)piVar24 + -300) = puVar11;
  if (0x13 < iVar26) {
    *(int *)((int)piVar24 + -0x148) = iVar26;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    uVar27 = *(undefined4 *)((int)piVar24 + -300);
  }
  else {
    pcVar21 = *(code **)(iVar8 + -0x7bd0);
    *(int *)((int)piVar24 + -0x148) = iVar26;
    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    uVar27 = *(undefined4 *)((int)piVar24 + -300);
  }
  puVar5 = puVar17 + iVar26;
  if (iVar16 < iVar15) {
    if (iVar16 < 0x14) {
      pcVar21 = *(code **)(iVar8 + -0x7bd0);
      *(int *)((int)piVar24 + -0x148) = iVar16;
LAB_00055c5c:
      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
      iVar8 = *(int *)((int)piVar24 + -0x140);
    }
    else {
      if (iVar15 << 2 < iVar16 * 5) {
        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
        *(int *)((int)piVar24 + -0x148) = iVar16;
        goto LAB_00055ff8;
      }
      pcVar21 = *(code **)(iVar8 + -0x7c88);
      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
      *(int *)((int)piVar24 + -0x148) = iVar16;
      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
      iVar8 = *(int *)((int)piVar24 + -0x140);
    }
  }
  else {
    if (iVar15 < 0x14) {
      pcVar21 = *(code **)(iVar8 + -0x7bd0);
      *(int *)((int)piVar24 + -0x148) = iVar15;
      goto LAB_00055c5c;
    }
    *(int *)((int)piVar24 + -0x148) = iVar15;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
LAB_00055ff8:
    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  if (0x13 < iVar26) {
    *(int *)((int)piVar24 + -0x148) = iVar26;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  else {
    pcVar21 = *(code **)(iVar8 + -0x7bd0);
    *(int *)((int)piVar24 + -0x148) = iVar26;
    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);
  iVar15 = (iVar15 + iVar16) - iVar26;
  puVar11 = puVar5 + iVar26;
  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);
  iVar16 = *(int *)((int)piVar24 + -0x140);
  uVar13 = iVar12 + iVar8;
  if (iVar15 != 0) {
    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);
    iVar16 = *(int *)((int)piVar24 + -0x140);
    if (iVar12 != 0) {
      if (iVar15 < iVar26) {
        puVar18 = puVar5 + iVar15;
        uVar7 = *puVar18;
        *puVar18 = uVar7 + 1;
        if (uVar7 + 1 != 0) {
          iVar12 = *(int *)((int)piVar24 + -0x130);
          goto LAB_00055cec;
        }
        do {
          iVar15 = iVar15 + 1;
          if (iVar26 == iVar15) goto LAB_00055f98;
          uVar7 = puVar18[1];
          puVar18 = puVar18 + 1;
          *puVar18 = uVar7 + 1;
        } while (uVar7 + 1 == 0);
      }
      else {
LAB_00055f98:
        iVar8 = iVar8 + 1;
      }
    }
  }
  iVar12 = *(int *)((int)piVar24 + -0x130);
LAB_00055cec:
  if (iVar12 == 0) {
    iVar12 = (**(code **)(iVar16 + -0x7b2c))
                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);
    iVar12 = -iVar12;
  }
  else {
    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));
  }
  uVar7 = iVar12 + iVar8;
  uVar10 = uVar13 + *puVar5;
  *puVar5 = uVar10;
  if (uVar10 < uVar13) {
    do {
      uVar13 = puVar5[1] + 1;
      puVar5[1] = uVar13;
      if (uVar13 != 0) break;
      puVar5 = puVar5 + 2;
      uVar13 = *puVar5;
      *puVar5 = uVar13 + 1;
    } while (uVar13 + 1 == 0);
  }
  uVar13 = *puVar11;
  if (uVar7 < 3) {
    *puVar11 = uVar7 + uVar13;
    if (uVar7 + uVar13 < uVar7) {
      do {
        uVar13 = puVar11[1] + 1;
        puVar11[1] = uVar13;
        if (uVar13 != 0) {
          return;
        }
        puVar11 = puVar11 + 2;
        uVar13 = *puVar11;
        *puVar11 = uVar13 + 1;
      } while (uVar13 + 1 == 0);
    }
  }
  else {
    while( true ) {
      *puVar11 = uVar13 - 1;
      if (uVar13 != 0) break;
      uVar13 = puVar11[1];
      puVar11 = puVar11 + 1;
    }
  }
  return;
}


lui gp,0x5
addiu gp,gp,-0x6470
addu gp,gp,t9
addiu sp,sp,-0x50
slti v0,a2,0x28
sw s2,0x30(sp)
lw s2,-0x7b00(gp)
sw s8,0x48(sp)
or s8,sp,zero
sw ra,0x4c(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s3,0x34(sp)
sw s1,0x2c(sp)
sw s0,0x28(sp)
sw gp,0x18(sp)
lw v1,0x0(s2)
sw v1,0x24(s8)
bne v0,zero,0x00055670
_or s1,a2,zero
sll s3,a2,0x3
sw zero,0x20(s8)
sltiu v0,s3,0x7f01
or s4,a0,zero
beq v0,zero,0x00055788
_or s7,a1,zero
subu sp,sp,s3
addiu s0,sp,0x18
slti v0,s1,0x2e00
bne v0,zero,0x000555d4
_sll s5,s1,0x2
lw t9,-0x7d84(gp)
or a3,s7,zero
or a2,s1,zero
sw s1,0x10(sp)
or a1,s7,zero
jalr t9
_or a0,s0,zero
addiu a3,s1,-0x1
lw gp,0x18(s8)
addiu v0,s0,0x4
lw a2,0x0(s0)
or v1,s4,zero
addiu v1,v1,0x4
sw a2,-0x4(v1)
addiu v0,v0,0x4
addiu a3,a3,-0x1
bne a3,zero,0x00055564
_lw a2,-0x4(v0)
sll s1,s1,0x2
addu s1,s4,s1
sw a2,-0x4(s1)
lw a0,0x20(s8)
bne a0,zero,0x00055778
_lw t9,-0x7a2c(gp)
lw v1,0x24(s8)
lw v0,0x0(s2)
bne v1,v0,0x000557bc
_lw ra,0x4c(s8)
or sp,s8,zero
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
slti v0,s1,0x52
beq v0,zero,0x00055684
_addu s5,s0,s5
sra s3,s1,0x1
subu s1,s1,s3
lw t9,-0x7cac(gp)
or a1,s7,zero
sll s6,s1,0x2
or a2,s1,zero
jalr t9
_or a0,s0,zero
addu a1,s7,s6
bne s1,zero,0x00055760
_lw gp,0x18(s8)
slti v0,s3,0x28
beq v0,zero,0x0005561c
_lw t9,-0x7e0c(gp)
lw t9,-0x7f20(gp)
or a3,s3,zero
or a2,s7,zero
jalr t9
_or a0,s5,zero
addu s4,s4,s6
lw gp,0x18(s8)
li a3,0x1
or a2,s3,zero
or a1,s5,zero
lw t9,-0x7ad4(gp)
jalr t9
_or a0,s4,zero
addu a2,s0,s6
lw gp,0x18(s8)
or a3,s3,zero
or a1,s4,zero
lw t9,-0x7d0c(gp)
jalr t9
_or a0,s4,zero
b 0x00055588
_lw gp,0x18(s8)
lw t9,-0x7a98(gp)
jalr t9
_nop
b 0x00055594
_lw gp,0x18(s8)
slti v0,s1,0x70
beq v0,zero,0x0005571c
_slti v0,s1,0x204
sll s3,s1,0x1
lw t9,-0x7cac(gp)
lui v0,0x38e3
addu s3,s3,s1
ori v0,v0,0x8e39
sll s3,s3,0x2
or a1,s7,zero
subu s3,s3,s1
or a0,s0,zero
multu s3,v0
mfhi s3
srl s3,s3,0x3
subu s1,s1,s3
sll s6,s1,0x2
jalr t9
_or a2,s1,zero
addu a1,s7,s6
lw gp,0x18(s8)
lw a0,0x0(s0)
addiu v0,s0,0x4
addu a2,s0,s6
or v1,s4,zero
addiu v1,v1,0x4
sw a0,-0x4(v1)
addiu v0,v0,0x4
bne v0,a2,0x000556e8
_lw a0,-0x4(v0)
addiu v0,s6,-0x4
addu v0,s4,v0
sw a0,0x0(v0)
slti v0,s3,0x28
bne v0,zero,0x00055618
_nop
b 0x0005561c
_lw t9,-0x7e0c(gp)
bne v0,zero,0x000557a4
_lui v0,0xcccc
lui s3,0xcccc
lw t9,-0x7cac(gp)
or a1,s7,zero
ori s3,s3,0xcccd
multu s1,s3
or a0,s0,zero
mfhi s3
srl s3,s3,0x3
subu s1,s1,s3
sll s6,s1,0x2
jalr t9
_or a2,s1,zero
addu a1,s7,s6
beq s1,zero,0x00055714
_lw gp,0x18(s8)
li v1,0x1
lw a0,0x0(s0)
bne s1,v1,0x000556dc
_or v0,s4,zero
b 0x00055708
_sw a0,0x0(v0)
jalr t9
_nop
b 0x00055594
_lw gp,0x18(s8)
lw t9,-0x7d50(gp)
addiu a0,s8,0x20
jalr t9
_or a1,s3,zero
lw gp,0x18(s8)
b 0x00055528
_or s0,v0,zero
addu s3,s3,s1
ori v0,v0,0xcccd
multu s3,v0
mfhi s3
b 0x000555e4
_srl s3,s3,0x5
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
(translation_unit "void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" ( (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)) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "uint *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "uint *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "longlong lVar29;" type_identifier identifier ;) (declaration "int aiStack_50 [6];" primitive_type (array_declarator "aiStack_50 [6]" identifier [ number_literal ]) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "piVar24 = aiStack_50;" (assignment_expression "piVar24 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar23 = aiStack_50;" (assignment_expression "piVar23 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "((int)param_3 < 0x28)" ( (binary_expression "(int)param_3 < 0x28" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }" { (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();" (call_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)" ( (pointer_expression "*(code *)PTR___gmpn_sqrlo_basecase_000975a8" * (cast_expression "(code *)PTR___gmpn_sqrlo_basecase_000975a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" identifier = identifier) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "unaff_s3 = (uint *)((int)param_3 * 8);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 * 8)" identifier = (cast_expression "(uint *)((int)param_3 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 8)" ( (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" if (parenthesized_expression "(unaff_s3 < (uint *)0x7f01)" ( (binary_expression "unaff_s3 < (uint *)0x7f01" identifier < (cast_expression "(uint *)0x7f01" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }" { (expression_statement "piVar23 = aiStack_50 + (int)param_3 * -2;" (assignment_expression "piVar23 = aiStack_50 + (int)param_3 * -2" identifier = (binary_expression "aiStack_50 + (int)param_3 * -2" identifier + (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);" (assignment_expression "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8)" identifier = (cast_expression "(uint *)(&stack0xffffffc8 + (int)param_3 * -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffc8 + (int)param_3 * -8)" ( (binary_expression "&stack0xffffffc8 + (int)param_3 * -8" (pointer_expression "&stack0xffffffc8" & identifier) + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) }) (else_clause "else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" else (compound_statement "{\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" { (expression_statement "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);" (assignment_expression "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,unaff_s3)" ( (pointer_expression "&local_30" & identifier) , identifier ))))) ;) }))) (expression_statement "unaff_s5 = (uint *)((int)param_3 * 4);" (assignment_expression "unaff_s5 = (uint *)((int)param_3 * 4)" identifier = (cast_expression "(uint *)((int)param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" if (parenthesized_expression "((int)param_3 < 0x2e00)" ( (binary_expression "(int)param_3 < 0x2e00" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }" { (expression_statement "unaff_s5 = unaff_s0 + (int)param_3;" (assignment_expression "unaff_s5 = unaff_s0 + (int)param_3" identifier = (binary_expression "unaff_s0 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" if (parenthesized_expression "((int)param_3 < 0x52)" ( (binary_expression "(int)param_3 < 0x52" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }" { (expression_statement "unaff_s3 = (uint *)((int)param_3 >> 1);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 >> 1)" identifier = (cast_expression "(uint *)((int)param_3 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 >> 1)" ( (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);" statement_identifier : (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" { (labeled_statement "LAB_00055760:\n          uVar13 = *unaff_s0;" statement_identifier : (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;)) (if_statement "if (param_3 != (uint *)0x1) goto LAB_000556dc;" if (parenthesized_expression "(param_3 != (uint *)0x1)" ( (binary_expression "param_3 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000556dc;" goto statement_identifier ;)) (expression_statement "*param_1 = uVar13;" (assignment_expression "*param_1 = uVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (labeled_statement "joined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" statement_identifier : (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" if (parenthesized_expression "((int)unaff_s3 < 0x28)" ( (binary_expression "(int)unaff_s3 < 0x28" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" { (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120" identifier = (cast_expression "(code *)PTR___gmpn_mullo_basecase_00097120" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) }) (else_clause "else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" else (compound_statement "{\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" { (if_statement "if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" if (parenthesized_expression "((int)param_3 < 0x70)" ( (binary_expression "(int)param_3 < 0x70" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24)" identifier = (cast_expression "(uint *)((uint)((int)param_3 * 0xb) / 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)param_3 * 0xb) / 0x24)" ( (binary_expression "(uint)((int)param_3 * 0xb) / 0x24" (call_expression "(uint)((int)param_3 * 0xb)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_3 * 0xb)" ( (binary_expression "(int)param_3 * 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) / number_literal) )))) ;) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (labeled_statement "LAB_000556dc:\n          puVar5 = unaff_s0 + 1;" statement_identifier : (expression_statement "puVar5 = unaff_s0 + 1;" (assignment_expression "puVar5 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;)) (expression_statement "puVar11 = param_1;" (assignment_expression "puVar11 = param_1" identifier = identifier) ;) (do_statement "do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));" do (compound_statement "{\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          }" { (expression_statement "*puVar11 = uVar13;" (assignment_expression "*puVar11 = uVar13" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar18 = puVar5 + 1;" (assignment_expression "puVar18 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" identifier = identifier) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6))" ( (binary_expression "puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6)" identifier != (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) ;) (expression_statement "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;" (assignment_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13" (pointer_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4))" * (cast_expression "(uint *)((int)param_1 + (int)(unaff_s6 + -4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (int)(unaff_s6 + -4))" ( (binary_expression "(int)param_1 + (int)(unaff_s6 + -4)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s6 + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s6 + -4)" ( (binary_expression "unaff_s6 + -4" identifier + number_literal) )))) )))) = identifier) ;) (goto_statement "goto joined_r0x0005570c;" goto statement_identifier ;) })) (if_statement "if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" if (parenthesized_expression "((int)param_3 < 0x204)" ( (binary_expression "(int)param_3 < 0x204" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28)" identifier = (cast_expression "(uint *)((uint)((int)param_3 * 9) / 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)param_3 * 9) / 0x28)" ( (binary_expression "(uint)((int)param_3 * 9) / 0x28" (call_expression "(uint)((int)param_3 * 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_3 * 9)" ( (binary_expression "(int)param_3 * 9" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) / number_literal) )))) ;) (goto_statement "goto LAB_000555e4;" goto statement_identifier ;) })) (expression_statement "unaff_s3 = (uint *)((uint)param_3 / 10);" (assignment_expression "unaff_s3 = (uint *)((uint)param_3 / 10)" identifier = (cast_expression "(uint *)((uint)param_3 / 10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_3 / 10)" ( (binary_expression "(uint)param_3 / 10" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) / number_literal) )))) ;) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (param_3 != (uint *)0x0) goto LAB_00055760;" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00055760;" goto statement_identifier ;)) }))) (expression_statement "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);" (call_expression "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(unaff_s5,puVar17,param_2,unaff_s3)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "param_1 = (uint *)((int)param_1 + (int)unaff_s6);" (assignment_expression "param_1 = (uint *)((int)param_1 + (int)unaff_s6)" identifier = (cast_expression "(uint *)((int)param_1 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (int)unaff_s6)" ( (binary_expression "(int)param_1 + (int)unaff_s6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);" (call_expression "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009756c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009756c" * (cast_expression "(code *)PTR___gmpn_lshift_0009756c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,unaff_s5,unaff_s3,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);" (assignment_expression "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6)" identifier = (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) (expression_statement "param_4 = unaff_s3;" (assignment_expression "param_4 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_00097334)(param_1);" (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" { (expression_statement "*(uint **)((int)piVar23 + 0x10) = param_3;" (assignment_expression "*(uint **)((int)piVar23 + 0x10) = param_3" (pointer_expression "*(uint **)((int)piVar23 + 0x10)" * (cast_expression "(uint **)((int)piVar23 + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar23 + 0x10)" ( (binary_expression "(int)piVar23 + 0x10" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);" (call_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)" ( (pointer_expression "*(code *)PTR___gmpn_nussbaumer_mul_000972bc" * (cast_expression "(code *)PTR___gmpn_nussbaumer_mul_000972bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = (int)param_3 + -1;" (assignment_expression "iVar12 = (int)param_3 + -1" identifier = (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "puVar11 = (uint *)*unaff_s0;" (assignment_expression "puVar11 = (uint *)*unaff_s0" identifier = (cast_expression "(uint *)*unaff_s0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s0" * identifier))) ;) (expression_statement "puVar18 = param_1;" (assignment_expression "puVar18 = param_1" identifier = identifier) ;) (expression_statement "puVar17 = unaff_s0;" (assignment_expression "puVar17 = unaff_s0" identifier = identifier) ;) (do_statement "do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);" do (compound_statement "{\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      }" { (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = (uint)puVar11;" (assignment_expression "*puVar18 = (uint)puVar11" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "puVar11 = (uint *)*puVar17;" (assignment_expression "puVar11 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) (expression_statement "param_3 = param_1 + (int)param_3;" (assignment_expression "param_3 = param_1 + (int)param_3" identifier = (binary_expression "param_1 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "param_3[-1] = (uint)puVar11;" (assignment_expression "param_3[-1] = (uint)puVar11" (subscript_expression "param_3[-1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "puVar17 = local_30;" (assignment_expression "puVar17 = local_30" identifier = identifier) ;) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" identifier = identifier) ;) (expression_statement "unaff_s7 = param_2;" (assignment_expression "unaff_s7 = param_2" identifier = identifier) ;) (expression_statement "piVar24 = piVar23;" (assignment_expression "piVar24 = piVar23" identifier = identifier) ;) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (uint *)0x0)" ( (binary_expression "local_30 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar27 = 0x557c8;" (assignment_expression "uVar27 = 0x557c8" identifier = number_literal) ;) (expression_statement "puVar20 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar20 = 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 "lVar29 = CONCAT44(puVar17,puVar5);" (assignment_expression "lVar29 = CONCAT44(puVar17,puVar5)" identifier = (call_expression "CONCAT44(puVar17,puVar5)" identifier (argument_list "(puVar17,puVar5)" ( identifier , identifier )))) ;) (expression_statement "puVar22 = puVar20 + 0x49870;" (assignment_expression "puVar22 = puVar20 + 0x49870" identifier = (binary_expression "puVar20 + 0x49870" identifier + number_literal)) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + 0x41d70);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + 0x41d70)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + 0x41d70)" * (cast_expression "(undefined4 **)(puVar20 + 0x41d70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x41d70)" ( (binary_expression "puVar20 + 0x41d70" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*(undefined **)((int)piVar24 + -0xf0) = puVar22;" (assignment_expression "*(undefined **)((int)piVar24 + -0xf0) = puVar22" (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" * (cast_expression "(undefined **)((int)piVar24 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3;" (assignment_expression "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3" (pointer_expression "*(undefined4 **)((int)piVar24 + -0xe0)" * (cast_expression "(undefined4 **)((int)piVar24 + -0xe0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe0)" ( (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)piVar24 + -0x20) = puVar2;" (assignment_expression "*(undefined **)((int)piVar24 + -0x20) = puVar2" (pointer_expression "*(undefined **)((int)piVar24 + -0x20)" * (cast_expression "(undefined **)((int)piVar24 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x20)" ( (binary_expression "(int)piVar24 + -0x20" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x24) = param_3;" (assignment_expression "*(uint **)((int)piVar24 + -0x24) = param_3" (pointer_expression "*(uint **)((int)piVar24 + -0x24)" * (cast_expression "(uint **)((int)piVar24 + -0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x24)" ( (binary_expression "(int)piVar24 + -0x24" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)((int)piVar24 + -0x28) = unaff_s0" (pointer_expression "*(uint **)((int)piVar24 + -0x28)" * (cast_expression "(uint **)((int)piVar24 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x28)" ( (binary_expression "(int)piVar24 + -0x28" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -4) = uVar27;" (assignment_expression "*(undefined4 *)((int)piVar24 + -4) = uVar27" (pointer_expression "*(undefined4 *)((int)piVar24 + -4)" * (cast_expression "(undefined4 *)((int)piVar24 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -4)" ( (binary_expression "(int)piVar24 + -4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)piVar24 + -8) = aiStack_50;" (assignment_expression "*(int **)((int)piVar24 + -8) = aiStack_50" (pointer_expression "*(int **)((int)piVar24 + -8)" * (cast_expression "(int **)((int)piVar24 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -8)" ( (binary_expression "(int)piVar24 + -8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0xc) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0xc) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0xc)" * (cast_expression "(uint **)((int)piVar24 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xc)" ( (binary_expression "(int)piVar24 + -0xc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar24 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x10)" ( (binary_expression "(int)piVar24 + -0x10" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x14) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x14) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x14)" * (cast_expression "(uint **)((int)piVar24 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x14)" ( (binary_expression "(int)piVar24 + -0x14" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x18) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x18) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x18)" * (cast_expression "(uint **)((int)piVar24 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x18)" ( (binary_expression "(int)piVar24 + -0x18" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x1c)" * (cast_expression "(uint **)((int)piVar24 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x1c)" ( (binary_expression "(int)piVar24 + -0x1c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x2c)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x2c)" ( (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (if_statement "if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" if (parenthesized_expression "((int)puVar11 < 3)" ( (binary_expression "(int)puVar11 < 3" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }" { (expression_statement "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "puVar14 = puVar11;" (assignment_expression "puVar14 = puVar11" identifier = identifier) ;) (if_statement "if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" if (parenthesized_expression "(puVar11 == (uint *)0x1)" ( (binary_expression "puVar11 == (uint *)0x1" identifier == (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar17 = uVar13 * uVar13;\n    }" { (expression_statement "*puVar17 = uVar13 * uVar13;" (assignment_expression "*puVar17 = uVar13 * uVar13" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar13 * uVar13" identifier * identifier)) ;) }) (else_clause "else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" else (compound_statement "{\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" { (expression_statement "*puVar17 = (uint)lVar1;" (assignment_expression "*puVar17 = (uint)lVar1" (pointer_expression "*puVar17" * identifier) = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (binary_expression "uVar13 * puVar5[1] * 2" (binary_expression "uVar13 * puVar5[1]" identifier * (subscript_expression "puVar5[1]" identifier [ number_literal ])) * number_literal) + (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" identifier = identifier) ;) (expression_statement "lVar29 = lVar1;" (assignment_expression "lVar29 = lVar1" identifier = identifier) ;) }))) }) (else_clause "else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" else (compound_statement "{\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" { (expression_statement "unaff_s4 = (uint *)((int)puVar11 + -1);" (assignment_expression "unaff_s4 = (uint *)((int)puVar11 + -1)" identifier = (cast_expression "(uint *)((int)puVar11 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + -1)" ( (binary_expression "(int)puVar11 + -1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pcVar21 = *(code **)(puVar20 + 0x418d4);" (assignment_expression "pcVar21 = *(code **)(puVar20 + 0x418d4)" identifier = (pointer_expression "*(code **)(puVar20 + 0x418d4)" * (cast_expression "(code **)(puVar20 + 0x418d4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x418d4)" ( (binary_expression "puVar20 + 0x418d4" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)((int)piVar24 + -0xdc) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0xdc) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" * (cast_expression "(uint **)((int)piVar24 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;" (assignment_expression "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" * (cast_expression "(int *)((int)piVar24 + -0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd8)" ( (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4" (pointer_expression "*(int *)((int)piVar24 + -0xcc)" * (cast_expression "(int *)((int)piVar24 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xcc)" ( (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)unaff_s4 * 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);" (assignment_expression "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200)" (pointer_expression "*(undefined1 **)((int)piVar24 + -0xd4)" * (cast_expression "(undefined1 **)((int)piVar24 + -0xd4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xd4)" ( (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1 *)((int)piVar24 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -200)" ( (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);" (assignment_expression "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4])" identifier = (cast_expression "(uint *)(uVar13 * puVar5[(int)unaff_s4])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 * puVar5[(int)unaff_s4])" ( (binary_expression "uVar13 * puVar5[(int)unaff_s4]" identifier * (subscript_expression "puVar5[(int)unaff_s4]" identifier [ (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);" (assignment_expression "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" identifier = (call_expression "(*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" ( (cast_expression "(undefined1 *)((int)piVar24 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -200)" ( (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (binary_expression "puVar5 + 1" identifier + number_literal) , (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar25 = (int *)((int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)unaff_s3 + iVar12)" identifier = (cast_expression "(int *)((int)unaff_s3 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + iVar12)" ( (binary_expression "(int)unaff_s3 + iVar12" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" if (parenthesized_expression "((int)unaff_s4 < 4)" ( (binary_expression "(int)unaff_s4 < 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar12 = 1;\n    }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" else (compound_statement "{\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" { (expression_statement "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;" (assignment_expression "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" * (cast_expression "(uint *)((int)piVar24 + -0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd0)" ( (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "unaff_s4 = puVar5 + (int)puVar11;" (assignment_expression "unaff_s4 = puVar5 + (int)puVar11" identifier = (binary_expression "puVar5 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);" (assignment_expression "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0)" identifier = (cast_expression "(undefined1 *)((int)piVar24 + -0xc0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xc0)" ( (binary_expression "(int)piVar24 + -0xc0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));" (assignment_expression "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (pointer_expression "*(uint *)((int)piVar24 + -0xe4)" * (cast_expression "(uint *)((int)piVar24 + -0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xe4)" ( (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-6 - ((int)puVar11 - 5U & 0xfffffffe))" ( (binary_expression "-6 - ((int)puVar11 - 5U & 0xfffffffe)" number_literal - (parenthesized_expression "((int)puVar11 - 5U & 0xfffffffe)" ( (binary_expression "(int)puVar11 - 5U & 0xfffffffe" (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) ))) )))) ;) (expression_statement "unaff_s7 = puVar5 + 2;" (assignment_expression "unaff_s7 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar11 + -1;" (assignment_expression "puVar18 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (do_statement "do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);" do (compound_statement "{\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      }" { (expression_statement "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);" (assignment_expression "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2])" identifier = (cast_expression "(uint *)(unaff_s7[-1] * unaff_s4[-2])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7[-1] * unaff_s4[-2])" ( (binary_expression "unaff_s7[-1] * unaff_s4[-2]" (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) * (subscript_expression "unaff_s4[-2]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);" (assignment_expression "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" identifier = (call_expression "(**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" (parenthesized_expression "(**(code **)(iVar15 + -0x7f70))" ( (pointer_expression "**(code **)(iVar15 + -0x7f70)" * (pointer_expression "*(code **)(iVar15 + -0x7f70)" * (cast_expression "(code **)(iVar15 + -0x7f70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7f70)" ( (binary_expression "iVar15 + -0x7f70" identifier + number_literal) ))))) )) (argument_list "(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" ( identifier , identifier , identifier , (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -2);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -2)" identifier = (cast_expression "(uint *)((int)puVar18 + -2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -2)" ( (binary_expression "(int)puVar18 + -2" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" identifier = (binary_expression "unaff_s4 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = unaff_s6 + 8;" (assignment_expression "unaff_s6 = unaff_s6 + 8" identifier = (binary_expression "unaff_s6 + 8" identifier + number_literal)) ;) (expression_statement "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12)" identifier = (cast_expression "(int *)((int)piVar25 + (int)unaff_s3 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar25 + (int)unaff_s3 + iVar12)" ( (binary_expression "(int)piVar25 + (int)unaff_s3 + iVar12" (binary_expression "(int)piVar25 + (int)unaff_s3" (cast_expression "(int)piVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) )))) ;) (expression_statement "unaff_s7 = unaff_s7 + 1;" (assignment_expression "unaff_s7 = unaff_s7 + 1" identifier = (binary_expression "unaff_s7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)((int)piVar24 + -0xe4) != puVar18)" ( (binary_expression "*(uint **)((int)piVar24 + -0xe4) != puVar18" (pointer_expression "*(uint **)((int)piVar24 + -0xe4)" * (cast_expression "(uint **)((int)piVar24 + -0xe4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe4)" ( (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) )) ;) (expression_statement "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;" (assignment_expression "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" identifier = (binary_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1)" ( (binary_expression "*(uint *)((int)piVar24 + -0xd0) >> 1" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" * (cast_expression "(uint *)((int)piVar24 + -0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd0)" ( (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) )) + number_literal)) ;) }))) (if_statement "if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" if (parenthesized_expression "((*(uint *)((int)piVar24 + -0xdc) & 1) != 0)" ( (binary_expression "(*(uint *)((int)piVar24 + -0xdc) & 1) != 0" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xdc) & 1)" ( (binary_expression "*(uint *)((int)piVar24 + -0xdc) & 1" (pointer_expression "*(uint *)((int)piVar24 + -0xdc)" * (cast_expression "(uint *)((int)piVar24 + -0xdc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" { (expression_statement "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);" (assignment_expression "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" identifier = (cast_expression "(int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" ( (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25" (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12]" (subscript_expression "(puVar5 + iVar12)[1]" (parenthesized_expression "(puVar5 + iVar12)" ( (binary_expression "puVar5 + iVar12" identifier + identifier) )) [ number_literal ]) * (subscript_expression "puVar5[iVar12]" identifier [ identifier ])) + (cast_expression "(int)piVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);" (assignment_expression "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" identifier = (cast_expression "(uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" ( (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28" (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "*(int *)((int)piVar24 + -0xd8) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" * (cast_expression "(int *)((int)piVar24 + -0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd8)" ( (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "unaff_s5[-0x28] = (uint)piVar25;" (assignment_expression "unaff_s5[-0x28] = (uint)piVar25" (subscript_expression "unaff_s5[-0x28]" identifier [ number_literal ]) = (cast_expression "(uint)piVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) (expression_statement "puVar14 = puVar5;" (assignment_expression "puVar14 = puVar5" identifier = identifier) ;) (do_statement "do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);" do (compound_statement "{\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    }" { (expression_statement "uVar13 = *puVar14;" (assignment_expression "uVar13 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar9 = puVar18 + 2;" (assignment_expression "puVar9 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "*puVar18 = (uint)lVar29;" (assignment_expression "*puVar18 = (uint)lVar29" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)lVar29" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);" (assignment_expression "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20)" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (call_expression "(uint)((ulonglong)lVar29 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar29 >> 0x20)" ( (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 + ((int)puVar11 >> 1) * 2 != puVar9)" ( (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2 != puVar9" (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2" identifier + (binary_expression "((int)puVar11 >> 1) * 2" (parenthesized_expression "((int)puVar11 >> 1)" ( (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) != identifier) )) ;) (if_statement "if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" if (parenthesized_expression "(((uint)puVar11 & 1) != 0)" ( (binary_expression "((uint)puVar11 & 1) != 0" (parenthesized_expression "((uint)puVar11 & 1)" ( (binary_expression "(uint)puVar11 & 1" (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" { (expression_statement "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));" (assignment_expression "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" identifier = (cast_expression "(int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" ( (binary_expression "(int)puVar17 + *(int *)((int)piVar24 + -0xcc)" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)((int)piVar24 + -0xcc)" * (cast_expression "(int *)((int)piVar24 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xcc)" ( (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) (expression_statement "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];" (assignment_expression "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (pointer_expression "*piVar25" * identifier) = (binary_expression "puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (subscript_expression "puVar5[(int)puVar11 >> 1]" identifier [ (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) * (subscript_expression "puVar5[(int)puVar11 >> 1]" identifier [ (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]))) ;) })) (expression_statement "puVar14 = *(uint **)((int)piVar24 + -0xd4);" (assignment_expression "puVar14 = *(uint **)((int)piVar24 + -0xd4)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -0xd4)" * (cast_expression "(uint **)((int)piVar24 + -0xd4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xd4)" ( (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = *(uint **)((int)piVar24 + -0xdc);" (assignment_expression "puVar5 = *(uint **)((int)piVar24 + -0xdc)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" * (cast_expression "(uint **)((int)piVar24 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);" (call_expression "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar15 + -0x7ad4)" * (pointer_expression "*(code **)(iVar15 + -0x7ad4)" * (cast_expression "(code **)(iVar15 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ad4)" ( (binary_expression "iVar15 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar14,puVar14,puVar5,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = puVar17 + 1;" (assignment_expression "puVar9 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = puVar14;" (assignment_expression "puVar11 = puVar14" identifier = identifier) ;) (expression_statement "param_4 = puVar5;" (assignment_expression "param_4 = puVar5" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();" (call_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))()" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar24 + -0xf0) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "lVar29 = CONCAT44(puVar9,puVar18);" (assignment_expression "lVar29 = CONCAT44(puVar9,puVar18)" identifier = (call_expression "CONCAT44(puVar9,puVar18)" identifier (argument_list "(puVar9,puVar18)" ( identifier , identifier )))) ;) (expression_statement "puVar22 = *(undefined **)((int)piVar24 + -0xf0);" (assignment_expression "puVar22 = *(undefined **)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" * (cast_expression "(undefined **)((int)piVar24 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0))" ( (binary_expression "*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)" (pointer_expression "*(int *)((int)piVar24 + -0x2c)" * (cast_expression "(int *)((int)piVar24 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x2c)" ( (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "**(int **)((int)piVar24 + -0xe0)" * (pointer_expression "*(int **)((int)piVar24 + -0xe0)" * (cast_expression "(int **)((int)piVar24 + -0xe0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe0)" ( (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar21 = *(code **)(puVar22 + -0x7b70);" (assignment_expression "pcVar21 = *(code **)(puVar22 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar22 + -0x7b70)" * (cast_expression "(code **)(puVar22 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x7b70)" ( (binary_expression "puVar22 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar28 = __gmpn_toom22_mul;" (assignment_expression "pcVar28 = __gmpn_toom22_mul" identifier = identifier) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar29 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar29 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar29 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar29 >> 0x20)" ( (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(uint **)((int)piVar24 + -0x128) = puVar14;" (assignment_expression "*(uint **)((int)piVar24 + -0x128) = puVar14" (pointer_expression "*(uint **)((int)piVar24 + -0x128)" * (cast_expression "(uint **)((int)piVar24 + -0x128)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x128)" ( (binary_expression "(int)piVar24 + -0x128" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = (int)puVar11 >> 1;" (assignment_expression "iVar15 = (int)puVar11 >> 1" identifier = (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "*(int **)((int)piVar24 + -0x108) = piVar25;" (assignment_expression "*(int **)((int)piVar24 + -0x108) = piVar25" (pointer_expression "*(int **)((int)piVar24 + -0x108)" * (cast_expression "(int **)((int)piVar24 + -0x108)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x108)" ( (binary_expression "(int)piVar24 + -0x108" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar26 = (int)puVar11 - iVar15;" (assignment_expression "iVar26 = (int)puVar11 - iVar15" identifier = (binary_expression "(int)puVar11 - iVar15" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "*(uint **)((int)piVar24 + -0x114) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x114) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x114)" * (cast_expression "(uint **)((int)piVar24 + -0x114)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x114)" ( (binary_expression "(int)piVar24 + -0x114" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x124) = puVar5;" (assignment_expression "*(uint **)((int)piVar24 + -0x124) = puVar5" (pointer_expression "*(uint **)((int)piVar24 + -0x124)" * (cast_expression "(uint **)((int)piVar24 + -0x124)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x124)" ( (binary_expression "(int)piVar24 + -0x124" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;" (assignment_expression "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0" (pointer_expression "*(code **)((int)piVar24 + -0x140)" * (cast_expression "(code **)((int)piVar24 + -0x140)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "pcVar21 + 0x495d0" identifier + number_literal)) ;) (expression_statement "*(uint **)((int)piVar24 + -0x118) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x118) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x118)" * (cast_expression "(uint **)((int)piVar24 + -0x118)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x118)" ( (binary_expression "(int)piVar24 + -0x118" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x11c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x11c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x11c)" * (cast_expression "(uint **)((int)piVar24 + -0x11c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x11c)" ( (binary_expression "(int)piVar24 + -0x11c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x120) = puVar17;" (assignment_expression "*(uint **)((int)piVar24 + -0x120) = puVar17" (pointer_expression "*(uint **)((int)piVar24 + -0x120)" * (cast_expression "(uint **)((int)piVar24 + -0x120)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x120)" ( (binary_expression "(int)piVar24 + -0x120" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar24 + -0x104) = pcVar28;" (assignment_expression "*(code **)((int)piVar24 + -0x104) = pcVar28" (pointer_expression "*(code **)((int)piVar24 + -0x104)" * (cast_expression "(code **)((int)piVar24 + -0x104)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x104)" ( (binary_expression "(int)piVar24 + -0x104" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar17 = (uint *)(iVar12 + iVar26 * 4);" (assignment_expression "puVar17 = (uint *)(iVar12 + iVar26 * 4)" identifier = (cast_expression "(uint *)(iVar12 + iVar26 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar26 * 4)" ( (binary_expression "iVar12 + iVar26 * 4" identifier + (binary_expression "iVar26 * 4" identifier * number_literal)) )))) ;) (expression_statement "*(uint **)((int)piVar24 + -0x10c) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0x10c) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0x10c)" * (cast_expression "(uint **)((int)piVar24 + -0x10c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x10c)" ( (binary_expression "(int)piVar24 + -0x10c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x110)" * (cast_expression "(undefined1 **)((int)piVar24 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x110)" ( (binary_expression "(int)piVar24 + -0x110" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0xfc) = (int)lVar29;" (assignment_expression "*(int *)((int)piVar24 + -0xfc) = (int)lVar29" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int)lVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4" (pointer_expression "*(int *)((int)piVar24 + -0x134)" * (cast_expression "(int *)((int)piVar24 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)lVar29 + iVar26 * 4" (cast_expression "(int)lVar29" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar26 * 4" identifier * number_literal))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26" identifier = (binary_expression "*(int *)((int)piVar24 + -0xf0) - iVar26" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - identifier)) ;) (if_statement "if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" if (parenthesized_expression "(iVar15 == iVar26)" ( (binary_expression "iVar15 == iVar26" identifier == identifier) )) (compound_statement "{\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "(iVar15 + -1) * 4" (parenthesized_expression "(iVar15 + -1)" ( (binary_expression "iVar15 + -1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" identifier = identifier) ;) (do_statement "do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < 0) goto LAB_00055eb0;" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055eb0;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" if (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" ( (binary_expression "uVar13 <= puVar5[iVar26 + 1]" identifier <= (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) (compound_statement "{\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" { (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) (labeled_statement "LAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" statement_identifier : (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar26 != iVar16) goto LAB_00055b5c;" if (parenthesized_expression "(iVar26 != iVar16)" ( (binary_expression "iVar26 != iVar16" identifier != identifier) )) (goto_statement "goto LAB_00055b5c;" goto statement_identifier ;)) (labeled_statement "LAB_00055ed4:\n    puVar11 = param_4 + iVar26;" statement_identifier : (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" identifier = (binary_expression "param_4 + iVar26" identifier + identifier)) ;)) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" identifier = (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar26;" (assignment_expression "iVar4 = iVar26" identifier = identifier) ;) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < 0) goto LAB_00055f0c;" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055f0c;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" ( (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }" { (labeled_statement "LAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;" statement_identifier : (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "(*pcVar21)(puVar17,param_4,puVar11,iVar26);" (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar26)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,param_4,puVar11,iVar26)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" { (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar26);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar26)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,puVar11,param_4,iVar26)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }) (else_clause "else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" else (compound_statement "{\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "iVar4 = iVar15 * 4;" (assignment_expression "iVar4 = iVar15 * 4" identifier = (binary_expression "iVar15 * 4" identifier * number_literal)) ;) (expression_statement "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);" (assignment_expression "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" identifier = (pointer_expression "*(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" * (cast_expression "(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + identifier) ))))) ;) (if_statement "if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4 + -4" (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + identifier) + number_literal) )))) ;) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" identifier = identifier) ;) (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (if_statement "if (iVar8 < 0) goto LAB_00055b2c;" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b2c;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" if (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" ( (binary_expression "uVar13 <= puVar5[iVar26 + 1]" identifier <= (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) (compound_statement "{\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" { (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar12 + iVar4) = 0;" (assignment_expression "*(int *)(iVar12 + iVar4) = 0" (pointer_expression "*(int *)(iVar12 + iVar4)" * (cast_expression "(int *)(iVar12 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar4)" ( (binary_expression "iVar12 + iVar4" identifier + identifier) )))) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" else (compound_statement "{\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" { (labeled_statement "LAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);" statement_identifier : (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;)) }))) (expression_statement "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);" (assignment_expression "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" identifier = (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier )))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar12 + iVar4) = iVar19 - iVar6;" (assignment_expression "*(int *)(iVar12 + iVar4) = iVar19 - iVar6" (pointer_expression "*(int *)(iVar12 + iVar4)" * (cast_expression "(int *)(iVar12 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar4)" ( (binary_expression "iVar12 + iVar4" identifier + identifier) )))) = (binary_expression "iVar19 - iVar6" identifier - identifier)) ;) (labeled_statement "LAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;" statement_identifier : (if_statement "if (iVar26 == iVar16) goto LAB_00055ed4;" if (parenthesized_expression "(iVar26 == iVar16)" ( (binary_expression "iVar26 == iVar16" identifier == identifier) )) (goto_statement "goto LAB_00055ed4;" goto statement_identifier ;))) (labeled_statement "LAB_00055b5c:\n    puVar11 = param_4 + iVar26;" statement_identifier : (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" identifier = (binary_expression "param_4 + iVar26" identifier + identifier)) ;)) (expression_statement "iVar19 = iVar26 - iVar16;" (assignment_expression "iVar19 = iVar26 - iVar16" identifier = (binary_expression "iVar26 - iVar16" identifier - identifier)) ;) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" identifier = (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar19;" (assignment_expression "iVar4 = iVar19" identifier = identifier) ;) (do_statement "do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);" do (compound_statement "{\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    }" { (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) (if_statement "if (uVar13 != 0) goto LAB_00055b90;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar5 = param_4 + iVar16 + -1;" (assignment_expression "puVar5 = param_4 + iVar16 + -1" identifier = (binary_expression "param_4 + iVar16 + -1" (binary_expression "param_4 + iVar16" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" identifier = identifier) ;) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 < 0) goto LAB_00055b90;" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" ( (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }" { (labeled_statement "LAB_00055b90:\n      iVar4 = 0;" statement_identifier : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;)) (if_statement "if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);" (assignment_expression "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16)" identifier = (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar16)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,param_4,puVar11,iVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" { (expression_statement "puVar5 = param_4 + iVar16;" (assignment_expression "puVar5 = param_4 + iVar16" identifier = (binary_expression "param_4 + iVar16" identifier + identifier)) ;) (if_statement "if (iVar26 <= iVar16) goto LAB_00055bc8;" if (parenthesized_expression "(iVar26 <= iVar16)" ( (binary_expression "iVar26 <= iVar16" identifier <= identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar17 + iVar16;" (assignment_expression "puVar18 = puVar17 + iVar16" identifier = (binary_expression "puVar17 + iVar16" identifier + identifier)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (while_statement "while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" while (parenthesized_expression "(iVar4 = iVar4 + 1, uVar13 == 0)" ( (comma_expression "iVar4 = iVar4 + 1, uVar13 == 0" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) , (binary_expression "uVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (if_statement "if (iVar26 == iVar4) goto LAB_00055bc8;" if (parenthesized_expression "(iVar26 == iVar4)" ( (binary_expression "iVar26 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "uVar13 = puVar5[1];" (assignment_expression "uVar13 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) })) })) })) (if_statement "if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" if (parenthesized_expression "((puVar17 != param_4) && (iVar4 < iVar26))" ( (binary_expression "(puVar17 != param_4) && (iVar4 < iVar26)" (parenthesized_expression "(puVar17 != param_4)" ( (binary_expression "puVar17 != param_4" identifier != identifier) )) && (parenthesized_expression "(iVar4 < iVar26)" ( (binary_expression "iVar4 < iVar26" identifier < identifier) ))) )) (compound_statement "{\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" { (expression_statement "puVar18 = param_4 + iVar4;" (assignment_expression "puVar18 = param_4 + iVar4" identifier = (binary_expression "param_4 + iVar4" identifier + identifier)) ;) (expression_statement "puVar5 = puVar17 + iVar4;" (assignment_expression "puVar5 = puVar17 + iVar4" identifier = (binary_expression "puVar17 + iVar4" identifier + identifier)) ;) (do_statement "do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);" do (compound_statement "{\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        }" { (expression_statement "uVar13 = *puVar18;" (assignment_expression "uVar13 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar13;" (assignment_expression "*puVar5 = uVar13" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != puVar11)" ( (binary_expression "puVar18 != puVar11" identifier != identifier) )) ;) })) }) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" { (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar16);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar16)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,puVar11,param_4,iVar16)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = puVar17 + iVar16;" (assignment_expression "puVar5 = puVar17 + iVar16" identifier = (binary_expression "puVar17 + iVar16" identifier + identifier)) ;) (do_statement "do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);" do (compound_statement "{\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }))) (labeled_statement "LAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;" statement_identifier : (expression_statement "*(int *)((int)piVar24 + -300) = iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -300) = iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -300)" * (cast_expression "(int *)((int)piVar24 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar26 * 8" identifier * number_literal)) ;)) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" if (parenthesized_expression "(0x13 < iVar26)" ( (binary_expression "0x13 < iVar26" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" { (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" identifier (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" ( (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" identifier = (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" * (cast_expression "(undefined4 *)((int)piVar24 + -300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" else (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" ( (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" identifier = (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" * (cast_expression "(undefined4 *)((int)piVar24 + -300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "puVar5 = puVar17 + iVar26;" (assignment_expression "puVar5 = puVar17 + iVar26" identifier = (binary_expression "puVar17 + iVar26" identifier + identifier)) ;) (if_statement "if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" if (parenthesized_expression "(iVar16 < iVar15)" ( (binary_expression "iVar16 < iVar15" identifier < identifier) )) (compound_statement "{\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }" { (if_statement "if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" if (parenthesized_expression "(iVar16 < 0x14)" ( (binary_expression "iVar16 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" statement_identifier : (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" else (compound_statement "{\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" { (if_statement "if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" if (parenthesized_expression "(iVar15 << 2 < iVar16 * 5)" ( (binary_expression "iVar15 << 2 < iVar16 * 5" (binary_expression "iVar15 << 2" identifier << number_literal) < (binary_expression "iVar16 * 5" identifier * number_literal)) )) (compound_statement "{\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" { (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055ff8;" goto statement_identifier ;) })) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7c88);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7c88)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7c88)" * (cast_expression "(code **)(iVar8 + -0x7c88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7c88)" ( (binary_expression "iVar8 + -0x7c88" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" else (compound_statement "{\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (if_statement "if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" if (parenthesized_expression "(iVar15 < 0x14)" ( (binary_expression "iVar15 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (labeled_statement "LAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" statement_identifier : (expression_statement "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" identifier (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" if (parenthesized_expression "(0x13 < iVar26)" ( (binary_expression "0x13 < iVar26" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" identifier (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" else (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);" (assignment_expression "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" identifier = (call_expression "(**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" (parenthesized_expression "(**(code **)(iVar8 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar8 + -0x7d0c)" * (pointer_expression "*(code **)(iVar8 + -0x7d0c)" * (cast_expression "(code **)(iVar8 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7d0c)" ( (binary_expression "iVar8 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar5,puVar17,puVar5,iVar26)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = (iVar15 + iVar16) - iVar26;" (assignment_expression "iVar15 = (iVar15 + iVar16) - iVar26" identifier = (binary_expression "(iVar15 + iVar16) - iVar26" (parenthesized_expression "(iVar15 + iVar16)" ( (binary_expression "iVar15 + iVar16" identifier + identifier) )) - identifier)) ;) (expression_statement "puVar11 = puVar5 + iVar26;" (assignment_expression "puVar11 = puVar5 + iVar26" identifier = (binary_expression "puVar5 + iVar26" identifier + identifier)) ;) (expression_statement "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);" (assignment_expression "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" identifier = (call_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar24 + -0x140) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar17,puVar5,iVar12,iVar26)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar13 = iVar12 + iVar8;" (assignment_expression "uVar13 = iVar12 + iVar8" identifier = (binary_expression "iVar12 + iVar8" identifier + identifier)) ;) (if_statement "if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" identifier = (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar16 + -0x7d0c)" * (pointer_expression "*(code **)(iVar16 + -0x7d0c)" * (cast_expression "(code **)(iVar16 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7d0c)" ( (binary_expression "iVar16 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar5,puVar5,puVar11,iVar15)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar15 < iVar26)" ( (binary_expression "iVar15 < iVar26" identifier < identifier) )) (compound_statement "{\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }" { (expression_statement "puVar18 = puVar5 + iVar15;" (assignment_expression "puVar18 = puVar5 + iVar15" identifier = (binary_expression "puVar5 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = *puVar18;" (assignment_expression "uVar7 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" if (parenthesized_expression "(uVar7 + 1 != 0)" ( (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" { (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x130)" * (cast_expression "(int *)((int)piVar24 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00055cec;" goto statement_identifier ;) })) (do_statement "do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);" do (compound_statement "{\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        }" { (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (iVar26 == iVar15) goto LAB_00055f98;" if (parenthesized_expression "(iVar26 == iVar15)" ( (binary_expression "iVar26 == iVar15" identifier == identifier) )) (goto_statement "goto LAB_00055f98;" goto statement_identifier ;)) (expression_statement "uVar7 = puVar18[1];" (assignment_expression "uVar7 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 + 1 == 0)" ( (binary_expression "uVar7 + 1 == 0" (binary_expression "uVar7 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" { (labeled_statement "LAB_00055f98:\n        iVar8 = iVar8 + 1;" statement_identifier : (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;)) }))) })) })) (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x130)" * (cast_expression "(int *)((int)piVar24 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" statement_identifier : (if_statement "if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" identifier = (call_expression "(**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" (parenthesized_expression "(**(code **)(iVar16 + -0x7b2c))" ( (pointer_expression "**(code **)(iVar16 + -0x7b2c)" * (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) ))))) )) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "iVar26 * 2" identifier * number_literal) )))) ;) (expression_statement "iVar12 = -iVar12;" (assignment_expression "iVar12 = -iVar12" identifier = (unary_expression "-iVar12" - identifier)) ;) }) (else_clause "else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" else (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" identifier = (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar16 + -0x7d0c)" * (pointer_expression "*(code **)(iVar16 + -0x7d0c)" * (cast_expression "(code **)(iVar16 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7d0c)" ( (binary_expression "iVar16 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })))) (expression_statement "uVar7 = iVar12 + iVar8;" (assignment_expression "uVar7 = iVar12 + iVar8" identifier = (binary_expression "iVar12 + iVar8" identifier + identifier)) ;) (expression_statement "uVar10 = uVar13 + *puVar5;" (assignment_expression "uVar10 = uVar13 + *puVar5" identifier = (binary_expression "uVar13 + *puVar5" identifier + (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "*puVar5 = uVar10;" (assignment_expression "*puVar5 = uVar10" (pointer_expression "*puVar5" * identifier) = identifier) ;) (if_statement "if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" if (parenthesized_expression "(uVar10 < uVar13)" ( (binary_expression "uVar10 < uVar13" identifier < identifier) )) (compound_statement "{\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" { (do_statement "do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);" do (compound_statement "{\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    }" { (expression_statement "uVar13 = puVar5[1] + 1;" (assignment_expression "uVar13 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar13;" (assignment_expression "puVar5[1] = uVar13" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar13 != 0) break;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar13 + 1;" (assignment_expression "*puVar5 = uVar13 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 + 1 == 0)" ( (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" identifier + number_literal) == number_literal) )) ;) })) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (if_statement "if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" if (parenthesized_expression "(uVar7 < 3)" ( (binary_expression "uVar7 < 3" identifier < number_literal) )) (compound_statement "{\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }" { (expression_statement "*puVar11 = uVar7 + uVar13;" (assignment_expression "*puVar11 = uVar7 + uVar13" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar7 + uVar13" identifier + identifier)) ;) (if_statement "if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" if (parenthesized_expression "(uVar7 + uVar13 < uVar7)" ( (binary_expression "uVar7 + uVar13 < uVar7" (binary_expression "uVar7 + uVar13" identifier + identifier) < identifier) )) (compound_statement "{\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" { (do_statement "do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);" do (compound_statement "{\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      }" { (expression_statement "uVar13 = puVar11[1] + 1;" (assignment_expression "uVar13 = puVar11[1] + 1" identifier = (binary_expression "puVar11[1] + 1" (subscript_expression "puVar11[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar11[1] = uVar13;" (assignment_expression "puVar11[1] = uVar13" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar13 != 0) {\n          return;\n        }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*puVar11 = uVar13 + 1;" (assignment_expression "*puVar11 = uVar13 + 1" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 + 1 == 0)" ( (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" identifier + number_literal) == number_literal) )) ;) })) }) (else_clause "else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" else (compound_statement "{\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" { (expression_statement "*puVar11 = uVar13 - 1;" (assignment_expression "*puVar11 = uVar13 - 1" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if (uVar13 != 0) break;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = puVar11[1];" (assignment_expression "uVar13 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit "void __gmpn_sqrlo(mp_ptr rp,mp_srcptr xp,mp_size_t n)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  mp_limb_t *pmVar3;\n  undefined4 *puVar4;\n  uint *puVar5;\n  int iVar6;\n  mp_limb_t *pmVar7;\n  uint uVar8;\n  mp_ptr pmVar9;\n  int iVar10;\n  tmp_reentrant_t *ptVar11;\n  tmp_reentrant_t *ptVar12;\n  tmp_reentrant_t *ptVar13;\n  size_t *psVar14;\n  mp_limb_t mVar15;\n  uint uVar16;\n  mp_srcptr pmVar17;\n  uint *puVar18;\n  size_t *psVar19;\n  undefined1 *puVar20;\n  uint *in_a3;\n  int iVar21;\n  uint uVar22;\n  mp_srcptr pmVar23;\n  mp_srcptr pmVar24;\n  mp_srcptr pmVar25;\n  mp_limb_t *unaff_s0;\n  int iVar26;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  mp_limb_t *unaff_s5;\n  undefined1 *puVar27;\n  undefined1 *unaff_s6;\n  mp_ptr pp;\n  mp_srcptr unaff_s7;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  int *piVar32;\n  int *piVar33;\n  int *piVar34;\n  int an;\n  undefined4 uVar35;\n  code *pcVar36;\n  longlong lVar37;\n  int aiStack_50 [6];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar33 = aiStack_50;\n  piVar32 = aiStack_50;\n  piVar34 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if (n < 0x28) {\n    puVar20 = (undefined1 *)n;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    ptVar11 = (tmp_reentrant_t *)rp;\n    puVar5 = xp;\n  }\n  else {\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar35 = 0x557c8;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar37 = CONCAT44(ptVar11,puVar5);\n  puVar31 = puVar29 + 0x49870;\n  puVar4 = *(undefined4 **)(puVar29 + 0x41d70);\n  uVar22 = *puVar5;\n  *(undefined **)((int)piVar33 + -0xf0) = puVar31;\n  *(undefined4 **)((int)piVar33 + -0xe0) = puVar4;\n  *(undefined **)((int)piVar33 + -0x20) = puVar2;\n  *(mp_size_t *)((int)piVar33 + -0x24) = n;\n  *(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar33 + -4) = uVar35;\n  *(int **)((int)piVar33 + -8) = aiStack_50;\n  *(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x10) = unaff_s6;\n  *(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar33 + -0x2c) = *puVar4;\n  if ((int)puVar20 < 3) {\n    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;\n    puVar27 = puVar20;\n    if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }\n  if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {\n    return;\n  }\n  pcVar30 = *(code **)(puVar31 + -0x7b70);\n  pcVar36 = __gmpn_toom22_mul;\n  (*pcVar30)();\n  pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20);\n  *(undefined1 **)((int)piVar33 + -0x128) = puVar27;\n  iVar21 = (int)puVar20 >> 1;\n  *(int **)((int)piVar33 + -0x108) = piVar34;\n  an = (int)puVar20 - iVar21;\n  *(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x124) = puVar5;\n  *(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0;\n  *(uint **)((int)piVar33 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x11c) = unaff_s3;\n  *(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11;\n  *(code **)((int)piVar33 + -0x104) = pcVar36;\n  pmVar17 = pmVar9 + an;\n  *(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x110) = unaff_s6;\n  *(int *)((int)piVar33 + -0xfc) = (int)lVar37;\n  *(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4;\n  iVar26 = *(int *)((int)piVar33 + -0xf0) - an;\n  if (iVar21 == an) {\n    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);\n    iVar10 = iVar21;\n    do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n    if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    if (an != iVar26) goto LAB_00055b5c;\nLAB_00055ed4:\n    pmVar23 = in_a3 + an;\n    puVar5 = in_a3 + an + -1;\n    iVar28 = an;\n    do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar33 + -300) = an * 8;\n  *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  pp = pmVar17 + an;\n  if (iVar26 < iVar21) {\n    if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n  }\n  else {\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an);\n  iVar21 = (iVar21 + iVar26) - an;\n  puVar5 = pp + an;\n  iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an);\n  iVar28 = *(int *)((int)piVar33 + -0x140);\n  uVar22 = iVar26 + iVar10;\n  if (iVar21 != 0) {\n    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);\n    iVar28 = *(int *)((int)piVar33 + -0x140);\n    if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }\n  }\n  iVar21 = *(int *)((int)piVar33 + -0x130);\nLAB_00055cec:\n  if (iVar21 == 0) {\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }\n  else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }\n  uVar8 = iVar21 + iVar10;\n  uVar16 = uVar22 + *pp;\n  *pp = uVar16;\n  if (uVar16 < uVar22) {\n    do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);\n  }\n  uVar22 = *puVar5;\n  if (uVar8 < 3) {\n    *puVar5 = uVar8 + uVar22;\n    if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_sqrlo(mp_ptr rp,mp_srcptr xp,mp_size_t n)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  mp_limb_t *pmVar3;\n  undefined4 *puVar4;\n  uint *puVar5;\n  int iVar6;\n  mp_limb_t *pmVar7;\n  uint uVar8;\n  mp_ptr pmVar9;\n  int iVar10;\n  tmp_reentrant_t *ptVar11;\n  tmp_reentrant_t *ptVar12;\n  tmp_reentrant_t *ptVar13;\n  size_t *psVar14;\n  mp_limb_t mVar15;\n  uint uVar16;\n  mp_srcptr pmVar17;\n  uint *puVar18;\n  size_t *psVar19;\n  undefined1 *puVar20;\n  uint *in_a3;\n  int iVar21;\n  uint uVar22;\n  mp_srcptr pmVar23;\n  mp_srcptr pmVar24;\n  mp_srcptr pmVar25;\n  mp_limb_t *unaff_s0;\n  int iVar26;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  mp_limb_t *unaff_s5;\n  undefined1 *puVar27;\n  undefined1 *unaff_s6;\n  mp_ptr pp;\n  mp_srcptr unaff_s7;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  int *piVar32;\n  int *piVar33;\n  int *piVar34;\n  int an;\n  undefined4 uVar35;\n  code *pcVar36;\n  longlong lVar37;\n  int aiStack_50 [6];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar33 = aiStack_50;\n  piVar32 = aiStack_50;\n  piVar34 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if (n < 0x28) {\n    puVar20 = (undefined1 *)n;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    ptVar11 = (tmp_reentrant_t *)rp;\n    puVar5 = xp;\n  }\n  else {\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar35 = 0x557c8;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar37 = CONCAT44(ptVar11,puVar5);\n  puVar31 = puVar29 + 0x49870;\n  puVar4 = *(undefined4 **)(puVar29 + 0x41d70);\n  uVar22 = *puVar5;\n  *(undefined **)((int)piVar33 + -0xf0) = puVar31;\n  *(undefined4 **)((int)piVar33 + -0xe0) = puVar4;\n  *(undefined **)((int)piVar33 + -0x20) = puVar2;\n  *(mp_size_t *)((int)piVar33 + -0x24) = n;\n  *(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar33 + -4) = uVar35;\n  *(int **)((int)piVar33 + -8) = aiStack_50;\n  *(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x10) = unaff_s6;\n  *(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar33 + -0x2c) = *puVar4;\n  if ((int)puVar20 < 3) {\n    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;\n    puVar27 = puVar20;\n    if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }\n  if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {\n    return;\n  }\n  pcVar30 = *(code **)(puVar31 + -0x7b70);\n  pcVar36 = __gmpn_toom22_mul;\n  (*pcVar30)();\n  pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20);\n  *(undefined1 **)((int)piVar33 + -0x128) = puVar27;\n  iVar21 = (int)puVar20 >> 1;\n  *(int **)((int)piVar33 + -0x108) = piVar34;\n  an = (int)puVar20 - iVar21;\n  *(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x124) = puVar5;\n  *(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0;\n  *(uint **)((int)piVar33 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x11c) = unaff_s3;\n  *(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11;\n  *(code **)((int)piVar33 + -0x104) = pcVar36;\n  pmVar17 = pmVar9 + an;\n  *(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x110) = unaff_s6;\n  *(int *)((int)piVar33 + -0xfc) = (int)lVar37;\n  *(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4;\n  iVar26 = *(int *)((int)piVar33 + -0xf0) - an;\n  if (iVar21 == an) {\n    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);\n    iVar10 = iVar21;\n    do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n    if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    if (an != iVar26) goto LAB_00055b5c;\nLAB_00055ed4:\n    pmVar23 = in_a3 + an;\n    puVar5 = in_a3 + an + -1;\n    iVar28 = an;\n    do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar33 + -300) = an * 8;\n  *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  pp = pmVar17 + an;\n  if (iVar26 < iVar21) {\n    if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n  }\n  else {\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an);\n  iVar21 = (iVar21 + iVar26) - an;\n  puVar5 = pp + an;\n  iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an);\n  iVar28 = *(int *)((int)piVar33 + -0x140);\n  uVar22 = iVar26 + iVar10;\n  if (iVar21 != 0) {\n    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);\n    iVar28 = *(int *)((int)piVar33 + -0x140);\n    if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }\n  }\n  iVar21 = *(int *)((int)piVar33 + -0x130);\nLAB_00055cec:\n  if (iVar21 == 0) {\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }\n  else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }\n  uVar8 = iVar21 + iVar10;\n  uVar16 = uVar22 + *pp;\n  *pp = uVar16;\n  if (uVar16 < uVar22) {\n    do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);\n  }\n  uVar22 = *puVar5;\n  if (uVar8 < 3) {\n    *puVar5 = uVar8 + uVar22;\n    if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_sqrlo(mp_ptr rp,mp_srcptr xp,mp_size_t n)" identifier (parameter_list "(mp_ptr rp,mp_srcptr xp,mp_size_t n)" ( (parameter_declaration "mp_ptr rp" type_identifier identifier) , (parameter_declaration "mp_srcptr xp" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  mp_limb_t *pmVar3;\n  undefined4 *puVar4;\n  uint *puVar5;\n  int iVar6;\n  mp_limb_t *pmVar7;\n  uint uVar8;\n  mp_ptr pmVar9;\n  int iVar10;\n  tmp_reentrant_t *ptVar11;\n  tmp_reentrant_t *ptVar12;\n  tmp_reentrant_t *ptVar13;\n  size_t *psVar14;\n  mp_limb_t mVar15;\n  uint uVar16;\n  mp_srcptr pmVar17;\n  uint *puVar18;\n  size_t *psVar19;\n  undefined1 *puVar20;\n  uint *in_a3;\n  int iVar21;\n  uint uVar22;\n  mp_srcptr pmVar23;\n  mp_srcptr pmVar24;\n  mp_srcptr pmVar25;\n  mp_limb_t *unaff_s0;\n  int iVar26;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  mp_limb_t *unaff_s5;\n  undefined1 *puVar27;\n  undefined1 *unaff_s6;\n  mp_ptr pp;\n  mp_srcptr unaff_s7;\n  int iVar28;\n  undefined *puVar29;\n  code *pcVar30;\n  undefined *puVar31;\n  int *piVar32;\n  int *piVar33;\n  int *piVar34;\n  int an;\n  undefined4 uVar35;\n  code *pcVar36;\n  longlong lVar37;\n  int aiStack_50 [6];\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar33 = aiStack_50;\n  piVar32 = aiStack_50;\n  piVar34 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if (n < 0x28) {\n    puVar20 = (undefined1 *)n;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    ptVar11 = (tmp_reentrant_t *)rp;\n    puVar5 = xp;\n  }\n  else {\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar35 = 0x557c8;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar37 = CONCAT44(ptVar11,puVar5);\n  puVar31 = puVar29 + 0x49870;\n  puVar4 = *(undefined4 **)(puVar29 + 0x41d70);\n  uVar22 = *puVar5;\n  *(undefined **)((int)piVar33 + -0xf0) = puVar31;\n  *(undefined4 **)((int)piVar33 + -0xe0) = puVar4;\n  *(undefined **)((int)piVar33 + -0x20) = puVar2;\n  *(mp_size_t *)((int)piVar33 + -0x24) = n;\n  *(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar33 + -4) = uVar35;\n  *(int **)((int)piVar33 + -8) = aiStack_50;\n  *(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x10) = unaff_s6;\n  *(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar33 + -0x2c) = *puVar4;\n  if ((int)puVar20 < 3) {\n    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;\n    puVar27 = puVar20;\n    if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }\n  if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {\n    return;\n  }\n  pcVar30 = *(code **)(puVar31 + -0x7b70);\n  pcVar36 = __gmpn_toom22_mul;\n  (*pcVar30)();\n  pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20);\n  *(undefined1 **)((int)piVar33 + -0x128) = puVar27;\n  iVar21 = (int)puVar20 >> 1;\n  *(int **)((int)piVar33 + -0x108) = piVar34;\n  an = (int)puVar20 - iVar21;\n  *(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar33 + -0x124) = puVar5;\n  *(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0;\n  *(uint **)((int)piVar33 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar33 + -0x11c) = unaff_s3;\n  *(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11;\n  *(code **)((int)piVar33 + -0x104) = pcVar36;\n  pmVar17 = pmVar9 + an;\n  *(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar33 + -0x110) = unaff_s6;\n  *(int *)((int)piVar33 + -0xfc) = (int)lVar37;\n  *(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4;\n  iVar26 = *(int *)((int)piVar33 + -0xf0) - an;\n  if (iVar21 == an) {\n    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);\n    iVar10 = iVar21;\n    do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n    if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    if (an != iVar26) goto LAB_00055b5c;\nLAB_00055ed4:\n    pmVar23 = in_a3 + an;\n    puVar5 = in_a3 + an + -1;\n    iVar28 = an;\n    do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar33 + -300) = an * 8;\n  *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  pp = pmVar17 + an;\n  if (iVar26 < iVar21) {\n    if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n  }\n  else {\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an);\n  iVar21 = (iVar21 + iVar26) - an;\n  puVar5 = pp + an;\n  iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an);\n  iVar28 = *(int *)((int)piVar33 + -0x140);\n  uVar22 = iVar26 + iVar10;\n  if (iVar21 != 0) {\n    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);\n    iVar28 = *(int *)((int)piVar33 + -0x140);\n    if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }\n  }\n  iVar21 = *(int *)((int)piVar33 + -0x130);\nLAB_00055cec:\n  if (iVar21 == 0) {\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }\n  else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }\n  uVar8 = iVar21 + iVar10;\n  uVar16 = uVar22 + *pp;\n  *pp = uVar16;\n  if (uVar16 < uVar22) {\n    do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);\n  }\n  uVar22 = *puVar5;\n  if (uVar8 < 3) {\n    *puVar5 = uVar8 + uVar22;\n    if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "mp_limb_t *pmVar3;" type_identifier (pointer_declarator "*pmVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar7;" type_identifier (pointer_declarator "*pmVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "mp_ptr pmVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "tmp_reentrant_t *ptVar11;" type_identifier (pointer_declarator "*ptVar11" * identifier) ;) (declaration "tmp_reentrant_t *ptVar12;" type_identifier (pointer_declarator "*ptVar12" * identifier) ;) (declaration "tmp_reentrant_t *ptVar13;" type_identifier (pointer_declarator "*ptVar13" * identifier) ;) (declaration "size_t *psVar14;" primitive_type (pointer_declarator "*psVar14" * identifier) ;) (declaration "mp_limb_t mVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "mp_srcptr pmVar17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "size_t *psVar19;" primitive_type (pointer_declarator "*psVar19" * identifier) ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint *in_a3;" type_identifier (pointer_declarator "*in_a3" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "mp_srcptr pmVar23;" type_identifier identifier ;) (declaration "mp_srcptr pmVar24;" type_identifier identifier ;) (declaration "mp_srcptr pmVar25;" type_identifier identifier ;) (declaration "mp_limb_t *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "uint *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "mp_limb_t *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "mp_ptr pp;" type_identifier identifier ;) (declaration "mp_srcptr unaff_s7;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "code *pcVar30;" type_identifier (pointer_declarator "*pcVar30" * identifier) ;) (declaration "undefined *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int *piVar33;" primitive_type (pointer_declarator "*piVar33" * identifier) ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "int an;" primitive_type identifier ;) (declaration "undefined4 uVar35;" type_identifier identifier ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "longlong lVar37;" type_identifier identifier ;) (declaration "int aiStack_50 [6];" primitive_type (array_declarator "aiStack_50 [6]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "piVar33 = aiStack_50;" (assignment_expression "piVar33 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar32 = aiStack_50;" (assignment_expression "piVar32 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar34 = aiStack_50;" (assignment_expression "piVar34 = aiStack_50" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (n < 0x28) {\n    puVar20 = (undefined1 *)n;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    ptVar11 = (tmp_reentrant_t *)rp;\n    puVar5 = xp;\n  }\n  else {\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "(n < 0x28)" ( (binary_expression "n < 0x28" identifier < number_literal) )) (compound_statement "{\n    puVar20 = (undefined1 *)n;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    ptVar11 = (tmp_reentrant_t *)rp;\n    puVar5 = xp;\n  }" { (expression_statement "puVar20 = (undefined1 *)n;" (assignment_expression "puVar20 = (undefined1 *)n" identifier = (cast_expression "(undefined1 *)n" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();" (call_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)" ( (pointer_expression "*(code *)PTR___gmpn_sqrlo_basecase_000975a8" * (cast_expression "(code *)PTR___gmpn_sqrlo_basecase_000975a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "ptVar11 = (tmp_reentrant_t *)rp;" (assignment_expression "ptVar11 = (tmp_reentrant_t *)rp" identifier = (cast_expression "(tmp_reentrant_t *)rp" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar5 = xp;" (assignment_expression "puVar5 = xp" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    unaff_s3 = (uint *)(n * 8);\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }\n    unaff_s5 = (mp_limb_t *)(n * 4);\n    if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }\n    ptVar11 = __tmp_marker;\n    unaff_s4 = rp;\n    unaff_s7 = xp;\n    piVar33 = piVar32;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "unaff_s3 = (uint *)(n * 8);" (assignment_expression "unaff_s3 = (uint *)(n * 8)" identifier = (cast_expression "(uint *)(n * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 8)" ( (binary_expression "n * 8" identifier * number_literal) )))) ;) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s3 < (uint *)0x7f01) {\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }\n    else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }" if (parenthesized_expression "(unaff_s3 < (uint *)0x7f01)" ( (binary_expression "unaff_s3 < (uint *)0x7f01" identifier < (cast_expression "(uint *)0x7f01" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar32 = aiStack_50 + n * -2;\n      unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);\n    }" { (expression_statement "piVar32 = aiStack_50 + n * -2;" (assignment_expression "piVar32 = aiStack_50 + n * -2" identifier = (binary_expression "aiStack_50 + n * -2" identifier + (binary_expression "n * -2" identifier * number_literal))) ;) (expression_statement "unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8);" (assignment_expression "unaff_s0 = (mp_limb_t *)(&stack0xffffffc8 + n * -8)" identifier = (cast_expression "(mp_limb_t *)(&stack0xffffffc8 + n * -8)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffc8 + n * -8)" ( (binary_expression "&stack0xffffffc8 + n * -8" (pointer_expression "&stack0xffffffc8" & identifier) + (binary_expression "n * -8" identifier * number_literal)) )))) ;) }) (else_clause "else {\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }" else (compound_statement "{\n      unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);\n    }" { (expression_statement "unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3);" (assignment_expression "unaff_s0 = (mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3)" identifier = (cast_expression "(mp_limb_t *)\n                 (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s3)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,unaff_s3)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier ))))) ;) }))) (expression_statement "unaff_s5 = (mp_limb_t *)(n * 4);" (assignment_expression "unaff_s5 = (mp_limb_t *)(n * 4)" identifier = (cast_expression "(mp_limb_t *)(n * 4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 4)" ( (binary_expression "n * 4" identifier * number_literal) )))) ;) (if_statement "if (n < 0x2e00) {\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }\n    else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }" if (parenthesized_expression "(n < 0x2e00)" ( (binary_expression "n < 0x2e00" identifier < number_literal) )) (compound_statement "{\n      unaff_s5 = unaff_s0 + n;\n      if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }\n      (*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);\n      rp = (mp_ptr)((int)rp + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);\n      puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = rp;\n      in_a3 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(rp);\n    }" { (expression_statement "unaff_s5 = unaff_s0 + n;" (assignment_expression "unaff_s5 = unaff_s0 + n" identifier = (binary_expression "unaff_s0 + n" identifier + identifier)) ;) (if_statement "if (n < 0x52) {\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }" if (parenthesized_expression "(n < 0x52)" ( (binary_expression "n < 0x52" identifier < number_literal) )) (compound_statement "{\n        unaff_s3 = (uint *)(n >> 1);\nLAB_000555e4:\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }\njoined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }" { (expression_statement "unaff_s3 = (uint *)(n >> 1);" (assignment_expression "unaff_s3 = (uint *)(n >> 1)" identifier = (cast_expression "(uint *)(n >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n >> 1)" ( (binary_expression "n >> 1" identifier >> number_literal) )))) ;) (labeled_statement "LAB_000555e4:\n        n = n - (int)unaff_s3;" statement_identifier : (expression_statement "n = n - (int)unaff_s3;" (assignment_expression "n = n - (int)unaff_s3" identifier = (binary_expression "n - (int)unaff_s3" identifier - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "unaff_s6 = (undefined1 *)(n * 4);" (assignment_expression "unaff_s6 = (undefined1 *)(n * 4)" identifier = (cast_expression "(undefined1 *)(n * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 4)" ( (binary_expression "n * 4" identifier * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,xp,n)" ( identifier , identifier , identifier ))) ;) (expression_statement "pmVar17 = xp + n;" (assignment_expression "pmVar17 = xp + n" identifier = (binary_expression "xp + n" identifier + identifier)) ;) (if_statement "if ((mp_ptr)n != (mp_ptr)0x0) {\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }" if (parenthesized_expression "((mp_ptr)n != (mp_ptr)0x0)" ( (binary_expression "(mp_ptr)n != (mp_ptr)0x0" (cast_expression "(mp_ptr)n" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_00055760:\n          mVar15 = *unaff_s0;\n          if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;\n          *rp = mVar15;\n        }" { (labeled_statement "LAB_00055760:\n          mVar15 = *unaff_s0;" statement_identifier : (expression_statement "mVar15 = *unaff_s0;" (assignment_expression "mVar15 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;)) (if_statement "if ((undefined1 *)n != &DAT_00000001) goto LAB_000556dc;" if (parenthesized_expression "((undefined1 *)n != &DAT_00000001)" ( (binary_expression "(undefined1 *)n != &DAT_00000001" (cast_expression "(undefined1 *)n" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&DAT_00000001" & identifier)) )) (goto_statement "goto LAB_000556dc;" goto statement_identifier ;)) (expression_statement "*rp = mVar15;" (assignment_expression "*rp = mVar15" (pointer_expression "*rp" * identifier) = identifier) ;) })) (labeled_statement "joined_r0x0005570c:\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;" statement_identifier : (expression_statement "pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar30 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if ((int)unaff_s3 < 0x28) {\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" if (parenthesized_expression "((int)unaff_s3 < 0x28)" ( (binary_expression "(int)unaff_s3 < 0x28" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" { (expression_statement "pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120;" (assignment_expression "pcVar30 = (code *)PTR___gmpn_mullo_basecase_00097120" identifier = (cast_expression "(code *)PTR___gmpn_mullo_basecase_00097120" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) }) (else_clause "else {\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }" else (compound_statement "{\n        if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }\n        if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)n / 10);\n        n = n - (int)unaff_s3;\n        unaff_s6 = (undefined1 *)(n * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n        pmVar17 = xp + n;\n        pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;\n      }" { (if_statement "if (n < 0x70) {\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }" if (parenthesized_expression "(n < 0x70)" ( (binary_expression "n < 0x70" identifier < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);\n          n = n - (int)unaff_s3;\n          unaff_s6 = (undefined1 *)(n * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);\n          pmVar17 = xp + n;\n          mVar15 = *unaff_s0;\nLAB_000556dc:\n          pmVar7 = unaff_s0 + 1;\n          pmVar9 = rp;\n          do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));\n          *(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;\n          goto joined_r0x0005570c;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24);" (assignment_expression "unaff_s3 = (uint *)((uint)(n * 0xb) / 0x24)" identifier = (cast_expression "(uint *)((uint)(n * 0xb) / 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(n * 0xb) / 0x24)" ( (binary_expression "(uint)(n * 0xb) / 0x24" (call_expression "(uint)(n * 0xb)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(n * 0xb)" ( (binary_expression "n * 0xb" identifier * number_literal) ))) / number_literal) )))) ;) (expression_statement "n = n - (int)unaff_s3;" (assignment_expression "n = n - (int)unaff_s3" identifier = (binary_expression "n - (int)unaff_s3" identifier - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s6 = (undefined1 *)(n * 4);" (assignment_expression "unaff_s6 = (undefined1 *)(n * 4)" identifier = (cast_expression "(undefined1 *)(n * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 4)" ( (binary_expression "n * 4" identifier * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,xp,n)" ( identifier , identifier , identifier ))) ;) (expression_statement "pmVar17 = xp + n;" (assignment_expression "pmVar17 = xp + n" identifier = (binary_expression "xp + n" identifier + identifier)) ;) (expression_statement "mVar15 = *unaff_s0;" (assignment_expression "mVar15 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (labeled_statement "LAB_000556dc:\n          pmVar7 = unaff_s0 + 1;" statement_identifier : (expression_statement "pmVar7 = unaff_s0 + 1;" (assignment_expression "pmVar7 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;)) (expression_statement "pmVar9 = rp;" (assignment_expression "pmVar9 = rp" identifier = identifier) ;) (do_statement "do {\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          } while (pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6));" do (compound_statement "{\n            *pmVar9 = mVar15;\n            pmVar3 = pmVar7 + 1;\n            mVar15 = *pmVar7;\n            pmVar7 = pmVar3;\n            pmVar9 = pmVar9 + 1;\n          }" { (expression_statement "*pmVar9 = mVar15;" (assignment_expression "*pmVar9 = mVar15" (pointer_expression "*pmVar9" * identifier) = identifier) ;) (expression_statement "pmVar3 = pmVar7 + 1;" (assignment_expression "pmVar3 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 1" identifier + number_literal)) ;) (expression_statement "mVar15 = *pmVar7;" (assignment_expression "mVar15 = *pmVar7" identifier = (pointer_expression "*pmVar7" * identifier)) ;) (expression_statement "pmVar7 = pmVar3;" (assignment_expression "pmVar7 = pmVar3" identifier = identifier) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6))" ( (binary_expression "pmVar3 != (mp_limb_t *)((int)unaff_s0 + (int)unaff_s6)" identifier != (cast_expression "(mp_limb_t *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) ;) (expression_statement "*(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15;" (assignment_expression "*(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4)) = mVar15" (pointer_expression "*(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4))" * (cast_expression "(mp_limb_t *)((int)rp + (int)(unaff_s6 + -4))" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)rp + (int)(unaff_s6 + -4))" ( (binary_expression "(int)rp + (int)(unaff_s6 + -4)" (cast_expression "(int)rp" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s6 + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s6 + -4)" ( (binary_expression "unaff_s6 + -4" identifier + number_literal) )))) )))) = identifier) ;) (goto_statement "goto joined_r0x0005570c;" goto statement_identifier ;) })) (if_statement "if (n < 0x204) {\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }" if (parenthesized_expression "(n < 0x204)" ( (binary_expression "n < 0x204" identifier < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)(n * 9) / 0x28);\n          goto LAB_000555e4;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)(n * 9) / 0x28);" (assignment_expression "unaff_s3 = (uint *)((uint)(n * 9) / 0x28)" identifier = (cast_expression "(uint *)((uint)(n * 9) / 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(n * 9) / 0x28)" ( (binary_expression "(uint)(n * 9) / 0x28" (call_expression "(uint)(n * 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(n * 9)" ( (binary_expression "n * 9" identifier * number_literal) ))) / number_literal) )))) ;) (goto_statement "goto LAB_000555e4;" goto statement_identifier ;) })) (expression_statement "unaff_s3 = (uint *)((uint)n / 10);" (assignment_expression "unaff_s3 = (uint *)((uint)n / 10)" identifier = (cast_expression "(uint *)((uint)n / 10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)n / 10)" ( (binary_expression "(uint)n / 10" (cast_expression "(uint)n" ( (type_descriptor "uint" type_identifier) ) identifier) / number_literal) )))) ;) (expression_statement "n = n - (int)unaff_s3;" (assignment_expression "n = n - (int)unaff_s3" identifier = (binary_expression "n - (int)unaff_s3" identifier - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s6 = (undefined1 *)(n * 4);" (assignment_expression "unaff_s6 = (undefined1 *)(n * 4)" identifier = (cast_expression "(undefined1 *)(n * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(n * 4)" ( (binary_expression "n * 4" identifier * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,xp,n)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,xp,n)" ( identifier , identifier , identifier ))) ;) (expression_statement "pmVar17 = xp + n;" (assignment_expression "pmVar17 = xp + n" identifier = (binary_expression "xp + n" identifier + identifier)) ;) (expression_statement "pcVar30 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar30 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((mp_ptr)n != (mp_ptr)0x0) goto LAB_00055760;" if (parenthesized_expression "((mp_ptr)n != (mp_ptr)0x0)" ( (binary_expression "(mp_ptr)n != (mp_ptr)0x0" (cast_expression "(mp_ptr)n" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00055760;" goto statement_identifier ;)) }))) (expression_statement "(*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3);" (call_expression "(*pcVar30)(unaff_s5,pmVar17,xp,unaff_s3)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(unaff_s5,pmVar17,xp,unaff_s3)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "rp = (mp_ptr)((int)rp + (int)unaff_s6);" (assignment_expression "rp = (mp_ptr)((int)rp + (int)unaff_s6)" identifier = (call_expression "(mp_ptr)((int)rp + (int)unaff_s6)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)rp + (int)unaff_s6)" ( (binary_expression "(int)rp + (int)unaff_s6" (cast_expression "(int)rp" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1);" (call_expression "(*(code *)PTR___gmpn_lshift_0009756c)(rp,unaff_s5,unaff_s3,1)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009756c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009756c" * (cast_expression "(code *)PTR___gmpn_lshift_0009756c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(rp,unaff_s5,unaff_s3,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6);" (assignment_expression "puVar20 = (undefined1 *)((int)unaff_s0 + (int)unaff_s6)" identifier = (cast_expression "(undefined1 *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar5 = rp;" (assignment_expression "puVar5 = rp" identifier = identifier) ;) (expression_statement "in_a3 = unaff_s3;" (assignment_expression "in_a3 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_00097334)(rp);" (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(rp)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(rp)" ( identifier ))) ;) }) (else_clause "else {\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }" else (compound_statement "{\n      *(mp_size_t *)((int)piVar32 + 0x10) = n;\n      puVar5 = xp;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);\n      iVar21 = n + -1;\n      puVar20 = (undefined1 *)*unaff_s0;\n      pmVar9 = rp;\n      pmVar7 = unaff_s0;\n      do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);\n      n = (mp_size_t)(rp + n);\n      *(undefined1 **)(n + -4) = puVar20;\n      in_a3 = (uint *)0x0;\n    }" { (expression_statement "*(mp_size_t *)((int)piVar32 + 0x10) = n;" (assignment_expression "*(mp_size_t *)((int)piVar32 + 0x10) = n" (pointer_expression "*(mp_size_t *)((int)piVar32 + 0x10)" * (cast_expression "(mp_size_t *)((int)piVar32 + 0x10)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar32 + 0x10)" ( (binary_expression "(int)piVar32 + 0x10" (cast_expression "(int)piVar32" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = xp;" (assignment_expression "puVar5 = xp" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp);" (call_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,xp,n,xp)" (parenthesized_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)" ( (pointer_expression "*(code *)PTR___gmpn_nussbaumer_mul_000972bc" * (cast_expression "(code *)PTR___gmpn_nussbaumer_mul_000972bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,xp,n,xp)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar21 = n + -1;" (assignment_expression "iVar21 = n + -1" identifier = (binary_expression "n + -1" identifier + number_literal)) ;) (expression_statement "puVar20 = (undefined1 *)*unaff_s0;" (assignment_expression "puVar20 = (undefined1 *)*unaff_s0" identifier = (cast_expression "(undefined1 *)*unaff_s0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s0" * identifier))) ;) (expression_statement "pmVar9 = rp;" (assignment_expression "pmVar9 = rp" identifier = identifier) ;) (expression_statement "pmVar7 = unaff_s0;" (assignment_expression "pmVar7 = unaff_s0" identifier = identifier) ;) (do_statement "do {\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      } while (iVar21 != 0);" do (compound_statement "{\n        pmVar7 = pmVar7 + 1;\n        *pmVar9 = (mp_limb_t)puVar20;\n        iVar21 = iVar21 + -1;\n        puVar20 = (undefined1 *)*pmVar7;\n        pmVar9 = pmVar9 + 1;\n      }" { (expression_statement "pmVar7 = pmVar7 + 1;" (assignment_expression "pmVar7 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar9 = (mp_limb_t)puVar20;" (assignment_expression "*pmVar9 = (mp_limb_t)puVar20" (pointer_expression "*pmVar9" * identifier) = (cast_expression "(mp_limb_t)puVar20" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "iVar21 = iVar21 + -1;" (assignment_expression "iVar21 = iVar21 + -1" identifier = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "puVar20 = (undefined1 *)*pmVar7;" (assignment_expression "puVar20 = (undefined1 *)*pmVar7" identifier = (cast_expression "(undefined1 *)*pmVar7" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pmVar7" * identifier))) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) ;) (expression_statement "n = (mp_size_t)(rp + n);" (assignment_expression "n = (mp_size_t)(rp + n)" identifier = (call_expression "(mp_size_t)(rp + n)" (parenthesized_expression "(mp_size_t)" ( identifier )) (argument_list "(rp + n)" ( (binary_expression "rp + n" identifier + identifier) )))) ;) (expression_statement "*(undefined1 **)(n + -4) = puVar20;" (assignment_expression "*(undefined1 **)(n + -4) = puVar20" (pointer_expression "*(undefined1 **)(n + -4)" * (cast_expression "(undefined1 **)(n + -4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(n + -4)" ( (binary_expression "n + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "in_a3 = (uint *)0x0;" (assignment_expression "in_a3 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "ptVar11 = __tmp_marker;" (assignment_expression "ptVar11 = __tmp_marker" identifier = identifier) ;) (expression_statement "unaff_s4 = rp;" (assignment_expression "unaff_s4 = rp" identifier = identifier) ;) (expression_statement "unaff_s7 = xp;" (assignment_expression "unaff_s7 = xp" identifier = identifier) ;) (expression_statement "piVar33 = piVar32;" (assignment_expression "piVar33 = piVar32" identifier = identifier) ;) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar35 = 0x557c8;" (assignment_expression "uVar35 = 0x557c8" identifier = number_literal) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar29 = 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 "lVar37 = CONCAT44(ptVar11,puVar5);" (assignment_expression "lVar37 = CONCAT44(ptVar11,puVar5)" identifier = (call_expression "CONCAT44(ptVar11,puVar5)" identifier (argument_list "(ptVar11,puVar5)" ( identifier , identifier )))) ;) (expression_statement "puVar31 = puVar29 + 0x49870;" (assignment_expression "puVar31 = puVar29 + 0x49870" identifier = (binary_expression "puVar29 + 0x49870" identifier + number_literal)) ;) (expression_statement "puVar4 = *(undefined4 **)(puVar29 + 0x41d70);" (assignment_expression "puVar4 = *(undefined4 **)(puVar29 + 0x41d70)" identifier = (pointer_expression "*(undefined4 **)(puVar29 + 0x41d70)" * (cast_expression "(undefined4 **)(puVar29 + 0x41d70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x41d70)" ( (binary_expression "puVar29 + 0x41d70" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*(undefined **)((int)piVar33 + -0xf0) = puVar31;" (assignment_expression "*(undefined **)((int)piVar33 + -0xf0) = puVar31" (pointer_expression "*(undefined **)((int)piVar33 + -0xf0)" * (cast_expression "(undefined **)((int)piVar33 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)piVar33 + -0xe0) = puVar4;" (assignment_expression "*(undefined4 **)((int)piVar33 + -0xe0) = puVar4" (pointer_expression "*(undefined4 **)((int)piVar33 + -0xe0)" * (cast_expression "(undefined4 **)((int)piVar33 + -0xe0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xe0)" ( (binary_expression "(int)piVar33 + -0xe0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)piVar33 + -0x20) = puVar2;" (assignment_expression "*(undefined **)((int)piVar33 + -0x20) = puVar2" (pointer_expression "*(undefined **)((int)piVar33 + -0x20)" * (cast_expression "(undefined **)((int)piVar33 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x20)" ( (binary_expression "(int)piVar33 + -0x20" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(mp_size_t *)((int)piVar33 + -0x24) = n;" (assignment_expression "*(mp_size_t *)((int)piVar33 + -0x24) = n" (pointer_expression "*(mp_size_t *)((int)piVar33 + -0x24)" * (cast_expression "(mp_size_t *)((int)piVar33 + -0x24)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x24)" ( (binary_expression "(int)piVar33 + -0x24" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0;" (assignment_expression "*(mp_limb_t **)((int)piVar33 + -0x28) = unaff_s0" (pointer_expression "*(mp_limb_t **)((int)piVar33 + -0x28)" * (cast_expression "(mp_limb_t **)((int)piVar33 + -0x28)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x28)" ( (binary_expression "(int)piVar33 + -0x28" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -4) = uVar35;" (assignment_expression "*(undefined4 *)((int)piVar33 + -4) = uVar35" (pointer_expression "*(undefined4 *)((int)piVar33 + -4)" * (cast_expression "(undefined4 *)((int)piVar33 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -4)" ( (binary_expression "(int)piVar33 + -4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)piVar33 + -8) = aiStack_50;" (assignment_expression "*(int **)((int)piVar33 + -8) = aiStack_50" (pointer_expression "*(int **)((int)piVar33 + -8)" * (cast_expression "(int **)((int)piVar33 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -8)" ( (binary_expression "(int)piVar33 + -8" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -0xc) = unaff_s7" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -0xc)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -0xc)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xc)" ( (binary_expression "(int)piVar33 + -0xc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0x10) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar33 + -0x10) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar33 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar33 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x10)" ( (binary_expression "(int)piVar33 + -0x10" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5;" (assignment_expression "*(mp_limb_t **)((int)piVar33 + -0x14) = unaff_s5" (pointer_expression "*(mp_limb_t **)((int)piVar33 + -0x14)" * (cast_expression "(mp_limb_t **)((int)piVar33 + -0x14)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x14)" ( (binary_expression "(int)piVar33 + -0x14" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar33 + -0x18) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar33 + -0x18) = unaff_s4" (pointer_expression "*(uint **)((int)piVar33 + -0x18)" * (cast_expression "(uint **)((int)piVar33 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x18)" ( (binary_expression "(int)piVar33 + -0x18" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar33 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar33 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar33 + -0x1c)" * (cast_expression "(uint **)((int)piVar33 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x1c)" ( (binary_expression "(int)piVar33 + -0x1c" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -0x2c) = *puVar4;" (assignment_expression "*(undefined4 *)((int)piVar33 + -0x2c) = *puVar4" (pointer_expression "*(undefined4 *)((int)piVar33 + -0x2c)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x2c)" ( (binary_expression "(int)piVar33 + -0x2c" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if ((int)puVar20 < 3) {\n    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;\n    puVar27 = puVar20;\n    if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }" if (parenthesized_expression "((int)puVar20 < 3)" ( (binary_expression "(int)puVar20 < 3" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;\n    puVar27 = puVar20;\n    if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }\n  }" { (expression_statement "lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22;" (assignment_expression "lVar1 = (ulonglong)uVar22 * (ulonglong)uVar22" identifier = (binary_expression "(ulonglong)uVar22 * (ulonglong)uVar22" (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "puVar27 = puVar20;" (assignment_expression "puVar27 = puVar20" identifier = identifier) ;) (if_statement "if (puVar20 == &DAT_00000001) {\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }\n    else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }" if (parenthesized_expression "(puVar20 == &DAT_00000001)" ( (binary_expression "puVar20 == &DAT_00000001" identifier == (pointer_expression "&DAT_00000001" & identifier)) )) (compound_statement "{\n      ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);\n    }" { (expression_statement "ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22);" (assignment_expression "ptVar11->next = (tmp_reentrant_t *)(uVar22 * uVar22)" (field_expression "ptVar11->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)(uVar22 * uVar22)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 * uVar22)" ( (binary_expression "uVar22 * uVar22" identifier * identifier) )))) ;) }) (else_clause "else {\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }" else (compound_statement "{\n      ptVar11->next = (tmp_reentrant_t *)lVar1;\n      ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar34 = aiStack_50;\n      lVar37 = lVar1;\n    }" { (expression_statement "ptVar11->next = (tmp_reentrant_t *)lVar1;" (assignment_expression "ptVar11->next = (tmp_reentrant_t *)lVar1" (field_expression "ptVar11->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)lVar1" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "ptVar11->size = uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (field_expression "ptVar11->size" identifier -> field_identifier) = (binary_expression "uVar22 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (binary_expression "uVar22 * puVar5[1] * 2" (binary_expression "uVar22 * puVar5[1]" identifier * (subscript_expression "puVar5[1]" identifier [ number_literal ])) * number_literal) + (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "piVar34 = aiStack_50;" (assignment_expression "piVar34 = aiStack_50" identifier = identifier) ;) (expression_statement "lVar37 = lVar1;" (assignment_expression "lVar37 = lVar1" identifier = identifier) ;) }))) }) (else_clause "else {\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }" else (compound_statement "{\n    unaff_s4 = (uint *)(puVar20 + -1);\n    pcVar30 = *(code **)(puVar29 + 0x418d4);\n    *(uint **)((int)piVar33 + -0xdc) = unaff_s4;\n    *(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;\n    *(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);\n    unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);\n    iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);\n    iVar26 = *(int *)((int)piVar33 + -0xf0);\n    piVar34 = (int *)((int)unaff_s3 + iVar21);\n    if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }\n    unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (mp_limb_t)piVar34;\n    ptVar12 = ptVar11;\n    puVar18 = puVar5;\n    do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);\n    if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }\n    puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);\n    puVar5 = *(uint **)((int)piVar33 + -0xdc);\n    (**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);\n    psVar14 = &ptVar11->size;\n    psVar19 = psVar14;\n    puVar20 = puVar27;\n    in_a3 = puVar5;\n    (**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();\n    lVar37 = CONCAT44(psVar14,psVar19);\n    puVar31 = *(undefined **)((int)piVar33 + -0xf0);\n  }" { (expression_statement "unaff_s4 = (uint *)(puVar20 + -1);" (assignment_expression "unaff_s4 = (uint *)(puVar20 + -1)" identifier = (cast_expression "(uint *)(puVar20 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + -1)" ( (binary_expression "puVar20 + -1" identifier + number_literal) )))) ;) (expression_statement "pcVar30 = *(code **)(puVar29 + 0x418d4);" (assignment_expression "pcVar30 = *(code **)(puVar29 + 0x418d4)" identifier = (pointer_expression "*(code **)(puVar29 + 0x418d4)" * (cast_expression "(code **)(puVar29 + 0x418d4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x418d4)" ( (binary_expression "puVar29 + 0x418d4" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)((int)piVar33 + -0xdc) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar33 + -0xdc) = unaff_s4" (pointer_expression "*(uint **)((int)piVar33 + -0xdc)" * (cast_expression "(uint **)((int)piVar33 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xdc)" ( (binary_expression "(int)piVar33 + -0xdc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2;" (assignment_expression "*(undefined1 **)((int)piVar33 + -0xd8) = puVar20 + -2" (pointer_expression "*(undefined1 **)((int)piVar33 + -0xd8)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xd8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xd8)" ( (binary_expression "(int)piVar33 + -0xd8" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "puVar20 + -2" identifier + number_literal)) ;) (expression_statement "*(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4;" (assignment_expression "*(int *)((int)piVar33 + -0xcc) = (int)unaff_s4 * 4" (pointer_expression "*(int *)((int)piVar33 + -0xcc)" * (cast_expression "(int *)((int)piVar33 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xcc)" ( (binary_expression "(int)piVar33 + -0xcc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)unaff_s4 * 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200);" (assignment_expression "*(undefined1 **)((int)piVar33 + -0xd4) = (undefined1 *)((int)piVar33 + -200)" (pointer_expression "*(undefined1 **)((int)piVar33 + -0xd4)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xd4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xd4)" ( (binary_expression "(int)piVar33 + -0xd4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1 *)((int)piVar33 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -200)" ( (binary_expression "(int)piVar33 + -200" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4]);" (assignment_expression "unaff_s3 = (uint *)(uVar22 * puVar5[(int)unaff_s4])" identifier = (cast_expression "(uint *)(uVar22 * puVar5[(int)unaff_s4])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar22 * puVar5[(int)unaff_s4])" ( (binary_expression "uVar22 * puVar5[(int)unaff_s4]" identifier * (subscript_expression "puVar5[(int)unaff_s4]" identifier [ (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22);" (assignment_expression "iVar21 = (*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22)" identifier = (call_expression "(*pcVar30)((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "((undefined1 *)((int)piVar33 + -200),puVar5 + 1,puVar20 + -2,uVar22)" ( (cast_expression "(undefined1 *)((int)piVar33 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -200)" ( (binary_expression "(int)piVar33 + -200" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (binary_expression "puVar5 + 1" identifier + number_literal) , (binary_expression "puVar20 + -2" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar26 = *(int *)((int)piVar33 + -0xf0);" (assignment_expression "iVar26 = *(int *)((int)piVar33 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0xf0)" * (cast_expression "(int *)((int)piVar33 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar34 = (int *)((int)unaff_s3 + iVar21);" (assignment_expression "piVar34 = (int *)((int)unaff_s3 + iVar21)" identifier = (cast_expression "(int *)((int)unaff_s3 + iVar21)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + iVar21)" ( (binary_expression "(int)unaff_s3 + iVar21" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if ((int)unaff_s4 < 4) {\n      iVar21 = 1;\n    }\n    else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }" if (parenthesized_expression "((int)unaff_s4 < 4)" ( (binary_expression "(int)unaff_s4 < 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar21 = 1;\n    }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }" else (compound_statement "{\n      *(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;\n      unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);\n      unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);\n      *(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar27 = puVar20 + -4;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);\n      iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;\n    }" { (expression_statement "*(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5;" (assignment_expression "*(undefined1 **)((int)piVar33 + -0xd0) = puVar20 + -5" (pointer_expression "*(undefined1 **)((int)piVar33 + -0xd0)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xd0)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xd0)" ( (binary_expression "(int)piVar33 + -0xd0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "puVar20 + -5" identifier + number_literal)) ;) (expression_statement "unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1);" (assignment_expression "unaff_s4 = puVar5 + (int)((int)unaff_s4 + 1)" identifier = (binary_expression "puVar5 + (int)((int)unaff_s4 + 1)" identifier + (cast_expression "(int)((int)unaff_s4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s4 + 1)" ( (binary_expression "(int)unaff_s4 + 1" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0);" (assignment_expression "unaff_s6 = (undefined1 *)((int)piVar33 + -0xc0)" identifier = (cast_expression "(undefined1 *)((int)piVar33 + -0xc0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xc0)" ( (binary_expression "(int)piVar33 + -0xc0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe));" (assignment_expression "*(undefined1 **)((int)piVar33 + -0xe4) = puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe))" (pointer_expression "*(undefined1 **)((int)piVar33 + -0xe4)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xe4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xe4)" ( (binary_expression "(int)piVar33 + -0xe4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "puVar20 + (-6 - ((uint)(puVar20 + -5) & 0xfffffffe))" identifier + (parenthesized_expression "(-6 - ((uint)(puVar20 + -5) & 0xfffffffe))" ( (binary_expression "-6 - ((uint)(puVar20 + -5) & 0xfffffffe)" number_literal - (parenthesized_expression "((uint)(puVar20 + -5) & 0xfffffffe)" ( (binary_expression "(uint)(puVar20 + -5) & 0xfffffffe" (call_expression "(uint)(puVar20 + -5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar20 + -5)" ( (binary_expression "puVar20 + -5" identifier + number_literal) ))) & number_literal) ))) )))) ;) (expression_statement "unaff_s7 = puVar5 + 2;" (assignment_expression "unaff_s7 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar20 + -4;" (assignment_expression "puVar27 = puVar20 + -4" identifier = (binary_expression "puVar20 + -4" identifier + number_literal)) ;) (do_statement "do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(undefined1 **)((int)piVar33 + -0xe4) != puVar27);" do (compound_statement "{\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);\n        puVar27 = puVar27 + -2;\n        iVar26 = *(int *)((int)piVar33 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));\n        unaff_s7 = unaff_s7 + 1;\n      }" { (expression_statement "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);" (assignment_expression "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2])" identifier = (cast_expression "(uint *)(unaff_s7[-1] * unaff_s4[-2])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7[-1] * unaff_s4[-2])" ( (binary_expression "unaff_s7[-1] * unaff_s4[-2]" (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) * (subscript_expression "unaff_s4[-2]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1]);" (assignment_expression "iVar21 = (**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1])" identifier = (call_expression "(**(code **)(iVar26 + -0x7f70))(unaff_s6,unaff_s7,puVar27,unaff_s7[-1])" (parenthesized_expression "(**(code **)(iVar26 + -0x7f70))" ( (pointer_expression "**(code **)(iVar26 + -0x7f70)" * (pointer_expression "*(code **)(iVar26 + -0x7f70)" * (cast_expression "(code **)(iVar26 + -0x7f70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar26 + -0x7f70)" ( (binary_expression "iVar26 + -0x7f70" identifier + number_literal) ))))) )) (argument_list "(unaff_s6,unaff_s7,puVar27,unaff_s7[-1])" ( identifier , identifier , identifier , (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) )))) ;) (expression_statement "puVar27 = puVar27 + -2;" (assignment_expression "puVar27 = puVar27 + -2" identifier = (binary_expression "puVar27 + -2" identifier + number_literal)) ;) (expression_statement "iVar26 = *(int *)((int)piVar33 + -0xf0);" (assignment_expression "iVar26 = *(int *)((int)piVar33 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0xf0)" * (cast_expression "(int *)((int)piVar33 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" identifier = (binary_expression "unaff_s4 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = unaff_s6 + 8;" (assignment_expression "unaff_s6 = unaff_s6 + 8" identifier = (binary_expression "unaff_s6 + 8" identifier + number_literal)) ;) (expression_statement "piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21));" (assignment_expression "piVar34 = (int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21))" identifier = (cast_expression "(int *)((int)piVar34 + (int)((int)unaff_s3 + iVar21))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + (int)((int)unaff_s3 + iVar21))" ( (binary_expression "(int)piVar34 + (int)((int)unaff_s3 + iVar21)" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)((int)unaff_s3 + iVar21)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s3 + iVar21)" ( (binary_expression "(int)unaff_s3 + iVar21" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) )))) ;) (expression_statement "unaff_s7 = unaff_s7 + 1;" (assignment_expression "unaff_s7 = unaff_s7 + 1" identifier = (binary_expression "unaff_s7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(undefined1 **)((int)piVar33 + -0xe4) != puVar27)" ( (binary_expression "*(undefined1 **)((int)piVar33 + -0xe4) != puVar27" (pointer_expression "*(undefined1 **)((int)piVar33 + -0xe4)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xe4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xe4)" ( (binary_expression "(int)piVar33 + -0xe4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) )) ;) (expression_statement "iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2;" (assignment_expression "iVar21 = (*(uint *)((int)piVar33 + -0xd0) >> 1) + 2" identifier = (binary_expression "(*(uint *)((int)piVar33 + -0xd0) >> 1) + 2" (parenthesized_expression "(*(uint *)((int)piVar33 + -0xd0) >> 1)" ( (binary_expression "*(uint *)((int)piVar33 + -0xd0) >> 1" (pointer_expression "*(uint *)((int)piVar33 + -0xd0)" * (cast_expression "(uint *)((int)piVar33 + -0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xd0)" ( (binary_expression "(int)piVar33 + -0xd0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) )) + number_literal)) ;) }))) (if_statement "if ((*(uint *)((int)piVar33 + -0xdc) & 1) != 0) {\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }" if (parenthesized_expression "((*(uint *)((int)piVar33 + -0xdc) & 1) != 0)" ( (binary_expression "(*(uint *)((int)piVar33 + -0xdc) & 1) != 0" (parenthesized_expression "(*(uint *)((int)piVar33 + -0xdc) & 1)" ( (binary_expression "*(uint *)((int)piVar33 + -0xdc) & 1" (pointer_expression "*(uint *)((int)piVar33 + -0xdc)" * (cast_expression "(uint *)((int)piVar33 + -0xdc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xdc)" ( (binary_expression "(int)piVar33 + -0xdc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);\n    }" { (expression_statement "piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34);" (assignment_expression "piVar34 = (int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34)" identifier = (cast_expression "(int *)((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34)" ( (binary_expression "(puVar5 + iVar21)[1] * puVar5[iVar21] + (int)piVar34" (binary_expression "(puVar5 + iVar21)[1] * puVar5[iVar21]" (subscript_expression "(puVar5 + iVar21)[1]" (parenthesized_expression "(puVar5 + iVar21)" ( (binary_expression "puVar5 + iVar21" identifier + identifier) )) [ number_literal ]) * (subscript_expression "puVar5[iVar21]" identifier [ identifier ])) + (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);" (assignment_expression "unaff_s5 = (mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28)" identifier = (cast_expression "(mp_limb_t *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28)" ( (binary_expression "(int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28" (binary_expression "(int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "*(int *)((int)piVar33 + -0xd8) * 4" (pointer_expression "*(int *)((int)piVar33 + -0xd8)" * (cast_expression "(int *)((int)piVar33 + -0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xd8)" ( (binary_expression "(int)piVar33 + -0xd8" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "unaff_s5[-0x28] = (mp_limb_t)piVar34;" (assignment_expression "unaff_s5[-0x28] = (mp_limb_t)piVar34" (subscript_expression "unaff_s5[-0x28]" identifier [ number_literal ]) = (cast_expression "(mp_limb_t)piVar34" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "ptVar12 = ptVar11;" (assignment_expression "ptVar12 = ptVar11" identifier = identifier) ;) (expression_statement "puVar18 = puVar5;" (assignment_expression "puVar18 = puVar5" identifier = identifier) ;) (do_statement "do {\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    } while (ptVar11 + ((int)puVar20 >> 1) != ptVar13);" do (compound_statement "{\n      uVar22 = *puVar18;\n      ptVar13 = ptVar12 + 1;\n      puVar18 = puVar18 + 1;\n      lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;\n      ptVar12->next = (tmp_reentrant_t *)lVar37;\n      ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);\n      ptVar12 = ptVar13;\n    }" { (expression_statement "uVar22 = *puVar18;" (assignment_expression "uVar22 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "ptVar13 = ptVar12 + 1;" (assignment_expression "ptVar13 = ptVar12 + 1" identifier = (binary_expression "ptVar12 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22;" (assignment_expression "lVar37 = (ulonglong)uVar22 * (ulonglong)uVar22" identifier = (binary_expression "(ulonglong)uVar22 * (ulonglong)uVar22" (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar22" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "ptVar12->next = (tmp_reentrant_t *)lVar37;" (assignment_expression "ptVar12->next = (tmp_reentrant_t *)lVar37" (field_expression "ptVar12->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)lVar37" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20);" (assignment_expression "ptVar12->size = (size_t)((ulonglong)lVar37 >> 0x20)" (field_expression "ptVar12->size" identifier -> field_identifier) = (cast_expression "(size_t)((ulonglong)lVar37 >> 0x20)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "((ulonglong)lVar37 >> 0x20)" ( (binary_expression "(ulonglong)lVar37 >> 0x20" (cast_expression "(ulonglong)lVar37" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "ptVar12 = ptVar13;" (assignment_expression "ptVar12 = ptVar13" identifier = identifier) ;) }) while (parenthesized_expression "(ptVar11 + ((int)puVar20 >> 1) != ptVar13)" ( (binary_expression "ptVar11 + ((int)puVar20 >> 1) != ptVar13" (binary_expression "ptVar11 + ((int)puVar20 >> 1)" identifier + (parenthesized_expression "((int)puVar20 >> 1)" ( (binary_expression "(int)puVar20 >> 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) != identifier) )) ;) (if_statement "if (((uint)puVar20 & 1) != 0) {\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }" if (parenthesized_expression "(((uint)puVar20 & 1) != 0)" ( (binary_expression "((uint)puVar20 & 1) != 0" (parenthesized_expression "((uint)puVar20 & 1)" ( (binary_expression "(uint)puVar20 & 1" (cast_expression "(uint)puVar20" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));\n      *piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];\n    }" { (expression_statement "piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc));" (assignment_expression "piVar34 = (int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc))" identifier = (cast_expression "(int *)((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc))" ( (binary_expression "(int)&ptVar11->next + *(int *)((int)piVar33 + -0xcc)" (cast_expression "(int)&ptVar11->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar11->next" & (field_expression "ptVar11->next" identifier -> field_identifier))) + (pointer_expression "*(int *)((int)piVar33 + -0xcc)" * (cast_expression "(int *)((int)piVar33 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xcc)" ( (binary_expression "(int)piVar33 + -0xcc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) (expression_statement "*piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1];" (assignment_expression "*piVar34 = puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1]" (pointer_expression "*piVar34" * identifier) = (binary_expression "puVar5[(int)puVar20 >> 1] * puVar5[(int)puVar20 >> 1]" (subscript_expression "puVar5[(int)puVar20 >> 1]" identifier [ (binary_expression "(int)puVar20 >> 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) * (subscript_expression "puVar5[(int)puVar20 >> 1]" identifier [ (binary_expression "(int)puVar20 >> 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]))) ;) })) (expression_statement "puVar27 = *(undefined1 **)((int)piVar33 + -0xd4);" (assignment_expression "puVar27 = *(undefined1 **)((int)piVar33 + -0xd4)" identifier = (pointer_expression "*(undefined1 **)((int)piVar33 + -0xd4)" * (cast_expression "(undefined1 **)((int)piVar33 + -0xd4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xd4)" ( (binary_expression "(int)piVar33 + -0xd4" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = *(uint **)((int)piVar33 + -0xdc);" (assignment_expression "puVar5 = *(uint **)((int)piVar33 + -0xdc)" identifier = (pointer_expression "*(uint **)((int)piVar33 + -0xdc)" * (cast_expression "(uint **)((int)piVar33 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xdc)" ( (binary_expression "(int)piVar33 + -0xdc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1);" (call_expression "(**(code **)(iVar26 + -0x7ad4))(puVar27,puVar27,puVar5,1)" (parenthesized_expression "(**(code **)(iVar26 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar26 + -0x7ad4)" * (pointer_expression "*(code **)(iVar26 + -0x7ad4)" * (cast_expression "(code **)(iVar26 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar26 + -0x7ad4)" ( (binary_expression "iVar26 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar27,puVar27,puVar5,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "psVar14 = &ptVar11->size;" (assignment_expression "psVar14 = &ptVar11->size" identifier = (pointer_expression "&ptVar11->size" & (field_expression "ptVar11->size" identifier -> field_identifier))) ;) (expression_statement "psVar19 = psVar14;" (assignment_expression "psVar19 = psVar14" identifier = identifier) ;) (expression_statement "puVar20 = puVar27;" (assignment_expression "puVar20 = puVar27" identifier = identifier) ;) (expression_statement "in_a3 = puVar5;" (assignment_expression "in_a3 = puVar5" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();" (call_expression "(**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))()" (parenthesized_expression "(**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar33 + -0xf0) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar33 + -0xf0) + -0x7d0c" (pointer_expression "*(int *)((int)piVar33 + -0xf0)" * (cast_expression "(int *)((int)piVar33 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "lVar37 = CONCAT44(psVar14,psVar19);" (assignment_expression "lVar37 = CONCAT44(psVar14,psVar19)" identifier = (call_expression "CONCAT44(psVar14,psVar19)" identifier (argument_list "(psVar14,psVar19)" ( identifier , identifier )))) ;) (expression_statement "puVar31 = *(undefined **)((int)piVar33 + -0xf0);" (assignment_expression "puVar31 = *(undefined **)((int)piVar33 + -0xf0)" identifier = (pointer_expression "*(undefined **)((int)piVar33 + -0xf0)" * (cast_expression "(undefined **)((int)piVar33 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0))" ( (binary_expression "*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)" (pointer_expression "*(int *)((int)piVar33 + -0x2c)" * (cast_expression "(int *)((int)piVar33 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x2c)" ( (binary_expression "(int)piVar33 + -0x2c" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "**(int **)((int)piVar33 + -0xe0)" * (pointer_expression "*(int **)((int)piVar33 + -0xe0)" * (cast_expression "(int **)((int)piVar33 + -0xe0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0xe0)" ( (binary_expression "(int)piVar33 + -0xe0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar30 = *(code **)(puVar31 + -0x7b70);" (assignment_expression "pcVar30 = *(code **)(puVar31 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar31 + -0x7b70)" * (cast_expression "(code **)(puVar31 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x7b70)" ( (binary_expression "puVar31 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = __gmpn_toom22_mul;" (assignment_expression "pcVar36 = __gmpn_toom22_mul" identifier = identifier) ;) (expression_statement "(*pcVar30)();" (call_expression "(*pcVar30)()" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20);" (assignment_expression "pmVar9 = (mp_ptr)((ulonglong)lVar37 >> 0x20)" identifier = (call_expression "(mp_ptr)((ulonglong)lVar37 >> 0x20)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((ulonglong)lVar37 >> 0x20)" ( (binary_expression "(ulonglong)lVar37 >> 0x20" (cast_expression "(ulonglong)lVar37" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0x128) = puVar27;" (assignment_expression "*(undefined1 **)((int)piVar33 + -0x128) = puVar27" (pointer_expression "*(undefined1 **)((int)piVar33 + -0x128)" * (cast_expression "(undefined1 **)((int)piVar33 + -0x128)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x128)" ( (binary_expression "(int)piVar33 + -0x128" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar21 = (int)puVar20 >> 1;" (assignment_expression "iVar21 = (int)puVar20 >> 1" identifier = (binary_expression "(int)puVar20 >> 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "*(int **)((int)piVar33 + -0x108) = piVar34;" (assignment_expression "*(int **)((int)piVar33 + -0x108) = piVar34" (pointer_expression "*(int **)((int)piVar33 + -0x108)" * (cast_expression "(int **)((int)piVar33 + -0x108)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x108)" ( (binary_expression "(int)piVar33 + -0x108" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "an = (int)puVar20 - iVar21;" (assignment_expression "an = (int)puVar20 - iVar21" identifier = (binary_expression "(int)puVar20 - iVar21" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "*(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5;" (assignment_expression "*(mp_limb_t **)((int)piVar33 + -0x114) = unaff_s5" (pointer_expression "*(mp_limb_t **)((int)piVar33 + -0x114)" * (cast_expression "(mp_limb_t **)((int)piVar33 + -0x114)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x114)" ( (binary_expression "(int)piVar33 + -0x114" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar33 + -0x124) = puVar5;" (assignment_expression "*(uint **)((int)piVar33 + -0x124) = puVar5" (pointer_expression "*(uint **)((int)piVar33 + -0x124)" * (cast_expression "(uint **)((int)piVar33 + -0x124)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x124)" ( (binary_expression "(int)piVar33 + -0x124" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0;" (assignment_expression "*(code **)((int)piVar33 + -0x140) = pcVar30 + 0x495d0" (pointer_expression "*(code **)((int)piVar33 + -0x140)" * (cast_expression "(code **)((int)piVar33 + -0x140)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "pcVar30 + 0x495d0" identifier + number_literal)) ;) (expression_statement "*(uint **)((int)piVar33 + -0x118) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar33 + -0x118) = unaff_s4" (pointer_expression "*(uint **)((int)piVar33 + -0x118)" * (cast_expression "(uint **)((int)piVar33 + -0x118)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x118)" ( (binary_expression "(int)piVar33 + -0x118" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar33 + -0x11c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar33 + -0x11c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar33 + -0x11c)" * (cast_expression "(uint **)((int)piVar33 + -0x11c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x11c)" ( (binary_expression "(int)piVar33 + -0x11c" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11;" (assignment_expression "*(tmp_reentrant_t **)((int)piVar33 + -0x120) = ptVar11" (pointer_expression "*(tmp_reentrant_t **)((int)piVar33 + -0x120)" * (cast_expression "(tmp_reentrant_t **)((int)piVar33 + -0x120)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x120)" ( (binary_expression "(int)piVar33 + -0x120" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar33 + -0x104) = pcVar36;" (assignment_expression "*(code **)((int)piVar33 + -0x104) = pcVar36" (pointer_expression "*(code **)((int)piVar33 + -0x104)" * (cast_expression "(code **)((int)piVar33 + -0x104)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x104)" ( (binary_expression "(int)piVar33 + -0x104" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "pmVar17 = pmVar9 + an;" (assignment_expression "pmVar17 = pmVar9 + an" identifier = (binary_expression "pmVar9 + an" identifier + identifier)) ;) (expression_statement "*(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -0x10c) = unaff_s7" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -0x10c)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -0x10c)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x10c)" ( (binary_expression "(int)piVar33 + -0x10c" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar33 + -0x110) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar33 + -0x110) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar33 + -0x110)" * (cast_expression "(undefined1 **)((int)piVar33 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar33 + -0x110)" ( (binary_expression "(int)piVar33 + -0x110" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar33 + -0xfc) = (int)lVar37;" (assignment_expression "*(int *)((int)piVar33 + -0xfc) = (int)lVar37" (pointer_expression "*(int *)((int)piVar33 + -0xfc)" * (cast_expression "(int *)((int)piVar33 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int)lVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4;" (assignment_expression "*(int *)((int)piVar33 + -0x134) = (int)lVar37 + an * 4" (pointer_expression "*(int *)((int)piVar33 + -0x134)" * (cast_expression "(int *)((int)piVar33 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)lVar37 + an * 4" (cast_expression "(int)lVar37" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "an * 4" identifier * number_literal))) ;) (expression_statement "iVar26 = *(int *)((int)piVar33 + -0xf0) - an;" (assignment_expression "iVar26 = *(int *)((int)piVar33 + -0xf0) - an" identifier = (binary_expression "*(int *)((int)piVar33 + -0xf0) - an" (pointer_expression "*(int *)((int)piVar33 + -0xf0)" * (cast_expression "(int *)((int)piVar33 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xf0)" ( (binary_expression "(int)piVar33 + -0xf0" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - identifier)) ;) (if_statement "if (iVar21 == an) {\n    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);\n    iVar10 = iVar21;\n    do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n    if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    if (an != iVar26) goto LAB_00055b5c;\nLAB_00055ed4:\n    pmVar23 = in_a3 + an;\n    puVar5 = in_a3 + an + -1;\n    iVar28 = an;\n    do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }" if (parenthesized_expression "(iVar21 == an)" ( (binary_expression "iVar21 == an" identifier == identifier) )) (compound_statement "{\n    puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);\n    iVar10 = iVar21;\n    do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n    if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    if (an != iVar26) goto LAB_00055b5c;\nLAB_00055ed4:\n    pmVar23 = in_a3 + an;\n    puVar5 = in_a3 + an + -1;\n    iVar28 = an;\n    do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4)" ( (binary_expression "*(int *)((int)piVar33 + -0xfc) + (iVar21 + -1) * 4" (pointer_expression "*(int *)((int)piVar33 + -0xfc)" * (cast_expression "(int *)((int)piVar33 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "(iVar21 + -1) * 4" (parenthesized_expression "(iVar21 + -1)" ( (binary_expression "iVar21 + -1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar10 = iVar21;" (assignment_expression "iVar10 = iVar21" identifier = identifier) ;) (do_statement "do {\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);" do (compound_statement "{\n      iVar10 = iVar10 + -1;\n      pcVar36 = *(code **)(pcVar30 + 0x41aa4);\n      if (iVar10 < 0) goto LAB_00055eb0;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "pcVar36 = *(code **)(pcVar30 + 0x41aa4);" (assignment_expression "pcVar36 = *(code **)(pcVar30 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x41aa4)" * (cast_expression "(code **)(pcVar30 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x41aa4)" ( (binary_expression "pcVar30 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 < 0) goto LAB_00055eb0;" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055eb0;" goto statement_identifier ;)) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 == puVar5[an + 1])" ( (binary_expression "uVar22 == puVar5[an + 1]" identifier == (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar36 = *(code **)(pcVar30 + 0x41aa4);" (assignment_expression "pcVar36 = *(code **)(pcVar30 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x41aa4)" * (cast_expression "(code **)(pcVar30 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x41aa4)" ( (binary_expression "pcVar30 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar22 <= puVar5[an + 1]) {\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" if (parenthesized_expression "(uVar22 <= puVar5[an + 1])" ( (binary_expression "uVar22 <= puVar5[an + 1]" identifier <= (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) (compound_statement "{\n      (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      *(undefined4 *)((int)piVar33 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" { (expression_statement "(*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an);" (call_expression "(*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),*(undefined4 *)((int)piVar33 + -0xfc)\n                 ,an)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar33 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar33 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) (labeled_statement "LAB_00055eb0:\n    (*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);" statement_identifier : (expression_statement "(*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an);" (call_expression "(*pcVar36)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),*(undefined4 *)((int)piVar33 + -0x134),\n               an)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;)) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar33 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar33 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (an != iVar26) goto LAB_00055b5c;" if (parenthesized_expression "(an != iVar26)" ( (binary_expression "an != iVar26" identifier != identifier) )) (goto_statement "goto LAB_00055b5c;" goto statement_identifier ;)) (labeled_statement "LAB_00055ed4:\n    pmVar23 = in_a3 + an;" statement_identifier : (expression_statement "pmVar23 = in_a3 + an;" (assignment_expression "pmVar23 = in_a3 + an" identifier = (binary_expression "in_a3 + an" identifier + identifier)) ;)) (expression_statement "puVar5 = in_a3 + an + -1;" (assignment_expression "puVar5 = in_a3 + an + -1" identifier = (binary_expression "in_a3 + an + -1" (binary_expression "in_a3 + an" identifier + identifier) + number_literal)) ;) (expression_statement "iVar28 = an;" (assignment_expression "iVar28 = an" identifier = identifier) ;) (do_statement "do {\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);" do (compound_statement "{\n      iVar28 = iVar28 + -1;\n      pcVar30 = *(code **)(iVar10 + -0x7b2c);\n      if (iVar28 < 0) goto LAB_00055f0c;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar28 = iVar28 + -1;" (assignment_expression "iVar28 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7b2c);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7b2c)" * (cast_expression "(code **)(iVar10 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b2c)" ( (binary_expression "iVar10 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar28 < 0) goto LAB_00055f0c;" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055f0c;" goto statement_identifier ;)) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 == puVar5[an + 1])" ( (binary_expression "uVar22 == puVar5[an + 1]" identifier == (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7b2c);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7b2c)" * (cast_expression "(code **)(iVar10 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b2c)" ( (binary_expression "iVar10 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[an + 1] < uVar22) {\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[an + 1] < uVar22)" ( (binary_expression "puVar5[an + 1] < uVar22" (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,in_a3,pmVar23,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n    }" { (labeled_statement "LAB_00055f0c:\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;" statement_identifier : (expression_statement "*(mp_srcptr *)((int)piVar33 + -300) = pmVar23;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -300) = pmVar23" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "(*pcVar30)(pmVar17,in_a3,pmVar23,an);" (call_expression "(*pcVar30)(pmVar17,in_a3,pmVar23,an)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar17,in_a3,pmVar23,an)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar23;\n      (*pcVar30)(pmVar17,pmVar23,in_a3,an);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" { (expression_statement "*(mp_srcptr *)((int)piVar33 + -300) = pmVar23;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -300) = pmVar23" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar30)(pmVar17,pmVar23,in_a3,an);" (call_expression "(*pcVar30)(pmVar17,pmVar23,in_a3,an)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar17,pmVar23,in_a3,an)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar33 + -0x130)" * (cast_expression "(uint *)((int)piVar33 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar33 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar33 + -0x130)" * (cast_expression "(uint *)((int)piVar33 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }) (else_clause "else {\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }" else (compound_statement "{\n    iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);\n    if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }\n    iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    *(undefined4 *)((int)piVar33 + -0x130) = 0;\n    pmVar9[iVar21] = iVar28 - iVar6;\nLAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;\nLAB_00055b5c:\n    pmVar24 = in_a3 + an;\n    iVar6 = an - iVar26;\n    pmVar23 = in_a3 + an + -1;\n    iVar28 = iVar6;\n    do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);\n    puVar5 = in_a3 + iVar26 + -1;\n    iVar28 = iVar26;\n    do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);\n    pcVar30 = *(code **)(iVar10 + -0x7b2c);\n    if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4);" (assignment_expression "iVar28 = *(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4)" identifier = (pointer_expression "*(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4)" * (cast_expression "(int *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4)" ( (binary_expression "*(int *)((int)piVar33 + -0xfc) + iVar21 * 4" (pointer_expression "*(int *)((int)piVar33 + -0xfc)" * (cast_expression "(int *)((int)piVar33 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar21 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (iVar28 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);\n      iVar10 = iVar21;\n      do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n      if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }\n    }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4)" ( (binary_expression "*(int *)((int)piVar33 + -0xfc) + iVar21 * 4 + -4" (binary_expression "*(int *)((int)piVar33 + -0xfc) + iVar21 * 4" (pointer_expression "*(int *)((int)piVar33 + -0xfc)" * (cast_expression "(int *)((int)piVar33 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar21 * 4" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "iVar10 = iVar21;" (assignment_expression "iVar10 = iVar21" identifier = identifier) ;) (do_statement "do {\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar22 == puVar5[an + 1]);" do (compound_statement "{\n        iVar10 = iVar10 + -1;\n        if (iVar10 < 0) goto LAB_00055b2c;\n        uVar22 = *puVar5;\n        puVar5 = puVar5 + -1;\n      }" { (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (if_statement "if (iVar10 < 0) goto LAB_00055b2c;" if (parenthesized_expression "(iVar10 < 0)" ( (binary_expression "iVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b2c;" goto statement_identifier ;)) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 == puVar5[an + 1])" ( (binary_expression "uVar22 == puVar5[an + 1]" identifier == (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar30 = *(code **)(pcVar30 + 0x41aa4);" (assignment_expression "pcVar30 = *(code **)(pcVar30 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x41aa4)" * (cast_expression "(code **)(pcVar30 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x41aa4)" ( (binary_expression "pcVar30 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar22 <= puVar5[an + 1]) {\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }" if (parenthesized_expression "(uVar22 <= puVar5[an + 1])" ( (binary_expression "uVar22 <= puVar5[an + 1]" identifier <= (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) (compound_statement "{\n        (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        *(undefined4 *)((int)piVar33 + -0x130) = 1;\n        pmVar9[iVar21] = 0;\n        goto LAB_00055b54;\n      }" { (expression_statement "(*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21);" (call_expression "(*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar9,*(undefined4 *)((int)piVar33 + -0x134),\n                   *(undefined4 *)((int)piVar33 + -0xfc),iVar21)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar33 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar33 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pmVar9[iVar21] = 0;" (assignment_expression "pmVar9[iVar21] = 0" (subscript_expression "pmVar9[iVar21]" identifier [ identifier ]) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }" else (compound_statement "{\nLAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);\n    }" { (labeled_statement "LAB_00055b2c:\n      pcVar30 = *(code **)(pcVar30 + 0x41aa4);" statement_identifier : (expression_statement "pcVar30 = *(code **)(pcVar30 + 0x41aa4);" (assignment_expression "pcVar30 = *(code **)(pcVar30 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar30 + 0x41aa4)" * (cast_expression "(code **)(pcVar30 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar30 + 0x41aa4)" ( (binary_expression "pcVar30 + 0x41aa4" identifier + number_literal) ))))) ;)) }))) (expression_statement "iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21);" (assignment_expression "iVar6 = (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21)" identifier = (call_expression "(*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),\n                       *(undefined4 *)((int)piVar33 + -0x134),iVar21)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier )))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar33 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar33 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar33 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pmVar9[iVar21] = iVar28 - iVar6;" (assignment_expression "pmVar9[iVar21] = iVar28 - iVar6" (subscript_expression "pmVar9[iVar21]" identifier [ identifier ]) = (binary_expression "iVar28 - iVar6" identifier - identifier)) ;) (labeled_statement "LAB_00055b54:\n    if (an == iVar26) goto LAB_00055ed4;" statement_identifier : (if_statement "if (an == iVar26) goto LAB_00055ed4;" if (parenthesized_expression "(an == iVar26)" ( (binary_expression "an == iVar26" identifier == identifier) )) (goto_statement "goto LAB_00055ed4;" goto statement_identifier ;))) (labeled_statement "LAB_00055b5c:\n    pmVar24 = in_a3 + an;" statement_identifier : (expression_statement "pmVar24 = in_a3 + an;" (assignment_expression "pmVar24 = in_a3 + an" identifier = (binary_expression "in_a3 + an" identifier + identifier)) ;)) (expression_statement "iVar6 = an - iVar26;" (assignment_expression "iVar6 = an - iVar26" identifier = (binary_expression "an - iVar26" identifier - identifier)) ;) (expression_statement "pmVar23 = in_a3 + an + -1;" (assignment_expression "pmVar23 = in_a3 + an + -1" identifier = (binary_expression "in_a3 + an + -1" (binary_expression "in_a3 + an" identifier + identifier) + number_literal)) ;) (expression_statement "iVar28 = iVar6;" (assignment_expression "iVar28 = iVar6" identifier = identifier) ;) (do_statement "do {\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    } while (iVar28 != 0);" do (compound_statement "{\n      mVar15 = *pmVar23;\n      iVar28 = iVar28 + -1;\n      pmVar23 = pmVar23 + -1;\n      if (mVar15 != 0) goto LAB_00055b90;\n    }" { (expression_statement "mVar15 = *pmVar23;" (assignment_expression "mVar15 = *pmVar23" identifier = (pointer_expression "*pmVar23" * identifier)) ;) (expression_statement "iVar28 = iVar28 + -1;" (assignment_expression "iVar28 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (expression_statement "pmVar23 = pmVar23 + -1;" (assignment_expression "pmVar23 = pmVar23 + -1" identifier = (binary_expression "pmVar23 + -1" identifier + number_literal)) ;) (if_statement "if (mVar15 != 0) goto LAB_00055b90;" if (parenthesized_expression "(mVar15 != 0)" ( (binary_expression "mVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) ;) (expression_statement "puVar5 = in_a3 + iVar26 + -1;" (assignment_expression "puVar5 = in_a3 + iVar26 + -1" identifier = (binary_expression "in_a3 + iVar26 + -1" (binary_expression "in_a3 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "iVar28 = iVar26;" (assignment_expression "iVar28 = iVar26" identifier = identifier) ;) (do_statement "do {\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar22 == puVar5[an + 1]);" do (compound_statement "{\n      iVar28 = iVar28 + -1;\n      if (iVar28 < 0) goto LAB_00055b90;\n      uVar22 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar28 = iVar28 + -1;" (assignment_expression "iVar28 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (if_statement "if (iVar28 < 0) goto LAB_00055b90;" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 == puVar5[an + 1])" ( (binary_expression "uVar22 == puVar5[an + 1]" identifier == (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7b2c);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7b2c)" * (cast_expression "(code **)(iVar10 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b2c)" ( (binary_expression "iVar10 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[an + 1] < uVar22) {\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }\n    else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[an + 1] < uVar22)" ( (binary_expression "puVar5[an + 1] < uVar22" (subscript_expression "puVar5[an + 1]" identifier [ (binary_expression "an + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055b90:\n      iVar28 = 0;\n      if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }\n      if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }\n    }" { (labeled_statement "LAB_00055b90:\n      iVar28 = 0;" statement_identifier : (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;)) (if_statement "if (iVar26 != 0) {\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar30 = *(code **)(iVar10 + -0x7b2c);\n        *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n        iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);\n        iVar10 = *(int *)((int)piVar33 + -0x140);\n        pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n        iVar28 = iVar26;\n        if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }\n      }" { (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7b2c);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7b2c)" * (cast_expression "(code **)(iVar10 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7b2c)" ( (binary_expression "iVar10 + -0x7b2c" identifier + number_literal) ))))) ;) (expression_statement "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26);" (assignment_expression "iVar6 = (*pcVar30)(pmVar17,in_a3,pmVar24,iVar26)" identifier = (call_expression "(*pcVar30)(pmVar17,in_a3,pmVar24,iVar26)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar17,in_a3,pmVar24,iVar26)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar28 = iVar26;" (assignment_expression "iVar28 = iVar26" identifier = identifier) ;) (if_statement "if (iVar6 != 0) {\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          pmVar23 = in_a3 + iVar26;\n          if (an <= iVar26) goto LAB_00055bc8;\n          pmVar25 = pmVar17 + iVar26;\n          mVar15 = *pmVar23;\n          *pmVar25 = mVar15 - 1;\n          while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }\n        }" { (expression_statement "pmVar23 = in_a3 + iVar26;" (assignment_expression "pmVar23 = in_a3 + iVar26" identifier = (binary_expression "in_a3 + iVar26" identifier + identifier)) ;) (if_statement "if (an <= iVar26) goto LAB_00055bc8;" if (parenthesized_expression "(an <= iVar26)" ( (binary_expression "an <= iVar26" identifier <= identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "pmVar25 = pmVar17 + iVar26;" (assignment_expression "pmVar25 = pmVar17 + iVar26" identifier = (binary_expression "pmVar17 + iVar26" identifier + identifier)) ;) (expression_statement "mVar15 = *pmVar23;" (assignment_expression "mVar15 = *pmVar23" identifier = (pointer_expression "*pmVar23" * identifier)) ;) (expression_statement "*pmVar25 = mVar15 - 1;" (assignment_expression "*pmVar25 = mVar15 - 1" (pointer_expression "*pmVar25" * identifier) = (binary_expression "mVar15 - 1" identifier - number_literal)) ;) (while_statement "while (iVar28 = iVar28 + 1, mVar15 == 0) {\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }" while (parenthesized_expression "(iVar28 = iVar28 + 1, mVar15 == 0)" ( (comma_expression "iVar28 = iVar28 + 1, mVar15 == 0" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) , (binary_expression "mVar15 == 0" identifier == number_literal)) )) (compound_statement "{\n            pmVar25 = pmVar25 + 1;\n            if (an == iVar28) goto LAB_00055bc8;\n            mVar15 = pmVar23[1];\n            pmVar23 = pmVar23 + 1;\n            *pmVar25 = mVar15 - 1;\n          }" { (expression_statement "pmVar25 = pmVar25 + 1;" (assignment_expression "pmVar25 = pmVar25 + 1" identifier = (binary_expression "pmVar25 + 1" identifier + number_literal)) ;) (if_statement "if (an == iVar28) goto LAB_00055bc8;" if (parenthesized_expression "(an == iVar28)" ( (binary_expression "an == iVar28" identifier == identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "mVar15 = pmVar23[1];" (assignment_expression "mVar15 = pmVar23[1]" identifier = (subscript_expression "pmVar23[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar23 = pmVar23 + 1;" (assignment_expression "pmVar23 = pmVar23 + 1" identifier = (binary_expression "pmVar23 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar25 = mVar15 - 1;" (assignment_expression "*pmVar25 = mVar15 - 1" (pointer_expression "*pmVar25" * identifier) = (binary_expression "mVar15 - 1" identifier - number_literal)) ;) })) })) })) (if_statement "if ((pmVar17 != in_a3) && (iVar28 < an)) {\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }" if (parenthesized_expression "((pmVar17 != in_a3) && (iVar28 < an))" ( (binary_expression "(pmVar17 != in_a3) && (iVar28 < an)" (parenthesized_expression "(pmVar17 != in_a3)" ( (binary_expression "pmVar17 != in_a3" identifier != identifier) )) && (parenthesized_expression "(iVar28 < an)" ( (binary_expression "iVar28 < an" identifier < identifier) ))) )) (compound_statement "{\n        pmVar23 = in_a3 + iVar28;\n        pmVar7 = pmVar17 + iVar28;\n        do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);\n      }" { (expression_statement "pmVar23 = in_a3 + iVar28;" (assignment_expression "pmVar23 = in_a3 + iVar28" identifier = (binary_expression "in_a3 + iVar28" identifier + identifier)) ;) (expression_statement "pmVar7 = pmVar17 + iVar28;" (assignment_expression "pmVar7 = pmVar17 + iVar28" identifier = (binary_expression "pmVar17 + iVar28" identifier + identifier)) ;) (do_statement "do {\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        } while (pmVar23 != pmVar24);" do (compound_statement "{\n          mVar15 = *pmVar23;\n          pmVar23 = pmVar23 + 1;\n          *pmVar7 = mVar15;\n          pmVar7 = pmVar7 + 1;\n        }" { (expression_statement "mVar15 = *pmVar23;" (assignment_expression "mVar15 = *pmVar23" identifier = (pointer_expression "*pmVar23" * identifier)) ;) (expression_statement "pmVar23 = pmVar23 + 1;" (assignment_expression "pmVar23 = pmVar23 + 1" identifier = (binary_expression "pmVar23 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar7 = mVar15;" (assignment_expression "*pmVar7 = mVar15" (pointer_expression "*pmVar7" * identifier) = identifier) ;) (expression_statement "pmVar7 = pmVar7 + 1;" (assignment_expression "pmVar7 = pmVar7 + 1" identifier = (binary_expression "pmVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar23 != pmVar24)" ( (binary_expression "pmVar23 != pmVar24" identifier != identifier) )) ;) })) }) (else_clause "else {\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(mp_srcptr *)((int)piVar33 + -300) = pmVar24;\n      (*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n      pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);\n      pmVar23 = pmVar17 + iVar26;\n      do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);\n      *(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;\n    }" { (expression_statement "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar30)(pmVar17,pmVar24,in_a3,iVar26);" (call_expression "(*pcVar30)(pmVar17,pmVar24,in_a3,iVar26)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar17,pmVar24,in_a3,iVar26)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar24 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar23 = pmVar17 + iVar26;" (assignment_expression "pmVar23 = pmVar17 + iVar26" identifier = (binary_expression "pmVar17 + iVar26" identifier + identifier)) ;) (do_statement "do {\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      } while (iVar6 != 0);" do (compound_statement "{\n        iVar6 = iVar6 + -1;\n        *pmVar23 = 0;\n        pmVar23 = pmVar23 + 1;\n      }" { (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "*pmVar23 = 0;" (assignment_expression "*pmVar23 = 0" (pointer_expression "*pmVar23" * identifier) = number_literal) ;) (expression_statement "pmVar23 = pmVar23 + 1;" (assignment_expression "pmVar23 = pmVar23 + 1" identifier = (binary_expression "pmVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) ;) (expression_statement "*(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar33 + -0x130) = *(uint *)((int)piVar33 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar33 + -0x130)" * (cast_expression "(uint *)((int)piVar33 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar33 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar33 + -0x130)" * (cast_expression "(uint *)((int)piVar33 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }))) (labeled_statement "LAB_00055bc8:\n  *(int *)((int)piVar33 + -300) = an * 8;" statement_identifier : (expression_statement "*(int *)((int)piVar33 + -300) = an * 8;" (assignment_expression "*(int *)((int)piVar33 + -300) = an * 8" (pointer_expression "*(int *)((int)piVar33 + -300)" * (cast_expression "(int *)((int)piVar33 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "an * 8" identifier * number_literal)) ;)) (expression_statement "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24;" (assignment_expression "*(mp_srcptr *)((int)piVar33 + -300) = pmVar24" (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }" if (parenthesized_expression "(0x13 < an)" ( (binary_expression "0x13 < an" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }" { (expression_statement "*(int *)((int)piVar33 + -0x148) = an;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = an" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;" (assignment_expression "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0x144)" * (cast_expression "(int *)((int)piVar33 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0xec)" * (cast_expression "(int *)((int)piVar33 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "an * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));" (call_expression "__gmpn_toom22_mul(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" identifier (argument_list "(*(mp_ptr *)((int)piVar33 + -0xec),pmVar9,an,pmVar17,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" ( (pointer_expression "*(mp_ptr *)((int)piVar33 + -0xec)" * (cast_expression "(mp_ptr *)((int)piVar33 + -0xec)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier , (pointer_expression "*(mp_size_t *)((int)piVar33 + -0x148)" * (cast_expression "(mp_size_t *)((int)piVar33 + -0x148)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(mp_ptr *)((int)piVar33 + -0x144)" * (cast_expression "(mp_ptr *)((int)piVar33 + -0x144)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar23 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }" else (compound_statement "{\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n    pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);\n  }" { (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7bd0);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7bd0)" * (cast_expression "(code **)(iVar10 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7bd0)" ( (binary_expression "iVar10 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = an;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = an" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17);" (call_expression "(*pcVar30)(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(*(undefined4 *)((int)piVar33 + -0xec),pmVar9,an,pmVar17)" ( (pointer_expression "*(undefined4 *)((int)piVar33 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pmVar23 = *(mp_srcptr *)((int)piVar33 + -300);" (assignment_expression "pmVar23 = *(mp_srcptr *)((int)piVar33 + -300)" identifier = (pointer_expression "*(mp_srcptr *)((int)piVar33 + -300)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -300)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -300)" ( (binary_expression "(int)piVar33 + -300" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "pp = pmVar17 + an;" (assignment_expression "pp = pmVar17 + an" identifier = (binary_expression "pmVar17 + an" identifier + identifier)) ;) (if_statement "if (iVar26 < iVar21) {\n    if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n  }\n  else {\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" if (parenthesized_expression "(iVar26 < iVar21)" ( (binary_expression "iVar26 < iVar21" identifier < identifier) )) (compound_statement "{\n    if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n  }" { (if_statement "if (iVar26 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }\n    else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }" if (parenthesized_expression "(iVar26 < 0x14)" ( (binary_expression "iVar26 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar26;\nLAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }" { (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7bd0);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7bd0)" * (cast_expression "(code **)(iVar10 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7bd0)" ( (binary_expression "iVar10 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00055c5c:\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);" statement_identifier : (expression_statement "(*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);" (call_expression "(*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;)) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }" else (compound_statement "{\n      if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }\n      pcVar30 = *(code **)(iVar10 + -0x7c88);\n      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n      *(int *)((int)piVar33 + -0x148) = iVar26;\n      (*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);\n      iVar10 = *(int *)((int)piVar33 + -0x140);\n    }" { (if_statement "if (iVar21 << 2 < iVar26 * 5) {\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }" if (parenthesized_expression "(iVar21 << 2 < iVar26 * 5)" ( (binary_expression "iVar21 << 2 < iVar26 * 5" (binary_expression "iVar21 << 2" identifier << number_literal) < (binary_expression "iVar26 * 5" identifier * number_literal)) )) (compound_statement "{\n        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n        *(int *)((int)piVar33 + -0x148) = iVar26;\n        goto LAB_00055ff8;\n      }" { (expression_statement "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;" (assignment_expression "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0x144)" * (cast_expression "(int *)((int)piVar33 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0xec)" * (cast_expression "(int *)((int)piVar33 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "an * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055ff8;" goto statement_identifier ;) })) (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7c88);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7c88)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7c88)" * (cast_expression "(code **)(iVar10 + -0x7c88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7c88)" ( (binary_expression "iVar10 + -0x7c88" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;" (assignment_expression "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0x144)" * (cast_expression "(int *)((int)piVar33 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0xec)" * (cast_expression "(int *)((int)piVar33 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "an * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23);" (call_expression "(*pcVar30)(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pp,*(undefined4 *)((int)piVar33 + -0x134),iVar21,pmVar23)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar33 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" else (compound_statement "{\n    if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar33 + -0x148) = iVar21;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" { (if_statement "if (iVar21 < 0x14) {\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }" if (parenthesized_expression "(iVar21 < 0x14)" ( (binary_expression "iVar21 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar30 = *(code **)(iVar10 + -0x7bd0);\n      *(int *)((int)piVar33 + -0x148) = iVar21;\n      goto LAB_00055c5c;\n    }" { (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7bd0);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7bd0)" * (cast_expression "(code **)(iVar10 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7bd0)" ( (binary_expression "iVar10 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = iVar21;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = iVar21" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)((int)piVar33 + -0x148) = iVar21;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = iVar21" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;" (assignment_expression "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0x144)" * (cast_expression "(int *)((int)piVar33 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0xec)" * (cast_expression "(int *)((int)piVar33 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "an * 8" identifier * number_literal))) ;) (labeled_statement "LAB_00055ff8:\n    __gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));" statement_identifier : (expression_statement "__gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));" (call_expression "__gmpn_toom22_mul(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" identifier (argument_list "(pp,*(mp_srcptr *)((int)piVar33 + -0x134),iVar21,pmVar23,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" ( identifier , (pointer_expression "*(mp_srcptr *)((int)piVar33 + -0x134)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -0x134)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x134)" ( (binary_expression "(int)piVar33 + -0x134" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , (pointer_expression "*(mp_size_t *)((int)piVar33 + -0x148)" * (cast_expression "(mp_size_t *)((int)piVar33 + -0x148)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(mp_ptr *)((int)piVar33 + -0x144)" * (cast_expression "(mp_ptr *)((int)piVar33 + -0x144)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;)) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (0x13 < an) {\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }\n  else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" if (parenthesized_expression "(0x13 < an)" ( (binary_expression "0x13 < an" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar33 + -0x148) = an;\n    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;\n    __gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" { (expression_statement "*(int *)((int)piVar33 + -0x148) = an;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = an" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8;" (assignment_expression "*(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0x144)" * (cast_expression "(int *)((int)piVar33 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar33 + -0xec) + an * 8" (pointer_expression "*(int *)((int)piVar33 + -0xec)" * (cast_expression "(int *)((int)piVar33 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "an * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144));" (call_expression "__gmpn_toom22_mul(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" identifier (argument_list "(pmVar9,*(mp_srcptr *)((int)piVar33 + -0xfc),an,in_a3,\n                      *(mp_size_t *)((int)piVar33 + -0x148),*(mp_ptr *)((int)piVar33 + -0x144))" ( identifier , (pointer_expression "*(mp_srcptr *)((int)piVar33 + -0xfc)" * (cast_expression "(mp_srcptr *)((int)piVar33 + -0xfc)" ( (type_descriptor "mp_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , (pointer_expression "*(mp_size_t *)((int)piVar33 + -0x148)" * (cast_expression "(mp_size_t *)((int)piVar33 + -0x148)" ( (type_descriptor "mp_size_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(mp_ptr *)((int)piVar33 + -0x144)" * (cast_expression "(mp_ptr *)((int)piVar33 + -0x144)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x144)" ( (binary_expression "(int)piVar33 + -0x144" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" else (compound_statement "{\n    pcVar30 = *(code **)(iVar10 + -0x7bd0);\n    *(int *)((int)piVar33 + -0x148) = an;\n    (*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);\n    iVar10 = *(int *)((int)piVar33 + -0x140);\n  }" { (expression_statement "pcVar30 = *(code **)(iVar10 + -0x7bd0);" (assignment_expression "pcVar30 = *(code **)(iVar10 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar10 + -0x7bd0)" * (cast_expression "(code **)(iVar10 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7bd0)" ( (binary_expression "iVar10 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar33 + -0x148) = an;" (assignment_expression "*(int *)((int)piVar33 + -0x148) = an" (pointer_expression "*(int *)((int)piVar33 + -0x148)" * (cast_expression "(int *)((int)piVar33 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x148)" ( (binary_expression "(int)piVar33 + -0x148" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3);" (call_expression "(*pcVar30)(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3)" (parenthesized_expression "(*pcVar30)" ( (pointer_expression "*pcVar30" * identifier) )) (argument_list "(pmVar9,*(undefined4 *)((int)piVar33 + -0xfc),an,in_a3)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xfc)" ( (binary_expression "(int)piVar33 + -0xfc" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar10 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar10 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an);" (assignment_expression "iVar10 = (**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an)" identifier = (call_expression "(**(code **)(iVar10 + -0x7d0c))(pp,pmVar17,pp,an)" (parenthesized_expression "(**(code **)(iVar10 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar10 + -0x7d0c)" * (pointer_expression "*(code **)(iVar10 + -0x7d0c)" * (cast_expression "(code **)(iVar10 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar10 + -0x7d0c)" ( (binary_expression "iVar10 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(pp,pmVar17,pp,an)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar21 = (iVar21 + iVar26) - an;" (assignment_expression "iVar21 = (iVar21 + iVar26) - an" identifier = (binary_expression "(iVar21 + iVar26) - an" (parenthesized_expression "(iVar21 + iVar26)" ( (binary_expression "iVar21 + iVar26" identifier + identifier) )) - identifier)) ;) (expression_statement "puVar5 = pp + an;" (assignment_expression "puVar5 = pp + an" identifier = (binary_expression "pp + an" identifier + identifier)) ;) (expression_statement "iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an);" (assignment_expression "iVar26 = (**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an)" identifier = (call_expression "(**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(pmVar17,pp,pmVar9,an)" (parenthesized_expression "(**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar33 + -0x140) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar33 + -0x140) + -0x7d0c" (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(pmVar17,pp,pmVar9,an)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar28 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar28 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar22 = iVar26 + iVar10;" (assignment_expression "uVar22 = iVar26 + iVar10" identifier = (binary_expression "iVar26 + iVar10" identifier + identifier)) ;) (if_statement "if (iVar21 != 0) {\n    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);\n    iVar28 = *(int *)((int)piVar33 + -0x140);\n    if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }\n  }" if (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);\n    iVar28 = *(int *)((int)piVar33 + -0x140);\n    if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }\n  }" { (expression_statement "iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21);" (assignment_expression "iVar26 = (**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21)" identifier = (call_expression "(**(code **)(iVar28 + -0x7d0c))(pp,pp,puVar5,iVar21)" (parenthesized_expression "(**(code **)(iVar28 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar28 + -0x7d0c)" * (pointer_expression "*(code **)(iVar28 + -0x7d0c)" * (cast_expression "(code **)(iVar28 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7d0c)" ( (binary_expression "iVar28 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(pp,pp,puVar5,iVar21)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar28 = *(int *)((int)piVar33 + -0x140);" (assignment_expression "iVar28 = *(int *)((int)piVar33 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x140)" * (cast_expression "(int *)((int)piVar33 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x140)" ( (binary_expression "(int)piVar33 + -0x140" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar26 != 0) {\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }" if (parenthesized_expression "(iVar26 != 0)" ( (binary_expression "iVar26 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }\n    }" { (if_statement "if (iVar21 < an) {\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }" if (parenthesized_expression "(iVar21 < an)" ( (binary_expression "iVar21 < an" identifier < identifier) )) (compound_statement "{\n        pmVar9 = pp + iVar21;\n        mVar15 = *pmVar9;\n        *pmVar9 = mVar15 + 1;\n        if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);\n      }" { (expression_statement "pmVar9 = pp + iVar21;" (assignment_expression "pmVar9 = pp + iVar21" identifier = (binary_expression "pp + iVar21" identifier + identifier)) ;) (expression_statement "mVar15 = *pmVar9;" (assignment_expression "mVar15 = *pmVar9" identifier = (pointer_expression "*pmVar9" * identifier)) ;) (expression_statement "*pmVar9 = mVar15 + 1;" (assignment_expression "*pmVar9 = mVar15 + 1" (pointer_expression "*pmVar9" * identifier) = (binary_expression "mVar15 + 1" identifier + number_literal)) ;) (if_statement "if (mVar15 + 1 != 0) {\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }" if (parenthesized_expression "(mVar15 + 1 != 0)" ( (binary_expression "mVar15 + 1 != 0" (binary_expression "mVar15 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n          iVar21 = *(int *)((int)piVar33 + -0x130);\n          goto LAB_00055cec;\n        }" { (expression_statement "iVar21 = *(int *)((int)piVar33 + -0x130);" (assignment_expression "iVar21 = *(int *)((int)piVar33 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x130)" * (cast_expression "(int *)((int)piVar33 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00055cec;" goto statement_identifier ;) })) (do_statement "do {\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        } while (mVar15 + 1 == 0);" do (compound_statement "{\n          iVar21 = iVar21 + 1;\n          if (an == iVar21) goto LAB_00055f98;\n          mVar15 = pmVar9[1];\n          pmVar9 = pmVar9 + 1;\n          *pmVar9 = mVar15 + 1;\n        }" { (expression_statement "iVar21 = iVar21 + 1;" (assignment_expression "iVar21 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) (if_statement "if (an == iVar21) goto LAB_00055f98;" if (parenthesized_expression "(an == iVar21)" ( (binary_expression "an == iVar21" identifier == identifier) )) (goto_statement "goto LAB_00055f98;" goto statement_identifier ;)) (expression_statement "mVar15 = pmVar9[1];" (assignment_expression "mVar15 = pmVar9[1]" identifier = (subscript_expression "pmVar9[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar9 = mVar15 + 1;" (assignment_expression "*pmVar9 = mVar15 + 1" (pointer_expression "*pmVar9" * identifier) = (binary_expression "mVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar15 + 1 == 0)" ( (binary_expression "mVar15 + 1 == 0" (binary_expression "mVar15 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }" else (compound_statement "{\nLAB_00055f98:\n        iVar10 = iVar10 + 1;\n      }" { (labeled_statement "LAB_00055f98:\n        iVar10 = iVar10 + 1;" statement_identifier : (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;)) }))) })) })) (expression_statement "iVar21 = *(int *)((int)piVar33 + -0x130);" (assignment_expression "iVar21 = *(int *)((int)piVar33 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar33 + -0x130)" * (cast_expression "(int *)((int)piVar33 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0x130)" ( (binary_expression "(int)piVar33 + -0x130" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_00055cec:\n  if (iVar21 == 0) {\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }\n  else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }" statement_identifier : (if_statement "if (iVar21 == 0) {\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }\n  else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }" if (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);\n    iVar21 = -iVar21;\n  }" { (expression_statement "iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2);" (assignment_expression "iVar21 = (**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2)" identifier = (call_expression "(**(code **)(iVar28 + -0x7b2c))\n                       (pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2)" (parenthesized_expression "(**(code **)(iVar28 + -0x7b2c))" ( (pointer_expression "**(code **)(iVar28 + -0x7b2c)" * (pointer_expression "*(code **)(iVar28 + -0x7b2c)" * (cast_expression "(code **)(iVar28 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7b2c)" ( (binary_expression "iVar28 + -0x7b2c" identifier + number_literal) ))))) )) (argument_list "(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec),an * 2)" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "an * 2" identifier * number_literal) )))) ;) (expression_statement "iVar21 = -iVar21;" (assignment_expression "iVar21 = -iVar21" identifier = (unary_expression "-iVar21" - identifier)) ;) }) (else_clause "else {\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }" else (compound_statement "{\n    iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));\n  }" { (expression_statement "iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec));" (assignment_expression "iVar21 = (**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec))" identifier = (call_expression "(**(code **)(iVar28 + -0x7d0c))(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec))" (parenthesized_expression "(**(code **)(iVar28 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar28 + -0x7d0c)" * (pointer_expression "*(code **)(iVar28 + -0x7d0c)" * (cast_expression "(code **)(iVar28 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 + -0x7d0c)" ( (binary_expression "iVar28 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(pmVar17,pmVar17,*(undefined4 *)((int)piVar33 + -0xec))" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar33 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar33 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar33 + -0xec)" ( (binary_expression "(int)piVar33 + -0xec" (cast_expression "(int)piVar33" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })))) (expression_statement "uVar8 = iVar21 + iVar10;" (assignment_expression "uVar8 = iVar21 + iVar10" identifier = (binary_expression "iVar21 + iVar10" identifier + identifier)) ;) (expression_statement "uVar16 = uVar22 + *pp;" (assignment_expression "uVar16 = uVar22 + *pp" identifier = (binary_expression "uVar22 + *pp" identifier + (pointer_expression "*pp" * identifier))) ;) (expression_statement "*pp = uVar16;" (assignment_expression "*pp = uVar16" (pointer_expression "*pp" * identifier) = identifier) ;) (if_statement "if (uVar16 < uVar22) {\n    do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);\n  }" if (parenthesized_expression "(uVar16 < uVar22)" ( (binary_expression "uVar16 < uVar22" identifier < identifier) )) (compound_statement "{\n    do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);\n  }" { (do_statement "do {\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    } while (mVar15 + 1 == 0);" do (compound_statement "{\n      mVar15 = pp[1] + 1;\n      pp[1] = mVar15;\n      if (mVar15 != 0) break;\n      pp = pp + 2;\n      mVar15 = *pp;\n      *pp = mVar15 + 1;\n    }" { (expression_statement "mVar15 = pp[1] + 1;" (assignment_expression "mVar15 = pp[1] + 1" identifier = (binary_expression "pp[1] + 1" (subscript_expression "pp[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "pp[1] = mVar15;" (assignment_expression "pp[1] = mVar15" (subscript_expression "pp[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (mVar15 != 0) break;" if (parenthesized_expression "(mVar15 != 0)" ( (binary_expression "mVar15 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pp = pp + 2;" (assignment_expression "pp = pp + 2" identifier = (binary_expression "pp + 2" identifier + number_literal)) ;) (expression_statement "mVar15 = *pp;" (assignment_expression "mVar15 = *pp" identifier = (pointer_expression "*pp" * identifier)) ;) (expression_statement "*pp = mVar15 + 1;" (assignment_expression "*pp = mVar15 + 1" (pointer_expression "*pp" * identifier) = (binary_expression "mVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar15 + 1 == 0)" ( (binary_expression "mVar15 + 1 == 0" (binary_expression "mVar15 + 1" identifier + number_literal) == number_literal) )) ;) })) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (if_statement "if (uVar8 < 3) {\n    *puVar5 = uVar8 + uVar22;\n    if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }" if (parenthesized_expression "(uVar8 < 3)" ( (binary_expression "uVar8 < 3" identifier < number_literal) )) (compound_statement "{\n    *puVar5 = uVar8 + uVar22;\n    if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }\n  }" { (expression_statement "*puVar5 = uVar8 + uVar22;" (assignment_expression "*puVar5 = uVar8 + uVar22" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar8 + uVar22" identifier + identifier)) ;) (if_statement "if (uVar8 + uVar22 < uVar8) {\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }" if (parenthesized_expression "(uVar8 + uVar22 < uVar8)" ( (binary_expression "uVar8 + uVar22 < uVar8" (binary_expression "uVar8 + uVar22" identifier + identifier) < identifier) )) (compound_statement "{\n      do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);\n    }" { (do_statement "do {\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      } while (uVar22 + 1 == 0);" do (compound_statement "{\n        uVar22 = puVar5[1] + 1;\n        puVar5[1] = uVar22;\n        if (uVar22 != 0) {\n          return;\n        }\n        puVar5 = puVar5 + 2;\n        uVar22 = *puVar5;\n        *puVar5 = uVar22 + 1;\n      }" { (expression_statement "uVar22 = puVar5[1] + 1;" (assignment_expression "uVar22 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar22;" (assignment_expression "puVar5[1] = uVar22" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar22 != 0) {\n          return;\n        }" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar22 = *puVar5;" (assignment_expression "uVar22 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar22 + 1;" (assignment_expression "*puVar5 = uVar22 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 + 1 == 0)" ( (binary_expression "uVar22 + 1 == 0" (binary_expression "uVar22 + 1" identifier + number_literal) == number_literal) )) ;) })) }) (else_clause "else {\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }" else (compound_statement "{\n    while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *puVar5 = uVar22 - 1;\n      if (uVar22 != 0) break;\n      uVar22 = puVar5[1];\n      puVar5 = puVar5 + 1;\n    }" { (expression_statement "*puVar5 = uVar22 - 1;" (assignment_expression "*puVar5 = uVar22 - 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar22 - 1" identifier - number_literal)) ;) (if_statement "if (uVar22 != 0) break;" if (parenthesized_expression "(uVar22 != 0)" ( (binary_expression "uVar22 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar22 = puVar5[1];" (assignment_expression "uVar22 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit "void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}\n\n" (function_definition "void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "__gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" ( (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)) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "uint *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "uint *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined1 *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "uint *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "longlong lVar29;" type_identifier identifier ;) (declaration "int aiStack_50 [6];" primitive_type (array_declarator "aiStack_50 [6]" identifier [ number_literal ]) ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "piVar24 = aiStack_50;" (assignment_expression "piVar24 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar23 = aiStack_50;" (assignment_expression "piVar23 = aiStack_50" identifier = identifier) ;) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "((int)param_3 < 0x28)" ( (binary_expression "(int)param_3 < 0x28" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }" { (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();" (call_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)" ( (pointer_expression "*(code *)PTR___gmpn_sqrlo_basecase_000975a8" * (cast_expression "(code *)PTR___gmpn_sqrlo_basecase_000975a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" identifier = identifier) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) }) (else_clause "else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "unaff_s3 = (uint *)((int)param_3 * 8);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 * 8)" identifier = (cast_expression "(uint *)((int)param_3 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 8)" ( (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" if (parenthesized_expression "(unaff_s3 < (uint *)0x7f01)" ( (binary_expression "unaff_s3 < (uint *)0x7f01" identifier < (cast_expression "(uint *)0x7f01" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }" { (expression_statement "piVar23 = aiStack_50 + (int)param_3 * -2;" (assignment_expression "piVar23 = aiStack_50 + (int)param_3 * -2" identifier = (binary_expression "aiStack_50 + (int)param_3 * -2" identifier + (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);" (assignment_expression "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8)" identifier = (cast_expression "(uint *)(&stack0xffffffc8 + (int)param_3 * -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffc8 + (int)param_3 * -8)" ( (binary_expression "&stack0xffffffc8 + (int)param_3 * -8" (pointer_expression "&stack0xffffffc8" & identifier) + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) }) (else_clause "else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" else (compound_statement "{\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" { (expression_statement "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);" (assignment_expression "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,unaff_s3)" ( (pointer_expression "&local_30" & identifier) , identifier ))))) ;) }))) (expression_statement "unaff_s5 = (uint *)((int)param_3 * 4);" (assignment_expression "unaff_s5 = (uint *)((int)param_3 * 4)" identifier = (cast_expression "(uint *)((int)param_3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" if (parenthesized_expression "((int)param_3 < 0x2e00)" ( (binary_expression "(int)param_3 < 0x2e00" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }" { (expression_statement "unaff_s5 = unaff_s0 + (int)param_3;" (assignment_expression "unaff_s5 = unaff_s0 + (int)param_3" identifier = (binary_expression "unaff_s0 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" if (parenthesized_expression "((int)param_3 < 0x52)" ( (binary_expression "(int)param_3 < 0x52" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }" { (expression_statement "unaff_s3 = (uint *)((int)param_3 >> 1);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 >> 1)" identifier = (cast_expression "(uint *)((int)param_3 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 >> 1)" ( (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (labeled_statement "LAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);" statement_identifier : (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" { (labeled_statement "LAB_00055760:\n          uVar13 = *unaff_s0;" statement_identifier : (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;)) (if_statement "if (param_3 != (uint *)0x1) goto LAB_000556dc;" if (parenthesized_expression "(param_3 != (uint *)0x1)" ( (binary_expression "param_3 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000556dc;" goto statement_identifier ;)) (expression_statement "*param_1 = uVar13;" (assignment_expression "*param_1 = uVar13" (pointer_expression "*param_1" * identifier) = identifier) ;) })) (labeled_statement "joined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" statement_identifier : (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" if (parenthesized_expression "((int)unaff_s3 < 0x28)" ( (binary_expression "(int)unaff_s3 < 0x28" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" { (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120" identifier = (cast_expression "(code *)PTR___gmpn_mullo_basecase_00097120" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) }) (else_clause "else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" else (compound_statement "{\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" { (if_statement "if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" if (parenthesized_expression "((int)param_3 < 0x70)" ( (binary_expression "(int)param_3 < 0x70" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24)" identifier = (cast_expression "(uint *)((uint)((int)param_3 * 0xb) / 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)param_3 * 0xb) / 0x24)" ( (binary_expression "(uint)((int)param_3 * 0xb) / 0x24" (call_expression "(uint)((int)param_3 * 0xb)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_3 * 0xb)" ( (binary_expression "(int)param_3 * 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) / number_literal) )))) ;) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (labeled_statement "LAB_000556dc:\n          puVar5 = unaff_s0 + 1;" statement_identifier : (expression_statement "puVar5 = unaff_s0 + 1;" (assignment_expression "puVar5 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;)) (expression_statement "puVar11 = param_1;" (assignment_expression "puVar11 = param_1" identifier = identifier) ;) (do_statement "do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));" do (compound_statement "{\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          }" { (expression_statement "*puVar11 = uVar13;" (assignment_expression "*puVar11 = uVar13" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "puVar18 = puVar5 + 1;" (assignment_expression "puVar18 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" identifier = identifier) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6))" ( (binary_expression "puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6)" identifier != (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) ;) (expression_statement "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;" (assignment_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13" (pointer_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4))" * (cast_expression "(uint *)((int)param_1 + (int)(unaff_s6 + -4))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (int)(unaff_s6 + -4))" ( (binary_expression "(int)param_1 + (int)(unaff_s6 + -4)" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s6 + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s6 + -4)" ( (binary_expression "unaff_s6 + -4" identifier + number_literal) )))) )))) = identifier) ;) (goto_statement "goto joined_r0x0005570c;" goto statement_identifier ;) })) (if_statement "if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" if (parenthesized_expression "((int)param_3 < 0x204)" ( (binary_expression "(int)param_3 < 0x204" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" { (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28)" identifier = (cast_expression "(uint *)((uint)((int)param_3 * 9) / 0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)param_3 * 9) / 0x28)" ( (binary_expression "(uint)((int)param_3 * 9) / 0x28" (call_expression "(uint)((int)param_3 * 9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)param_3 * 9)" ( (binary_expression "(int)param_3 * 9" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) / number_literal) )))) ;) (goto_statement "goto LAB_000555e4;" goto statement_identifier ;) })) (expression_statement "unaff_s3 = (uint *)((uint)param_3 / 10);" (assignment_expression "unaff_s3 = (uint *)((uint)param_3 / 10)" identifier = (cast_expression "(uint *)((uint)param_3 / 10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_3 / 10)" ( (binary_expression "(uint)param_3 / 10" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) / number_literal) )))) ;) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" identifier = (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 - (int)unaff_s3)" ( (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" identifier = (cast_expression "(undefined1 *)((int)param_3 * 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4)" ( (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" identifier = (binary_expression "param_2 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" identifier = (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (param_3 != (uint *)0x0) goto LAB_00055760;" if (parenthesized_expression "(param_3 != (uint *)0x0)" ( (binary_expression "param_3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00055760;" goto statement_identifier ;)) }))) (expression_statement "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);" (call_expression "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(unaff_s5,puVar17,param_2,unaff_s3)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "param_1 = (uint *)((int)param_1 + (int)unaff_s6);" (assignment_expression "param_1 = (uint *)((int)param_1 + (int)unaff_s6)" identifier = (cast_expression "(uint *)((int)param_1 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + (int)unaff_s6)" ( (binary_expression "(int)param_1 + (int)unaff_s6" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);" (call_expression "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009756c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009756c" * (cast_expression "(code *)PTR___gmpn_lshift_0009756c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,unaff_s5,unaff_s3,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);" (assignment_expression "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6)" identifier = (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" ( (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" identifier = identifier) ;) (expression_statement "param_4 = unaff_s3;" (assignment_expression "param_4 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_add_n_00097334)(param_1);" (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" { (expression_statement "*(uint **)((int)piVar23 + 0x10) = param_3;" (assignment_expression "*(uint **)((int)piVar23 + 0x10) = param_3" (pointer_expression "*(uint **)((int)piVar23 + 0x10)" * (cast_expression "(uint **)((int)piVar23 + 0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar23 + 0x10)" ( (binary_expression "(int)piVar23 + 0x10" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);" (call_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)" ( (pointer_expression "*(code *)PTR___gmpn_nussbaumer_mul_000972bc" * (cast_expression "(code *)PTR___gmpn_nussbaumer_mul_000972bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s0,param_2,param_3,param_2)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = (int)param_3 + -1;" (assignment_expression "iVar12 = (int)param_3 + -1" identifier = (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "puVar11 = (uint *)*unaff_s0;" (assignment_expression "puVar11 = (uint *)*unaff_s0" identifier = (cast_expression "(uint *)*unaff_s0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s0" * identifier))) ;) (expression_statement "puVar18 = param_1;" (assignment_expression "puVar18 = param_1" identifier = identifier) ;) (expression_statement "puVar17 = unaff_s0;" (assignment_expression "puVar17 = unaff_s0" identifier = identifier) ;) (do_statement "do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);" do (compound_statement "{\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      }" { (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = (uint)puVar11;" (assignment_expression "*puVar18 = (uint)puVar11" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (expression_statement "puVar11 = (uint *)*puVar17;" (assignment_expression "puVar11 = (uint *)*puVar17" identifier = (cast_expression "(uint *)*puVar17" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) (expression_statement "param_3 = param_1 + (int)param_3;" (assignment_expression "param_3 = param_1 + (int)param_3" identifier = (binary_expression "param_1 + (int)param_3" identifier + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "param_3[-1] = (uint)puVar11;" (assignment_expression "param_3[-1] = (uint)puVar11" (subscript_expression "param_3[-1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "puVar17 = local_30;" (assignment_expression "puVar17 = local_30" identifier = identifier) ;) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" identifier = identifier) ;) (expression_statement "unaff_s7 = param_2;" (assignment_expression "unaff_s7 = param_2" identifier = identifier) ;) (expression_statement "piVar24 = piVar23;" (assignment_expression "piVar24 = piVar23" identifier = identifier) ;) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (uint *)0x0)" ( (binary_expression "local_30 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar2)" ( (binary_expression "local_2c == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar27 = 0x557c8;" (assignment_expression "uVar27 = 0x557c8" identifier = number_literal) ;) (expression_statement "puVar20 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar20 = 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 "lVar29 = CONCAT44(puVar17,puVar5);" (assignment_expression "lVar29 = CONCAT44(puVar17,puVar5)" identifier = (call_expression "CONCAT44(puVar17,puVar5)" identifier (argument_list "(puVar17,puVar5)" ( identifier , identifier )))) ;) (expression_statement "puVar22 = puVar20 + 0x49870;" (assignment_expression "puVar22 = puVar20 + 0x49870" identifier = (binary_expression "puVar20 + 0x49870" identifier + number_literal)) ;) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + 0x41d70);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + 0x41d70)" identifier = (pointer_expression "*(undefined4 **)(puVar20 + 0x41d70)" * (cast_expression "(undefined4 **)(puVar20 + 0x41d70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x41d70)" ( (binary_expression "puVar20 + 0x41d70" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*(undefined **)((int)piVar24 + -0xf0) = puVar22;" (assignment_expression "*(undefined **)((int)piVar24 + -0xf0) = puVar22" (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" * (cast_expression "(undefined **)((int)piVar24 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3;" (assignment_expression "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3" (pointer_expression "*(undefined4 **)((int)piVar24 + -0xe0)" * (cast_expression "(undefined4 **)((int)piVar24 + -0xe0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe0)" ( (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)((int)piVar24 + -0x20) = puVar2;" (assignment_expression "*(undefined **)((int)piVar24 + -0x20) = puVar2" (pointer_expression "*(undefined **)((int)piVar24 + -0x20)" * (cast_expression "(undefined **)((int)piVar24 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x20)" ( (binary_expression "(int)piVar24 + -0x20" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x24) = param_3;" (assignment_expression "*(uint **)((int)piVar24 + -0x24) = param_3" (pointer_expression "*(uint **)((int)piVar24 + -0x24)" * (cast_expression "(uint **)((int)piVar24 + -0x24)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x24)" ( (binary_expression "(int)piVar24 + -0x24" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)((int)piVar24 + -0x28) = unaff_s0" (pointer_expression "*(uint **)((int)piVar24 + -0x28)" * (cast_expression "(uint **)((int)piVar24 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x28)" ( (binary_expression "(int)piVar24 + -0x28" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -4) = uVar27;" (assignment_expression "*(undefined4 *)((int)piVar24 + -4) = uVar27" (pointer_expression "*(undefined4 *)((int)piVar24 + -4)" * (cast_expression "(undefined4 *)((int)piVar24 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -4)" ( (binary_expression "(int)piVar24 + -4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int **)((int)piVar24 + -8) = aiStack_50;" (assignment_expression "*(int **)((int)piVar24 + -8) = aiStack_50" (pointer_expression "*(int **)((int)piVar24 + -8)" * (cast_expression "(int **)((int)piVar24 + -8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -8)" ( (binary_expression "(int)piVar24 + -8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0xc) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0xc) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0xc)" * (cast_expression "(uint **)((int)piVar24 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xc)" ( (binary_expression "(int)piVar24 + -0xc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x10)" * (cast_expression "(undefined1 **)((int)piVar24 + -0x10)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x10)" ( (binary_expression "(int)piVar24 + -0x10" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x14) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x14) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x14)" * (cast_expression "(uint **)((int)piVar24 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x14)" ( (binary_expression "(int)piVar24 + -0x14" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x18) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x18) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x18)" * (cast_expression "(uint **)((int)piVar24 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x18)" ( (binary_expression "(int)piVar24 + -0x18" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x1c)" * (cast_expression "(uint **)((int)piVar24 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x1c)" ( (binary_expression "(int)piVar24 + -0x1c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x2c)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x2c)" ( (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*puVar3" * identifier)) ;) (if_statement "if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" if (parenthesized_expression "((int)puVar11 < 3)" ( (binary_expression "(int)puVar11 < 3" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }" { (expression_statement "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "puVar14 = puVar11;" (assignment_expression "puVar14 = puVar11" identifier = identifier) ;) (if_statement "if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" if (parenthesized_expression "(puVar11 == (uint *)0x1)" ( (binary_expression "puVar11 == (uint *)0x1" identifier == (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar17 = uVar13 * uVar13;\n    }" { (expression_statement "*puVar17 = uVar13 * uVar13;" (assignment_expression "*puVar17 = uVar13 * uVar13" (pointer_expression "*puVar17" * identifier) = (binary_expression "uVar13 * uVar13" identifier * identifier)) ;) }) (else_clause "else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" else (compound_statement "{\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" { (expression_statement "*puVar17 = (uint)lVar1;" (assignment_expression "*puVar17 = (uint)lVar1" (pointer_expression "*puVar17" * identifier) = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = (binary_expression "uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (binary_expression "uVar13 * puVar5[1] * 2" (binary_expression "uVar13 * puVar5[1]" identifier * (subscript_expression "puVar5[1]" identifier [ number_literal ])) * number_literal) + (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))))) ;) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" identifier = identifier) ;) (expression_statement "lVar29 = lVar1;" (assignment_expression "lVar29 = lVar1" identifier = identifier) ;) }))) }) (else_clause "else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" else (compound_statement "{\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" { (expression_statement "unaff_s4 = (uint *)((int)puVar11 + -1);" (assignment_expression "unaff_s4 = (uint *)((int)puVar11 + -1)" identifier = (cast_expression "(uint *)((int)puVar11 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + -1)" ( (binary_expression "(int)puVar11 + -1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pcVar21 = *(code **)(puVar20 + 0x418d4);" (assignment_expression "pcVar21 = *(code **)(puVar20 + 0x418d4)" identifier = (pointer_expression "*(code **)(puVar20 + 0x418d4)" * (cast_expression "(code **)(puVar20 + 0x418d4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x418d4)" ( (binary_expression "puVar20 + 0x418d4" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)((int)piVar24 + -0xdc) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0xdc) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" * (cast_expression "(uint **)((int)piVar24 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;" (assignment_expression "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" * (cast_expression "(int *)((int)piVar24 + -0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd8)" ( (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4" (pointer_expression "*(int *)((int)piVar24 + -0xcc)" * (cast_expression "(int *)((int)piVar24 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xcc)" ( (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)unaff_s4 * 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);" (assignment_expression "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200)" (pointer_expression "*(undefined1 **)((int)piVar24 + -0xd4)" * (cast_expression "(undefined1 **)((int)piVar24 + -0xd4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xd4)" ( (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1 *)((int)piVar24 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -200)" ( (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);" (assignment_expression "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4])" identifier = (cast_expression "(uint *)(uVar13 * puVar5[(int)unaff_s4])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 * puVar5[(int)unaff_s4])" ( (binary_expression "uVar13 * puVar5[(int)unaff_s4]" identifier * (subscript_expression "puVar5[(int)unaff_s4]" identifier [ (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);" (assignment_expression "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" identifier = (call_expression "(*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" ( (cast_expression "(undefined1 *)((int)piVar24 + -200)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -200)" ( (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , (binary_expression "puVar5 + 1" identifier + number_literal) , (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier )))) ;) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "piVar25 = (int *)((int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)unaff_s3 + iVar12)" identifier = (cast_expression "(int *)((int)unaff_s3 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + iVar12)" ( (binary_expression "(int)unaff_s3 + iVar12" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" if (parenthesized_expression "((int)unaff_s4 < 4)" ( (binary_expression "(int)unaff_s4 < 4" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar12 = 1;\n    }" { (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" else (compound_statement "{\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" { (expression_statement "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;" (assignment_expression "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" * (cast_expression "(uint *)((int)piVar24 + -0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd0)" ( (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "unaff_s4 = puVar5 + (int)puVar11;" (assignment_expression "unaff_s4 = puVar5 + (int)puVar11" identifier = (binary_expression "puVar5 + (int)puVar11" identifier + (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);" (assignment_expression "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0)" identifier = (cast_expression "(undefined1 *)((int)piVar24 + -0xc0)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xc0)" ( (binary_expression "(int)piVar24 + -0xc0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));" (assignment_expression "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (pointer_expression "*(uint *)((int)piVar24 + -0xe4)" * (cast_expression "(uint *)((int)piVar24 + -0xe4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xe4)" ( (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-6 - ((int)puVar11 - 5U & 0xfffffffe))" ( (binary_expression "-6 - ((int)puVar11 - 5U & 0xfffffffe)" number_literal - (parenthesized_expression "((int)puVar11 - 5U & 0xfffffffe)" ( (binary_expression "(int)puVar11 - 5U & 0xfffffffe" (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) & number_literal) ))) )))) ;) (expression_statement "unaff_s7 = puVar5 + 2;" (assignment_expression "unaff_s7 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar11 + -1;" (assignment_expression "puVar18 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (do_statement "do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);" do (compound_statement "{\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      }" { (expression_statement "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);" (assignment_expression "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2])" identifier = (cast_expression "(uint *)(unaff_s7[-1] * unaff_s4[-2])" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7[-1] * unaff_s4[-2])" ( (binary_expression "unaff_s7[-1] * unaff_s4[-2]" (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) * (subscript_expression "unaff_s4[-2]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);" (assignment_expression "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" identifier = (call_expression "(**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" (parenthesized_expression "(**(code **)(iVar15 + -0x7f70))" ( (pointer_expression "**(code **)(iVar15 + -0x7f70)" * (pointer_expression "*(code **)(iVar15 + -0x7f70)" * (cast_expression "(code **)(iVar15 + -0x7f70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7f70)" ( (binary_expression "iVar15 + -0x7f70" identifier + number_literal) ))))) )) (argument_list "(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" ( identifier , identifier , identifier , (subscript_expression "unaff_s7[-1]" identifier [ number_literal ]) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar18 + -2);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -2)" identifier = (cast_expression "(uint *)((int)puVar18 + -2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + -2)" ( (binary_expression "(int)puVar18 + -2" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" identifier = (binary_expression "unaff_s4 + -1" identifier + number_literal)) ;) (expression_statement "unaff_s6 = unaff_s6 + 8;" (assignment_expression "unaff_s6 = unaff_s6 + 8" identifier = (binary_expression "unaff_s6 + 8" identifier + number_literal)) ;) (expression_statement "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12)" identifier = (cast_expression "(int *)((int)piVar25 + (int)unaff_s3 + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar25 + (int)unaff_s3 + iVar12)" ( (binary_expression "(int)piVar25 + (int)unaff_s3 + iVar12" (binary_expression "(int)piVar25 + (int)unaff_s3" (cast_expression "(int)piVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) )))) ;) (expression_statement "unaff_s7 = unaff_s7 + 1;" (assignment_expression "unaff_s7 = unaff_s7 + 1" identifier = (binary_expression "unaff_s7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)((int)piVar24 + -0xe4) != puVar18)" ( (binary_expression "*(uint **)((int)piVar24 + -0xe4) != puVar18" (pointer_expression "*(uint **)((int)piVar24 + -0xe4)" * (cast_expression "(uint **)((int)piVar24 + -0xe4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe4)" ( (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != identifier) )) ;) (expression_statement "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;" (assignment_expression "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" identifier = (binary_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1)" ( (binary_expression "*(uint *)((int)piVar24 + -0xd0) >> 1" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" * (cast_expression "(uint *)((int)piVar24 + -0xd0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd0)" ( (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) )) + number_literal)) ;) }))) (if_statement "if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" if (parenthesized_expression "((*(uint *)((int)piVar24 + -0xdc) & 1) != 0)" ( (binary_expression "(*(uint *)((int)piVar24 + -0xdc) & 1) != 0" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xdc) & 1)" ( (binary_expression "*(uint *)((int)piVar24 + -0xdc) & 1" (pointer_expression "*(uint *)((int)piVar24 + -0xdc)" * (cast_expression "(uint *)((int)piVar24 + -0xdc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" { (expression_statement "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);" (assignment_expression "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" identifier = (cast_expression "(int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" ( (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25" (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12]" (subscript_expression "(puVar5 + iVar12)[1]" (parenthesized_expression "(puVar5 + iVar12)" ( (binary_expression "puVar5 + iVar12" identifier + identifier) )) [ number_literal ]) * (subscript_expression "puVar5[iVar12]" identifier [ identifier ])) + (cast_expression "(int)piVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);" (assignment_expression "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" identifier = (cast_expression "(uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" ( (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28" (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "*(int *)((int)piVar24 + -0xd8) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" * (cast_expression "(int *)((int)piVar24 + -0xd8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xd8)" ( (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) + number_literal) )))) ;) (expression_statement "unaff_s5[-0x28] = (uint)piVar25;" (assignment_expression "unaff_s5[-0x28] = (uint)piVar25" (subscript_expression "unaff_s5[-0x28]" identifier [ number_literal ]) = (cast_expression "(uint)piVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" identifier = identifier) ;) (expression_statement "puVar14 = puVar5;" (assignment_expression "puVar14 = puVar5" identifier = identifier) ;) (do_statement "do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);" do (compound_statement "{\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    }" { (expression_statement "uVar13 = *puVar14;" (assignment_expression "uVar13 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar9 = puVar18 + 2;" (assignment_expression "puVar9 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "*puVar18 = (uint)lVar29;" (assignment_expression "*puVar18 = (uint)lVar29" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)lVar29" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);" (assignment_expression "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20)" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (call_expression "(uint)((ulonglong)lVar29 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar29 >> 0x20)" ( (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 + ((int)puVar11 >> 1) * 2 != puVar9)" ( (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2 != puVar9" (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2" identifier + (binary_expression "((int)puVar11 >> 1) * 2" (parenthesized_expression "((int)puVar11 >> 1)" ( (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * number_literal)) != identifier) )) ;) (if_statement "if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" if (parenthesized_expression "(((uint)puVar11 & 1) != 0)" ( (binary_expression "((uint)puVar11 & 1) != 0" (parenthesized_expression "((uint)puVar11 & 1)" ( (binary_expression "(uint)puVar11 & 1" (cast_expression "(uint)puVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" { (expression_statement "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));" (assignment_expression "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" identifier = (cast_expression "(int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" ( (binary_expression "(int)puVar17 + *(int *)((int)piVar24 + -0xcc)" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)((int)piVar24 + -0xcc)" * (cast_expression "(int *)((int)piVar24 + -0xcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xcc)" ( (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )))) ;) (expression_statement "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];" (assignment_expression "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (pointer_expression "*piVar25" * identifier) = (binary_expression "puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (subscript_expression "puVar5[(int)puVar11 >> 1]" identifier [ (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]) * (subscript_expression "puVar5[(int)puVar11 >> 1]" identifier [ (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ]))) ;) })) (expression_statement "puVar14 = *(uint **)((int)piVar24 + -0xd4);" (assignment_expression "puVar14 = *(uint **)((int)piVar24 + -0xd4)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -0xd4)" * (cast_expression "(uint **)((int)piVar24 + -0xd4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xd4)" ( (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = *(uint **)((int)piVar24 + -0xdc);" (assignment_expression "puVar5 = *(uint **)((int)piVar24 + -0xdc)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" * (cast_expression "(uint **)((int)piVar24 + -0xdc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xdc)" ( (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);" (call_expression "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ad4))" ( (pointer_expression "**(code **)(iVar15 + -0x7ad4)" * (pointer_expression "*(code **)(iVar15 + -0x7ad4)" * (cast_expression "(code **)(iVar15 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ad4)" ( (binary_expression "iVar15 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar14,puVar14,puVar5,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = puVar17 + 1;" (assignment_expression "puVar9 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" identifier = identifier) ;) (expression_statement "puVar11 = puVar14;" (assignment_expression "puVar11 = puVar14" identifier = identifier) ;) (expression_statement "param_4 = puVar5;" (assignment_expression "param_4 = puVar5" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();" (call_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))()" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar24 + -0xf0) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "lVar29 = CONCAT44(puVar9,puVar18);" (assignment_expression "lVar29 = CONCAT44(puVar9,puVar18)" identifier = (call_expression "CONCAT44(puVar9,puVar18)" identifier (argument_list "(puVar9,puVar18)" ( identifier , identifier )))) ;) (expression_statement "puVar22 = *(undefined **)((int)piVar24 + -0xf0);" (assignment_expression "puVar22 = *(undefined **)((int)piVar24 + -0xf0)" identifier = (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" * (cast_expression "(undefined **)((int)piVar24 + -0xf0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }" if (parenthesized_expression "(*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0))" ( (binary_expression "*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)" (pointer_expression "*(int *)((int)piVar24 + -0x2c)" * (cast_expression "(int *)((int)piVar24 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x2c)" ( (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "**(int **)((int)piVar24 + -0xe0)" * (pointer_expression "*(int **)((int)piVar24 + -0xe0)" * (cast_expression "(int **)((int)piVar24 + -0xe0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0xe0)" ( (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar21 = *(code **)(puVar22 + -0x7b70);" (assignment_expression "pcVar21 = *(code **)(puVar22 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar22 + -0x7b70)" * (cast_expression "(code **)(puVar22 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x7b70)" ( (binary_expression "puVar22 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar28 = __gmpn_toom22_mul;" (assignment_expression "pcVar28 = __gmpn_toom22_mul" identifier = identifier) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar29 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar29 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar29 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar29 >> 0x20)" ( (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(uint **)((int)piVar24 + -0x128) = puVar14;" (assignment_expression "*(uint **)((int)piVar24 + -0x128) = puVar14" (pointer_expression "*(uint **)((int)piVar24 + -0x128)" * (cast_expression "(uint **)((int)piVar24 + -0x128)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x128)" ( (binary_expression "(int)piVar24 + -0x128" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = (int)puVar11 >> 1;" (assignment_expression "iVar15 = (int)puVar11 >> 1" identifier = (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "*(int **)((int)piVar24 + -0x108) = piVar25;" (assignment_expression "*(int **)((int)piVar24 + -0x108) = piVar25" (pointer_expression "*(int **)((int)piVar24 + -0x108)" * (cast_expression "(int **)((int)piVar24 + -0x108)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x108)" ( (binary_expression "(int)piVar24 + -0x108" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar26 = (int)puVar11 - iVar15;" (assignment_expression "iVar26 = (int)puVar11 - iVar15" identifier = (binary_expression "(int)puVar11 - iVar15" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "*(uint **)((int)piVar24 + -0x114) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x114) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x114)" * (cast_expression "(uint **)((int)piVar24 + -0x114)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x114)" ( (binary_expression "(int)piVar24 + -0x114" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x124) = puVar5;" (assignment_expression "*(uint **)((int)piVar24 + -0x124) = puVar5" (pointer_expression "*(uint **)((int)piVar24 + -0x124)" * (cast_expression "(uint **)((int)piVar24 + -0x124)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x124)" ( (binary_expression "(int)piVar24 + -0x124" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;" (assignment_expression "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0" (pointer_expression "*(code **)((int)piVar24 + -0x140)" * (cast_expression "(code **)((int)piVar24 + -0x140)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "pcVar21 + 0x495d0" identifier + number_literal)) ;) (expression_statement "*(uint **)((int)piVar24 + -0x118) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x118) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x118)" * (cast_expression "(uint **)((int)piVar24 + -0x118)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x118)" ( (binary_expression "(int)piVar24 + -0x118" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x11c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x11c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x11c)" * (cast_expression "(uint **)((int)piVar24 + -0x11c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x11c)" ( (binary_expression "(int)piVar24 + -0x11c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)((int)piVar24 + -0x120) = puVar17;" (assignment_expression "*(uint **)((int)piVar24 + -0x120) = puVar17" (pointer_expression "*(uint **)((int)piVar24 + -0x120)" * (cast_expression "(uint **)((int)piVar24 + -0x120)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x120)" ( (binary_expression "(int)piVar24 + -0x120" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(code **)((int)piVar24 + -0x104) = pcVar28;" (assignment_expression "*(code **)((int)piVar24 + -0x104) = pcVar28" (pointer_expression "*(code **)((int)piVar24 + -0x104)" * (cast_expression "(code **)((int)piVar24 + -0x104)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x104)" ( (binary_expression "(int)piVar24 + -0x104" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "puVar17 = (uint *)(iVar12 + iVar26 * 4);" (assignment_expression "puVar17 = (uint *)(iVar12 + iVar26 * 4)" identifier = (cast_expression "(uint *)(iVar12 + iVar26 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar26 * 4)" ( (binary_expression "iVar12 + iVar26 * 4" identifier + (binary_expression "iVar26 * 4" identifier * number_literal)) )))) ;) (expression_statement "*(uint **)((int)piVar24 + -0x10c) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0x10c) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0x10c)" * (cast_expression "(uint **)((int)piVar24 + -0x10c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x10c)" ( (binary_expression "(int)piVar24 + -0x10c" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x110)" * (cast_expression "(undefined1 **)((int)piVar24 + -0x110)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -0x110)" ( (binary_expression "(int)piVar24 + -0x110" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0xfc) = (int)lVar29;" (assignment_expression "*(int *)((int)piVar24 + -0xfc) = (int)lVar29" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(int)lVar29" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4" (pointer_expression "*(int *)((int)piVar24 + -0x134)" * (cast_expression "(int *)((int)piVar24 + -0x134)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "(int)lVar29 + iVar26 * 4" (cast_expression "(int)lVar29" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar26 * 4" identifier * number_literal))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26" identifier = (binary_expression "*(int *)((int)piVar24 + -0xf0) - iVar26" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" * (cast_expression "(int *)((int)piVar24 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xf0)" ( (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - identifier)) ;) (if_statement "if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" if (parenthesized_expression "(iVar15 == iVar26)" ( (binary_expression "iVar15 == iVar26" identifier == identifier) )) (compound_statement "{\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "(iVar15 + -1) * 4" (parenthesized_expression "(iVar15 + -1)" ( (binary_expression "iVar15 + -1" identifier + number_literal) )) * number_literal)) )))) ;) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" identifier = identifier) ;) (do_statement "do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < 0) goto LAB_00055eb0;" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055eb0;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" if (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" ( (binary_expression "uVar13 <= puVar5[iVar26 + 1]" identifier <= (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) (compound_statement "{\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" { (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) (labeled_statement "LAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" statement_identifier : (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar26 != iVar16) goto LAB_00055b5c;" if (parenthesized_expression "(iVar26 != iVar16)" ( (binary_expression "iVar26 != iVar16" identifier != identifier) )) (goto_statement "goto LAB_00055b5c;" goto statement_identifier ;)) (labeled_statement "LAB_00055ed4:\n    puVar11 = param_4 + iVar26;" statement_identifier : (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" identifier = (binary_expression "param_4 + iVar26" identifier + identifier)) ;)) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" identifier = (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar26;" (assignment_expression "iVar4 = iVar26" identifier = identifier) ;) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar4 < 0) goto LAB_00055f0c;" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055f0c;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" ( (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }" { (labeled_statement "LAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;" statement_identifier : (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;)) (expression_statement "(*pcVar21)(puVar17,param_4,puVar11,iVar26);" (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar26)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,param_4,puVar11,iVar26)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" { (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar26);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar26)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,puVar11,param_4,iVar26)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }) (else_clause "else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" else (compound_statement "{\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" { (expression_statement "iVar4 = iVar15 * 4;" (assignment_expression "iVar4 = iVar15 * 4" identifier = (binary_expression "iVar15 * 4" identifier * number_literal)) ;) (expression_statement "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);" (assignment_expression "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" identifier = (pointer_expression "*(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" * (cast_expression "(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + identifier) ))))) ;) (if_statement "if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }" { (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" identifier = (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" ( (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4 + -4" (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" * (cast_expression "(int *)((int)piVar24 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + identifier) + number_literal) )))) ;) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" identifier = identifier) ;) (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      }" { (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (if_statement "if (iVar8 < 0) goto LAB_00055b2c;" if (parenthesized_expression "(iVar8 < 0)" ( (binary_expression "iVar8 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b2c;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" if (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" ( (binary_expression "uVar13 <= puVar5[iVar26 + 1]" identifier <= (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) (compound_statement "{\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" { (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar12 + iVar4) = 0;" (assignment_expression "*(int *)(iVar12 + iVar4) = 0" (pointer_expression "*(int *)(iVar12 + iVar4)" * (cast_expression "(int *)(iVar12 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar4)" ( (binary_expression "iVar12 + iVar4" identifier + identifier) )))) = number_literal) ;) (goto_statement "goto LAB_00055b54;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" else (compound_statement "{\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" { (labeled_statement "LAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);" statement_identifier : (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" identifier = (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" * (cast_expression "(code **)(pcVar21 + 0x41aa4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x41aa4)" ( (binary_expression "pcVar21 + 0x41aa4" identifier + number_literal) ))))) ;)) }))) (expression_statement "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);" (assignment_expression "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" identifier = (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier )))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(iVar12 + iVar4) = iVar19 - iVar6;" (assignment_expression "*(int *)(iVar12 + iVar4) = iVar19 - iVar6" (pointer_expression "*(int *)(iVar12 + iVar4)" * (cast_expression "(int *)(iVar12 + iVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + iVar4)" ( (binary_expression "iVar12 + iVar4" identifier + identifier) )))) = (binary_expression "iVar19 - iVar6" identifier - identifier)) ;) (labeled_statement "LAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;" statement_identifier : (if_statement "if (iVar26 == iVar16) goto LAB_00055ed4;" if (parenthesized_expression "(iVar26 == iVar16)" ( (binary_expression "iVar26 == iVar16" identifier == identifier) )) (goto_statement "goto LAB_00055ed4;" goto statement_identifier ;))) (labeled_statement "LAB_00055b5c:\n    puVar11 = param_4 + iVar26;" statement_identifier : (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" identifier = (binary_expression "param_4 + iVar26" identifier + identifier)) ;)) (expression_statement "iVar19 = iVar26 - iVar16;" (assignment_expression "iVar19 = iVar26 - iVar16" identifier = (binary_expression "iVar26 - iVar16" identifier - identifier)) ;) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" identifier = (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar19;" (assignment_expression "iVar4 = iVar19" identifier = identifier) ;) (do_statement "do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);" do (compound_statement "{\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    }" { (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) (if_statement "if (uVar13 != 0) goto LAB_00055b90;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar5 = param_4 + iVar16 + -1;" (assignment_expression "puVar5 = param_4 + iVar16 + -1" identifier = (binary_expression "param_4 + iVar16 + -1" (binary_expression "param_4 + iVar16" identifier + identifier) + number_literal)) ;) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" identifier = identifier) ;) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" do (compound_statement "{\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" { (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (if_statement "if (iVar4 < 0) goto LAB_00055b90;" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00055b90;" goto statement_identifier ;)) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" identifier = (binary_expression "puVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" ( (binary_expression "uVar13 == puVar5[iVar26 + 1]" identifier == (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ])) )) ;) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" if (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" ( (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" identifier [ (binary_expression "iVar26 + 1" identifier + number_literal) ]) < identifier) )) (compound_statement "{\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }" { (labeled_statement "LAB_00055b90:\n      iVar4 = 0;" statement_identifier : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;)) (if_statement "if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7b2c)" * (cast_expression "(code **)(iVar8 + -0x7b2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7b2c)" ( (binary_expression "iVar8 + -0x7b2c" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);" (assignment_expression "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16)" identifier = (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar16)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,param_4,puVar11,iVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" identifier = identifier) ;) (if_statement "if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" { (expression_statement "puVar5 = param_4 + iVar16;" (assignment_expression "puVar5 = param_4 + iVar16" identifier = (binary_expression "param_4 + iVar16" identifier + identifier)) ;) (if_statement "if (iVar26 <= iVar16) goto LAB_00055bc8;" if (parenthesized_expression "(iVar26 <= iVar16)" ( (binary_expression "iVar26 <= iVar16" identifier <= identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "puVar18 = puVar17 + iVar16;" (assignment_expression "puVar18 = puVar17 + iVar16" identifier = (binary_expression "puVar17 + iVar16" identifier + identifier)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (while_statement "while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" while (parenthesized_expression "(iVar4 = iVar4 + 1, uVar13 == 0)" ( (comma_expression "iVar4 = iVar4 + 1, uVar13 == 0" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) , (binary_expression "uVar13 == 0" identifier == number_literal)) )) (compound_statement "{\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (if_statement "if (iVar26 == iVar4) goto LAB_00055bc8;" if (parenthesized_expression "(iVar26 == iVar4)" ( (binary_expression "iVar26 == iVar4" identifier == identifier) )) (goto_statement "goto LAB_00055bc8;" goto statement_identifier ;)) (expression_statement "uVar13 = puVar5[1];" (assignment_expression "uVar13 = puVar5[1]" identifier = (subscript_expression "puVar5[1]" identifier [ number_literal ])) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) })) })) })) (if_statement "if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" if (parenthesized_expression "((puVar17 != param_4) && (iVar4 < iVar26))" ( (binary_expression "(puVar17 != param_4) && (iVar4 < iVar26)" (parenthesized_expression "(puVar17 != param_4)" ( (binary_expression "puVar17 != param_4" identifier != identifier) )) && (parenthesized_expression "(iVar4 < iVar26)" ( (binary_expression "iVar4 < iVar26" identifier < identifier) ))) )) (compound_statement "{\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" { (expression_statement "puVar18 = param_4 + iVar4;" (assignment_expression "puVar18 = param_4 + iVar4" identifier = (binary_expression "param_4 + iVar4" identifier + identifier)) ;) (expression_statement "puVar5 = puVar17 + iVar4;" (assignment_expression "puVar5 = puVar17 + iVar4" identifier = (binary_expression "puVar17 + iVar4" identifier + identifier)) ;) (do_statement "do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);" do (compound_statement "{\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        }" { (expression_statement "uVar13 = *puVar18;" (assignment_expression "uVar13 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar13;" (assignment_expression "*puVar5 = uVar13" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != puVar11)" ( (binary_expression "puVar18 != puVar11" identifier != identifier) )) ;) })) }) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" else (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" { (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar16);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar16)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar17,puVar11,param_4,iVar16)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" identifier = (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar5 = puVar17 + iVar16;" (assignment_expression "puVar5 = puVar17 + iVar16" identifier = (binary_expression "puVar17 + iVar16" identifier + identifier)) ;) (do_statement "do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);" do (compound_statement "{\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" { (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) ;) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" * (cast_expression "(uint *)((int)piVar24 + -0x130)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ^ number_literal)) ;) }))) }))) (labeled_statement "LAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;" statement_identifier : (expression_statement "*(int *)((int)piVar24 + -300) = iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -300) = iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -300)" * (cast_expression "(int *)((int)piVar24 + -300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "iVar26 * 8" identifier * number_literal)) ;)) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" * (cast_expression "(uint **)((int)piVar24 + -300)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" if (parenthesized_expression "(0x13 < iVar26)" ( (binary_expression "0x13 < iVar26" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" { (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" identifier (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" ( (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" identifier = (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" * (cast_expression "(undefined4 *)((int)piVar24 + -300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" else (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" ( (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" identifier = (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" * (cast_expression "(undefined4 *)((int)piVar24 + -300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -300)" ( (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "puVar5 = puVar17 + iVar26;" (assignment_expression "puVar5 = puVar17 + iVar26" identifier = (binary_expression "puVar17 + iVar26" identifier + identifier)) ;) (if_statement "if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" if (parenthesized_expression "(iVar16 < iVar15)" ( (binary_expression "iVar16 < iVar15" identifier < identifier) )) (compound_statement "{\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }" { (if_statement "if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" if (parenthesized_expression "(iVar16 < 0x14)" ( (binary_expression "iVar16 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (labeled_statement "LAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" statement_identifier : (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" else (compound_statement "{\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" { (if_statement "if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" if (parenthesized_expression "(iVar15 << 2 < iVar16 * 5)" ( (binary_expression "iVar15 << 2 < iVar16 * 5" (binary_expression "iVar15 << 2" identifier << number_literal) < (binary_expression "iVar16 * 5" identifier * number_literal)) )) (compound_statement "{\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" { (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055ff8;" goto statement_identifier ;) })) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7c88);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7c88)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7c88)" * (cast_expression "(code **)(iVar8 + -0x7c88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7c88)" ( (binary_expression "iVar8 + -0x7c88" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) }) (else_clause "else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" else (compound_statement "{\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (if_statement "if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" if (parenthesized_expression "(iVar15 < 0x14)" ( (binary_expression "iVar15 < 0x14" identifier < number_literal) )) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00055c5c;" goto statement_identifier ;) })) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (labeled_statement "LAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" statement_identifier : (expression_statement "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" identifier (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" * (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x134)" ( (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;)) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" if (parenthesized_expression "(0x13 < iVar26)" ( (binary_expression "0x13 < iVar26" number_literal < identifier) )) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" * (cast_expression "(int *)((int)piVar24 + -0x144)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x144)" ( (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" * (cast_expression "(int *)((int)piVar24 + -0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + (binary_expression "iVar26 * 8" identifier * number_literal))) ;) (expression_statement "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" identifier (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" else (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" { (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" identifier = (pointer_expression "*(code **)(iVar8 + -0x7bd0)" * (cast_expression "(code **)(iVar8 + -0x7bd0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7bd0)" ( (binary_expression "iVar8 + -0x7bd0" identifier + number_literal) ))))) ;) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" * (cast_expression "(int *)((int)piVar24 + -0x148)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x148)" ( (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" ( identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xfc)" ( (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , identifier , identifier ))) ;) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }))) (expression_statement "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);" (assignment_expression "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" identifier = (call_expression "(**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" (parenthesized_expression "(**(code **)(iVar8 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar8 + -0x7d0c)" * (pointer_expression "*(code **)(iVar8 + -0x7d0c)" * (cast_expression "(code **)(iVar8 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + -0x7d0c)" ( (binary_expression "iVar8 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar5,puVar17,puVar5,iVar26)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = (iVar15 + iVar16) - iVar26;" (assignment_expression "iVar15 = (iVar15 + iVar16) - iVar26" identifier = (binary_expression "(iVar15 + iVar16) - iVar26" (parenthesized_expression "(iVar15 + iVar16)" ( (binary_expression "iVar15 + iVar16" identifier + identifier) )) - identifier)) ;) (expression_statement "puVar11 = puVar5 + iVar26;" (assignment_expression "puVar11 = puVar5 + iVar26" identifier = (binary_expression "puVar5 + iVar26" identifier + identifier)) ;) (expression_statement "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);" (assignment_expression "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" identifier = (call_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))" ( (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" * (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" * (cast_expression "(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" ( (binary_expression "*(int *)((int)piVar24 + -0x140) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))))) )) (argument_list "(puVar17,puVar5,iVar12,iVar26)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar13 = iVar12 + iVar8;" (assignment_expression "uVar13 = iVar12 + iVar8" identifier = (binary_expression "iVar12 + iVar8" identifier + identifier)) ;) (if_statement "if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" identifier = (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar16 + -0x7d0c)" * (pointer_expression "*(code **)(iVar16 + -0x7d0c)" * (cast_expression "(code **)(iVar16 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7d0c)" ( (binary_expression "iVar16 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar5,puVar5,puVar11,iVar15)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x140)" * (cast_expression "(int *)((int)piVar24 + -0x140)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x140)" ( (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" { (if_statement "if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" if (parenthesized_expression "(iVar15 < iVar26)" ( (binary_expression "iVar15 < iVar26" identifier < identifier) )) (compound_statement "{\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }" { (expression_statement "puVar18 = puVar5 + iVar15;" (assignment_expression "puVar18 = puVar5 + iVar15" identifier = (binary_expression "puVar5 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = *puVar18;" (assignment_expression "uVar7 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" if (parenthesized_expression "(uVar7 + 1 != 0)" ( (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" { (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x130)" * (cast_expression "(int *)((int)piVar24 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00055cec;" goto statement_identifier ;) })) (do_statement "do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);" do (compound_statement "{\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        }" { (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (if_statement "if (iVar26 == iVar15) goto LAB_00055f98;" if (parenthesized_expression "(iVar26 == iVar15)" ( (binary_expression "iVar26 == iVar15" identifier == identifier) )) (goto_statement "goto LAB_00055f98;" goto statement_identifier ;)) (expression_statement "uVar7 = puVar18[1];" (assignment_expression "uVar7 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar7 + 1 == 0)" ( (binary_expression "uVar7 + 1 == 0" (binary_expression "uVar7 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" else (compound_statement "{\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" { (labeled_statement "LAB_00055f98:\n        iVar8 = iVar8 + 1;" statement_identifier : (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;)) }))) })) })) (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" identifier = (pointer_expression "*(int *)((int)piVar24 + -0x130)" * (cast_expression "(int *)((int)piVar24 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0x130)" ( (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (labeled_statement "LAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" statement_identifier : (if_statement "if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" identifier = (call_expression "(**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" (parenthesized_expression "(**(code **)(iVar16 + -0x7b2c))" ( (pointer_expression "**(code **)(iVar16 + -0x7b2c)" * (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) ))))) )) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "iVar26 * 2" identifier * number_literal) )))) ;) (expression_statement "iVar12 = -iVar12;" (assignment_expression "iVar12 = -iVar12" identifier = (unary_expression "-iVar12" - identifier)) ;) }) (else_clause "else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" else (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" { (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" identifier = (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" ( (pointer_expression "**(code **)(iVar16 + -0x7d0c)" * (pointer_expression "*(code **)(iVar16 + -0x7d0c)" * (cast_expression "(code **)(iVar16 + -0x7d0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar16 + -0x7d0c)" ( (binary_expression "iVar16 + -0x7d0c" identifier + number_literal) ))))) )) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" ( identifier , identifier , (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" * (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar24 + -0xec)" ( (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )))) ;) })))) (expression_statement "uVar7 = iVar12 + iVar8;" (assignment_expression "uVar7 = iVar12 + iVar8" identifier = (binary_expression "iVar12 + iVar8" identifier + identifier)) ;) (expression_statement "uVar10 = uVar13 + *puVar5;" (assignment_expression "uVar10 = uVar13 + *puVar5" identifier = (binary_expression "uVar13 + *puVar5" identifier + (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "*puVar5 = uVar10;" (assignment_expression "*puVar5 = uVar10" (pointer_expression "*puVar5" * identifier) = identifier) ;) (if_statement "if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" if (parenthesized_expression "(uVar10 < uVar13)" ( (binary_expression "uVar10 < uVar13" identifier < identifier) )) (compound_statement "{\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" { (do_statement "do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);" do (compound_statement "{\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    }" { (expression_statement "uVar13 = puVar5[1] + 1;" (assignment_expression "uVar13 = puVar5[1] + 1" identifier = (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar5[1] = uVar13;" (assignment_expression "puVar5[1] = uVar13" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar13 != 0) break;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" identifier = (pointer_expression "*puVar5" * identifier)) ;) (expression_statement "*puVar5 = uVar13 + 1;" (assignment_expression "*puVar5 = uVar13 + 1" (pointer_expression "*puVar5" * identifier) = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 + 1 == 0)" ( (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" identifier + number_literal) == number_literal) )) ;) })) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (if_statement "if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" if (parenthesized_expression "(uVar7 < 3)" ( (binary_expression "uVar7 < 3" identifier < number_literal) )) (compound_statement "{\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }" { (expression_statement "*puVar11 = uVar7 + uVar13;" (assignment_expression "*puVar11 = uVar7 + uVar13" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar7 + uVar13" identifier + identifier)) ;) (if_statement "if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" if (parenthesized_expression "(uVar7 + uVar13 < uVar7)" ( (binary_expression "uVar7 + uVar13 < uVar7" (binary_expression "uVar7 + uVar13" identifier + identifier) < identifier) )) (compound_statement "{\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" { (do_statement "do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);" do (compound_statement "{\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      }" { (expression_statement "uVar13 = puVar11[1] + 1;" (assignment_expression "uVar13 = puVar11[1] + 1" identifier = (binary_expression "puVar11[1] + 1" (subscript_expression "puVar11[1]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "puVar11[1] = uVar13;" (assignment_expression "puVar11[1] = uVar13" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar13 != 0) {\n          return;\n        }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" identifier = (binary_expression "puVar11 + 2" identifier + number_literal)) ;) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "*puVar11 = uVar13 + 1;" (assignment_expression "*puVar11 = uVar13 + 1" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 + 1 == 0)" ( (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" identifier + number_literal) == number_literal) )) ;) })) }) (else_clause "else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" else (compound_statement "{\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" { (expression_statement "*puVar11 = uVar13 - 1;" (assignment_expression "*puVar11 = uVar13 - 1" (pointer_expression "*puVar11" * identifier) = (binary_expression "uVar13 - 1" identifier - number_literal)) ;) (if_statement "if (uVar13 != 0) break;" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar13 = puVar11[1];" (assignment_expression "uVar13 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) })) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (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)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 (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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))) / LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))) / LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , 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) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , 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 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 ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression 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 * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression IDENT * (subscript_expression IDENT [ LIT ])) * LIT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , (binary_expression IDENT + LIT) , (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) & LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) * (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) )) + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) [ LIT ]) * (subscript_expression IDENT [ IDENT ])) + (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) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) * LIT)) != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ]) * (subscript_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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (subscript_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (subscript_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) < IDENT) )) (compound_statement { (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 (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ^ LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (subscript_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (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) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = (binary_expression IDENT - IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (subscript_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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = 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 * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression 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)) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ^ LIT)) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (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 * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) < (binary_expression IDENT * LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) }) (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 * (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression IDENT * LIT))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + (binary_expression IDENT * LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression 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) )) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) )))) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_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 (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (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 (binary_expression IDENT + LIT) == 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) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (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 (binary_expression IDENT + LIT) == LIT) )) ;) })) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (return_statement return ;) })))
(function_definition "void __gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "__gmpn_sqrlo(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" (identifier "__gmpn_sqrlo") (parameter_list "(uint *param_1,uint *param_2,uint *param_3,uint *param_4)" (( "(") (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"))) () ")"))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  uint *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  int iVar12;\n  uint uVar13;\n  uint *unaff_s0;\n  uint *puVar14;\n  int iVar15;\n  int iVar16;\n  uint *puVar17;\n  uint *unaff_s3;\n  uint *unaff_s4;\n  uint *unaff_s5;\n  uint *puVar18;\n  undefined1 *unaff_s6;\n  uint *unaff_s7;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  int *piVar23;\n  int *piVar24;\n  int *piVar25;\n  int iVar26;\n  undefined4 uVar27;\n  code *pcVar28;\n  longlong lVar29;\n  int aiStack_50 [6];\n  uint *local_30;\n  int local_2c;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  piVar24 = aiStack_50;\n  piVar23 = aiStack_50;\n  piVar25 = aiStack_50;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar2) {\n    return;\n  }\n  uVar27 = 0x557c8;\n  puVar20 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  lVar29 = CONCAT44(puVar17,puVar5);\n  puVar22 = puVar20 + 0x49870;\n  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);\n  uVar13 = *puVar5;\n  *(undefined **)((int)piVar24 + -0xf0) = puVar22;\n  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;\n  *(undefined **)((int)piVar24 + -0x20) = puVar2;\n  *(uint **)((int)piVar24 + -0x24) = param_3;\n  *(uint **)((int)piVar24 + -0x28) = unaff_s0;\n  *(undefined4 *)((int)piVar24 + -4) = uVar27;\n  *(int **)((int)piVar24 + -8) = aiStack_50;\n  *(uint **)((int)piVar24 + -0xc) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;\n  *(uint **)((int)piVar24 + -0x14) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x18) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;\n  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;\n  if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }\n  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7b70);\n  pcVar28 = __gmpn_toom22_mul;\n  (*pcVar21)();\n  iVar12 = (int)((ulonglong)lVar29 >> 0x20);\n  *(uint **)((int)piVar24 + -0x128) = puVar14;\n  iVar15 = (int)puVar11 >> 1;\n  *(int **)((int)piVar24 + -0x108) = piVar25;\n  iVar26 = (int)puVar11 - iVar15;\n  *(uint **)((int)piVar24 + -0x114) = unaff_s5;\n  *(uint **)((int)piVar24 + -0x124) = puVar5;\n  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;\n  *(uint **)((int)piVar24 + -0x118) = unaff_s4;\n  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;\n  *(uint **)((int)piVar24 + -0x120) = puVar17;\n  *(code **)((int)piVar24 + -0x104) = pcVar28;\n  puVar17 = (uint *)(iVar12 + iVar26 * 4);\n  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;\n  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;\n  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;\n  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;\n  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;\n  if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\nLAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;\n  *(uint **)((int)piVar24 + -300) = puVar11;\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  puVar5 = puVar17 + iVar26;\n  if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);\n  iVar15 = (iVar15 + iVar16) - iVar26;\n  puVar11 = puVar5 + iVar26;\n  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);\n  iVar16 = *(int *)((int)piVar24 + -0x140);\n  uVar13 = iVar12 + iVar8;\n  if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }\n  iVar12 = *(int *)((int)piVar24 + -0x130);\nLAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }\n  uVar7 = iVar12 + iVar8;\n  uVar10 = uVar13 + *puVar5;\n  *puVar5 = uVar10;\n  if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }\n  uVar13 = *puVar11;\n  if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }\n  return;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint *unaff_s0;" (type_identifier "uint") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint *puVar17;" (type_identifier "uint") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint *unaff_s3;" (type_identifier "uint") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "uint *unaff_s4;" (type_identifier "uint") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "uint *unaff_s5;" (type_identifier "uint") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "undefined1 *unaff_s6;" (type_identifier "undefined1") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "uint *unaff_s7;" (type_identifier "uint") (pointer_declarator "*unaff_s7" (* "*") (identifier "unaff_s7")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "undefined *puVar20;" (type_identifier "undefined") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "code *pcVar21;" (type_identifier "code") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "undefined *puVar22;" (type_identifier "undefined") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "int *piVar25;" (primitive_type "int") (pointer_declarator "*piVar25" (* "*") (identifier "piVar25")) (; ";")) (declaration "int iVar26;" (primitive_type "int") (identifier "iVar26") (; ";")) (declaration "undefined4 uVar27;" (type_identifier "undefined4") (identifier "uVar27") (; ";")) (declaration "code *pcVar28;" (type_identifier "code") (pointer_declarator "*pcVar28" (* "*") (identifier "pcVar28")) (; ";")) (declaration "longlong lVar29;" (type_identifier "longlong") (identifier "lVar29") (; ";")) (declaration "int aiStack_50 [6];" (primitive_type "int") (array_declarator "aiStack_50 [6]" (identifier "aiStack_50") ([ "[") (number_literal "6") (] "]")) (; ";")) (declaration "uint *local_30;" (type_identifier "uint") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (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 "piVar24 = aiStack_50;" (assignment_expression "piVar24 = aiStack_50" (identifier "piVar24") (= "=") (identifier "aiStack_50")) (; ";")) (expression_statement "piVar23 = aiStack_50;" (assignment_expression "piVar23 = aiStack_50" (identifier "piVar23") (= "=") (identifier "aiStack_50")) (; ";")) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" (identifier "piVar25") (= "=") (identifier "aiStack_50")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if ((int)param_3 < 0x28) {\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }\n  else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0x28)" (( "(") (binary_expression "(int)param_3 < 0x28" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x28")) () ")")) (compound_statement "{\n    puVar11 = param_3;\n    (*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();\n    puVar17 = param_1;\n    puVar5 = param_2;\n  }" ({ "{") (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" (identifier "puVar11") (= "=") (identifier "param_3")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)();" (call_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)()" (parenthesized_expression "(*(code *)PTR___gmpn_sqrlo_basecase_000975a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqrlo_basecase_000975a8" (* "*") (cast_expression "(code *)PTR___gmpn_sqrlo_basecase_000975a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqrlo_basecase_000975a8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar17 = param_1;" (assignment_expression "puVar17 = param_1" (identifier "puVar17") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" (identifier "puVar5") (= "=") (identifier "param_2")) (; ";")) (} "}")) (else_clause "else {\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (else "else") (compound_statement "{\n    unaff_s3 = (uint *)((int)param_3 * 8);\n    local_30 = (uint *)0x0;\n    if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }\n    unaff_s5 = (uint *)((int)param_3 * 4);\n    if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }\n    puVar17 = local_30;\n    unaff_s4 = param_1;\n    unaff_s7 = param_2;\n    piVar24 = piVar23;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" ({ "{") (expression_statement "unaff_s3 = (uint *)((int)param_3 * 8);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 * 8)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)((int)param_3 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 8)" (( "(") (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" (identifier "local_30") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (unaff_s3 < (uint *)0x7f01) {\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }\n    else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" (if "if") (parenthesized_expression "(unaff_s3 < (uint *)0x7f01)" (( "(") (binary_expression "unaff_s3 < (uint *)0x7f01" (identifier "unaff_s3") (< "<") (cast_expression "(uint *)0x7f01" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7f01"))) () ")")) (compound_statement "{\n      piVar23 = aiStack_50 + (int)param_3 * -2;\n      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);\n    }" ({ "{") (expression_statement "piVar23 = aiStack_50 + (int)param_3 * -2;" (assignment_expression "piVar23 = aiStack_50 + (int)param_3 * -2" (identifier "piVar23") (= "=") (binary_expression "aiStack_50 + (int)param_3 * -2" (identifier "aiStack_50") (+ "+") (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "-2")))) (; ";")) (expression_statement "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);" (assignment_expression "unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)(&stack0xffffffc8 + (int)param_3 * -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffc8 + (int)param_3 * -8)" (( "(") (binary_expression "&stack0xffffffc8 + (int)param_3 * -8" (pointer_expression "&stack0xffffffc8" (& "&") (identifier "stack0xffffffc8")) (+ "+") (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "-8"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" (else "else") (compound_statement "{\n      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);\n    }" ({ "{") (expression_statement "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);" (assignment_expression "unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,unaff_s3)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "unaff_s3") () ")"))))) (; ";")) (} "}")))) (expression_statement "unaff_s5 = (uint *)((int)param_3 * 4);" (assignment_expression "unaff_s5 = (uint *)((int)param_3 * 4)" (identifier "unaff_s5") (= "=") (cast_expression "(uint *)((int)param_3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 4)" (( "(") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if ((int)param_3 < 0x2e00) {\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }\n    else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0x2e00)" (( "(") (binary_expression "(int)param_3 < 0x2e00" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x2e00")) () ")")) (compound_statement "{\n      unaff_s5 = unaff_s0 + (int)param_3;\n      if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }\n      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);\n      param_1 = (uint *)((int)param_1 + (int)unaff_s6);\n      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);\n      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);\n      puVar5 = param_1;\n      param_4 = unaff_s3;\n      (*(code *)PTR___gmpn_add_n_00097334)(param_1);\n    }" ({ "{") (expression_statement "unaff_s5 = unaff_s0 + (int)param_3;" (assignment_expression "unaff_s5 = unaff_s0 + (int)param_3" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s0 + (int)param_3" (identifier "unaff_s0") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if ((int)param_3 < 0x52) {\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }\n      else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" (if "if") (parenthesized_expression "((int)param_3 < 0x52)" (( "(") (binary_expression "(int)param_3 < 0x52" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x52")) () ")")) (compound_statement "{\n        unaff_s3 = (uint *)((int)param_3 >> 1);\nLAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }\njoined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }\n      }" ({ "{") (expression_statement "unaff_s3 = (uint *)((int)param_3 >> 1);" (assignment_expression "unaff_s3 = (uint *)((int)param_3 >> 1)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)((int)param_3 >> 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 >> 1)" (( "(") (binary_expression "(int)param_3 >> 1" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (labeled_statement "LAB_000555e4:\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (statement_identifier "LAB_000555e4") (: ":") (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" (identifier "param_3") (= "=") (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 - (int)unaff_s3)" (( "(") (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3"))) () ")")))) (; ";"))) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" (identifier "unaff_s6") (= "=") (cast_expression "(undefined1 *)((int)param_3 * 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 4)" (( "(") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" (* "*") (cast_expression "(code *)PTR___gmpn_sqr_00097394" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqr_00097394"))) () ")")) (argument_list "(unaff_s0,param_2,param_3)" (( "(") (identifier "unaff_s0") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" (identifier "puVar17") (= "=") (binary_expression "param_2 + (int)param_3" (identifier "param_2") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if (param_3 != (uint *)0x0) {\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" (if "if") (parenthesized_expression "(param_3 != (uint *)0x0)" (( "(") (binary_expression "param_3 != (uint *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00055760:\n          uVar13 = *unaff_s0;\n          if (param_3 != (uint *)0x1) goto LAB_000556dc;\n          *param_1 = uVar13;\n        }" ({ "{") (labeled_statement "LAB_00055760:\n          uVar13 = *unaff_s0;" (statement_identifier "LAB_00055760") (: ":") (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" (identifier "uVar13") (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";"))) (if_statement "if (param_3 != (uint *)0x1) goto LAB_000556dc;" (if "if") (parenthesized_expression "(param_3 != (uint *)0x1)" (( "(") (binary_expression "param_3 != (uint *)0x1" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (goto_statement "goto LAB_000556dc;" (goto "goto") (statement_identifier "LAB_000556dc") (; ";"))) (expression_statement "*param_1 = uVar13;" (assignment_expression "*param_1 = uVar13" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar13")) (; ";")) (} "}"))) (labeled_statement "joined_r0x0005570c:\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (statement_identifier "joined_r0x0005570c") (: ":") (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mullo_n_00097234"))) (; ";"))) (if_statement "if ((int)unaff_s3 < 0x28) {\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" (if "if") (parenthesized_expression "((int)unaff_s3 < 0x28)" (( "(") (binary_expression "(int)unaff_s3 < 0x28" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (< "<") (number_literal "0x28")) () ")")) (compound_statement "{\n          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;\n        }" ({ "{") (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR___gmpn_mullo_basecase_00097120" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mullo_basecase_00097120"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" (else "else") (compound_statement "{\n        if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }\n        if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }\n        unaff_s3 = (uint *)((uint)param_3 / 10);\n        param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n        unaff_s6 = (undefined1 *)((int)param_3 * 4);\n        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n        puVar17 = param_2 + (int)param_3;\n        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;\n        if (param_3 != (uint *)0x0) goto LAB_00055760;\n      }" ({ "{") (if_statement "if ((int)param_3 < 0x70) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" (if "if") (parenthesized_expression "((int)param_3 < 0x70)" (( "(") (binary_expression "(int)param_3 < 0x70" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x70")) () ")")) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);\n          param_3 = (uint *)((int)param_3 - (int)unaff_s3);\n          unaff_s6 = (undefined1 *)((int)param_3 * 4);\n          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);\n          puVar17 = param_2 + (int)param_3;\n          uVar13 = *unaff_s0;\nLAB_000556dc:\n          puVar5 = unaff_s0 + 1;\n          puVar11 = param_1;\n          do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));\n          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;\n          goto joined_r0x0005570c;\n        }" ({ "{") (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)((uint)((int)param_3 * 0xb) / 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)((int)param_3 * 0xb) / 0x24)" (( "(") (binary_expression "(uint)((int)param_3 * 0xb) / 0x24" (call_expression "(uint)((int)param_3 * 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_3 * 0xb)" (( "(") (binary_expression "(int)param_3 * 0xb" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "0xb")) () ")"))) (/ "/") (number_literal "0x24")) () ")")))) (; ";")) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" (identifier "param_3") (= "=") (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 - (int)unaff_s3)" (( "(") (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3"))) () ")")))) (; ";")) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" (identifier "unaff_s6") (= "=") (cast_expression "(undefined1 *)((int)param_3 * 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 4)" (( "(") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" (* "*") (cast_expression "(code *)PTR___gmpn_sqr_00097394" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqr_00097394"))) () ")")) (argument_list "(unaff_s0,param_2,param_3)" (( "(") (identifier "unaff_s0") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" (identifier "puVar17") (= "=") (binary_expression "param_2 + (int)param_3" (identifier "param_2") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "uVar13 = *unaff_s0;" (assignment_expression "uVar13 = *unaff_s0" (identifier "uVar13") (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (labeled_statement "LAB_000556dc:\n          puVar5 = unaff_s0 + 1;" (statement_identifier "LAB_000556dc") (: ":") (expression_statement "puVar5 = unaff_s0 + 1;" (assignment_expression "puVar5 = unaff_s0 + 1" (identifier "puVar5") (= "=") (binary_expression "unaff_s0 + 1" (identifier "unaff_s0") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar11 = param_1;" (assignment_expression "puVar11 = param_1" (identifier "puVar11") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));" (do "do") (compound_statement "{\n            *puVar11 = uVar13;\n            puVar18 = puVar5 + 1;\n            uVar13 = *puVar5;\n            puVar5 = puVar18;\n            puVar11 = puVar11 + 1;\n          }" ({ "{") (expression_statement "*puVar11 = uVar13;" (assignment_expression "*puVar11 = uVar13" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "puVar18 = puVar5 + 1;" (assignment_expression "puVar18 = puVar5 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar18;" (assignment_expression "puVar5 = puVar18" (identifier "puVar5") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6))" (( "(") (binary_expression "puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6)" (identifier "puVar18") (!= "!=") (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" (( "(") (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")")))) () ")")) (; ";")) (expression_statement "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;" (assignment_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13" (pointer_expression "*(uint *)((int)param_1 + (int)(unaff_s6 + -4))" (* "*") (cast_expression "(uint *)((int)param_1 + (int)(unaff_s6 + -4))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + (int)(unaff_s6 + -4))" (( "(") (binary_expression "(int)param_1 + (int)(unaff_s6 + -4)" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (cast_expression "(int)(unaff_s6 + -4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(unaff_s6 + -4)" (( "(") (binary_expression "unaff_s6 + -4" (identifier "unaff_s6") (+ "+") (number_literal "-4")) () ")")))) () ")")))) (= "=") (identifier "uVar13")) (; ";")) (goto_statement "goto joined_r0x0005570c;" (goto "goto") (statement_identifier "joined_r0x0005570c") (; ";")) (} "}"))) (if_statement "if ((int)param_3 < 0x204) {\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" (if "if") (parenthesized_expression "((int)param_3 < 0x204)" (( "(") (binary_expression "(int)param_3 < 0x204" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0x204")) () ")")) (compound_statement "{\n          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);\n          goto LAB_000555e4;\n        }" ({ "{") (expression_statement "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);" (assignment_expression "unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)((uint)((int)param_3 * 9) / 0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)((int)param_3 * 9) / 0x28)" (( "(") (binary_expression "(uint)((int)param_3 * 9) / 0x28" (call_expression "(uint)((int)param_3 * 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)param_3 * 9)" (( "(") (binary_expression "(int)param_3 * 9" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "9")) () ")"))) (/ "/") (number_literal "0x28")) () ")")))) (; ";")) (goto_statement "goto LAB_000555e4;" (goto "goto") (statement_identifier "LAB_000555e4") (; ";")) (} "}"))) (expression_statement "unaff_s3 = (uint *)((uint)param_3 / 10);" (assignment_expression "unaff_s3 = (uint *)((uint)param_3 / 10)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)((uint)param_3 / 10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_3 / 10)" (( "(") (binary_expression "(uint)param_3 / 10" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (/ "/") (number_literal "10")) () ")")))) (; ";")) (expression_statement "param_3 = (uint *)((int)param_3 - (int)unaff_s3);" (assignment_expression "param_3 = (uint *)((int)param_3 - (int)unaff_s3)" (identifier "param_3") (= "=") (cast_expression "(uint *)((int)param_3 - (int)unaff_s3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 - (int)unaff_s3)" (( "(") (binary_expression "(int)param_3 - (int)unaff_s3" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (- "-") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3"))) () ")")))) (; ";")) (expression_statement "unaff_s6 = (undefined1 *)((int)param_3 * 4);" (assignment_expression "unaff_s6 = (undefined1 *)((int)param_3 * 4)" (identifier "unaff_s6") (= "=") (cast_expression "(undefined1 *)((int)param_3 * 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 4)" (( "(") (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" (* "*") (cast_expression "(code *)PTR___gmpn_sqr_00097394" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqr_00097394"))) () ")")) (argument_list "(unaff_s0,param_2,param_3)" (( "(") (identifier "unaff_s0") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar17 = param_2 + (int)param_3;" (assignment_expression "puVar17 = param_2 + (int)param_3" (identifier "puVar17") (= "=") (binary_expression "param_2 + (int)param_3" (identifier "param_2") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;" (assignment_expression "pcVar21 = (code *)PTR___gmpn_mullo_n_00097234" (identifier "pcVar21") (= "=") (cast_expression "(code *)PTR___gmpn_mullo_n_00097234" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mullo_n_00097234"))) (; ";")) (if_statement "if (param_3 != (uint *)0x0) goto LAB_00055760;" (if "if") (parenthesized_expression "(param_3 != (uint *)0x0)" (( "(") (binary_expression "param_3 != (uint *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00055760;" (goto "goto") (statement_identifier "LAB_00055760") (; ";"))) (} "}")))) (expression_statement "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);" (call_expression "(*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(unaff_s5,puVar17,param_2,unaff_s3)" (( "(") (identifier "unaff_s5") (, ",") (identifier "puVar17") (, ",") (identifier "param_2") (, ",") (identifier "unaff_s3") () ")"))) (; ";")) (expression_statement "param_1 = (uint *)((int)param_1 + (int)unaff_s6);" (assignment_expression "param_1 = (uint *)((int)param_1 + (int)unaff_s6)" (identifier "param_1") (= "=") (cast_expression "(uint *)((int)param_1 + (int)unaff_s6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + (int)unaff_s6)" (( "(") (binary_expression "(int)param_1 + (int)unaff_s6" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);" (call_expression "(*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009756c)" (( "(") (pointer_expression "*(code *)PTR___gmpn_lshift_0009756c" (* "*") (cast_expression "(code *)PTR___gmpn_lshift_0009756c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_lshift_0009756c"))) () ")")) (argument_list "(param_1,unaff_s5,unaff_s3,1)" (( "(") (identifier "param_1") (, ",") (identifier "unaff_s5") (, ",") (identifier "unaff_s3") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);" (assignment_expression "puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6)" (identifier "puVar11") (= "=") (cast_expression "(uint *)((int)unaff_s0 + (int)unaff_s6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 + (int)unaff_s6)" (( "(") (binary_expression "(int)unaff_s0 + (int)unaff_s6" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6"))) () ")")))) (; ";")) (expression_statement "puVar5 = param_1;" (assignment_expression "puVar5 = param_1" (identifier "puVar5") (= "=") (identifier "param_1")) (; ";")) (expression_statement "param_4 = unaff_s3;" (assignment_expression "param_4 = unaff_s3" (identifier "param_4") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_add_n_00097334)(param_1);" (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" (else "else") (compound_statement "{\n      *(uint **)((int)piVar23 + 0x10) = param_3;\n      puVar5 = param_2;\n      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);\n      iVar12 = (int)param_3 + -1;\n      puVar11 = (uint *)*unaff_s0;\n      puVar18 = param_1;\n      puVar17 = unaff_s0;\n      do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);\n      param_3 = param_1 + (int)param_3;\n      param_3[-1] = (uint)puVar11;\n      param_4 = (uint *)0x0;\n    }" ({ "{") (expression_statement "*(uint **)((int)piVar23 + 0x10) = param_3;" (assignment_expression "*(uint **)((int)piVar23 + 0x10) = param_3" (pointer_expression "*(uint **)((int)piVar23 + 0x10)" (* "*") (cast_expression "(uint **)((int)piVar23 + 0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar23 + 0x10)" (( "(") (binary_expression "(int)piVar23 + 0x10" (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar5 = param_2;" (assignment_expression "puVar5 = param_2" (identifier "puVar5") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);" (call_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_nussbaumer_mul_000972bc)" (( "(") (pointer_expression "*(code *)PTR___gmpn_nussbaumer_mul_000972bc" (* "*") (cast_expression "(code *)PTR___gmpn_nussbaumer_mul_000972bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_nussbaumer_mul_000972bc"))) () ")")) (argument_list "(unaff_s0,param_2,param_3,param_2)" (( "(") (identifier "unaff_s0") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "iVar12 = (int)param_3 + -1;" (assignment_expression "iVar12 = (int)param_3 + -1" (identifier "iVar12") (= "=") (binary_expression "(int)param_3 + -1" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar11 = (uint *)*unaff_s0;" (assignment_expression "puVar11 = (uint *)*unaff_s0" (identifier "puVar11") (= "=") (cast_expression "(uint *)*unaff_s0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")))) (; ";")) (expression_statement "puVar18 = param_1;" (assignment_expression "puVar18 = param_1" (identifier "puVar18") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar17 = unaff_s0;" (assignment_expression "puVar17 = unaff_s0" (identifier "puVar17") (= "=") (identifier "unaff_s0")) (; ";")) (do_statement "do {\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      } while (iVar12 != 0);" (do "do") (compound_statement "{\n        puVar17 = puVar17 + 1;\n        *puVar18 = (uint)puVar11;\n        iVar12 = iVar12 + -1;\n        puVar11 = (uint *)*puVar17;\n        puVar18 = puVar18 + 1;\n      }" ({ "{") (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar18 = (uint)puVar11;" (assignment_expression "*puVar18 = (uint)puVar11" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (cast_expression "(uint)puVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar11"))) (; ";")) (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar11 = (uint *)*puVar17;" (assignment_expression "puVar11 = (uint *)*puVar17" (identifier "puVar11") (= "=") (cast_expression "(uint *)*puVar17" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (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 "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_3 = param_1 + (int)param_3;" (assignment_expression "param_3 = param_1 + (int)param_3" (identifier "param_3") (= "=") (binary_expression "param_1 + (int)param_3" (identifier "param_1") (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "param_3[-1] = (uint)puVar11;" (assignment_expression "param_3[-1] = (uint)puVar11" (subscript_expression "param_3[-1]" (identifier "param_3") ([ "[") (number_literal "-1") (] "]")) (= "=") (cast_expression "(uint)puVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar11"))) (; ";")) (expression_statement "param_4 = (uint *)0x0;" (assignment_expression "param_4 = (uint *)0x0" (identifier "param_4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "puVar17 = local_30;" (assignment_expression "puVar17 = local_30" (identifier "puVar17") (= "=") (identifier "local_30")) (; ";")) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" (identifier "unaff_s4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "unaff_s7 = param_2;" (assignment_expression "unaff_s7 = param_2" (identifier "unaff_s7") (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar24 = piVar23;" (assignment_expression "piVar24 = piVar23" (identifier "piVar24") (= "=") (identifier "piVar23")) (; ";")) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (if "if") (parenthesized_expression "(local_30 != (uint *)0x0)" (( "(") (binary_expression "local_30 != (uint *)0x0" (identifier "local_30") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_2c == *(int *)puVar2) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar2)" (( "(") (binary_expression "local_2c == *(int *)puVar2" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar27 = 0x557c8;" (assignment_expression "uVar27 = 0x557c8" (identifier "uVar27") (= "=") (number_literal "0x557c8")) (; ";")) (expression_statement "puVar20 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar20 = PTR___stack_chk_fail_000974d0" (identifier "puVar20") (= "=") (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 "lVar29 = CONCAT44(puVar17,puVar5);" (assignment_expression "lVar29 = CONCAT44(puVar17,puVar5)" (identifier "lVar29") (= "=") (call_expression "CONCAT44(puVar17,puVar5)" (identifier "CONCAT44") (argument_list "(puVar17,puVar5)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar5") () ")")))) (; ";")) (expression_statement "puVar22 = puVar20 + 0x49870;" (assignment_expression "puVar22 = puVar20 + 0x49870" (identifier "puVar22") (= "=") (binary_expression "puVar20 + 0x49870" (identifier "puVar20") (+ "+") (number_literal "0x49870"))) (; ";")) (expression_statement "puVar3 = *(undefined4 **)(puVar20 + 0x41d70);" (assignment_expression "puVar3 = *(undefined4 **)(puVar20 + 0x41d70)" (identifier "puVar3") (= "=") (pointer_expression "*(undefined4 **)(puVar20 + 0x41d70)" (* "*") (cast_expression "(undefined4 **)(puVar20 + 0x41d70)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + 0x41d70)" (( "(") (binary_expression "puVar20 + 0x41d70" (identifier "puVar20") (+ "+") (number_literal "0x41d70")) () ")"))))) (; ";")) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*(undefined **)((int)piVar24 + -0xf0) = puVar22;" (assignment_expression "*(undefined **)((int)piVar24 + -0xf0) = puVar22" (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(undefined **)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (identifier "puVar22")) (; ";")) (expression_statement "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3;" (assignment_expression "*(undefined4 **)((int)piVar24 + -0xe0) = puVar3" (pointer_expression "*(undefined4 **)((int)piVar24 + -0xe0)" (* "*") (cast_expression "(undefined4 **)((int)piVar24 + -0xe0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xe0)" (( "(") (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "*(undefined **)((int)piVar24 + -0x20) = puVar2;" (assignment_expression "*(undefined **)((int)piVar24 + -0x20) = puVar2" (pointer_expression "*(undefined **)((int)piVar24 + -0x20)" (* "*") (cast_expression "(undefined **)((int)piVar24 + -0x20)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x20)" (( "(") (binary_expression "(int)piVar24 + -0x20" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x24) = param_3;" (assignment_expression "*(uint **)((int)piVar24 + -0x24) = param_3" (pointer_expression "*(uint **)((int)piVar24 + -0x24)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x24)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x24)" (( "(") (binary_expression "(int)piVar24 + -0x24" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)((int)piVar24 + -0x28) = unaff_s0" (pointer_expression "*(uint **)((int)piVar24 + -0x28)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x28)" (( "(") (binary_expression "(int)piVar24 + -0x28" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -4) = uVar27;" (assignment_expression "*(undefined4 *)((int)piVar24 + -4) = uVar27" (pointer_expression "*(undefined4 *)((int)piVar24 + -4)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -4)" (( "(") (binary_expression "(int)piVar24 + -4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "*(int **)((int)piVar24 + -8) = aiStack_50;" (assignment_expression "*(int **)((int)piVar24 + -8) = aiStack_50" (pointer_expression "*(int **)((int)piVar24 + -8)" (* "*") (cast_expression "(int **)((int)piVar24 + -8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -8)" (( "(") (binary_expression "(int)piVar24 + -8" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "aiStack_50")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0xc) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0xc) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0xc)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xc)" (( "(") (binary_expression "(int)piVar24 + -0xc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x10) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x10)" (* "*") (cast_expression "(undefined1 **)((int)piVar24 + -0x10)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x10)" (( "(") (binary_expression "(int)piVar24 + -0x10" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x14) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x14) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x14)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x14)" (( "(") (binary_expression "(int)piVar24 + -0x14" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x18) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x18) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x18)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x18)" (( "(") (binary_expression "(int)piVar24 + -0x18" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x1c)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x1c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x1c)" (( "(") (binary_expression "(int)piVar24 + -0x1c" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x2c) = *puVar3" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x2c)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x2c)" (( "(") (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (if_statement "if ((int)puVar11 < 3) {\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }\n  else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" (if "if") (parenthesized_expression "((int)puVar11 < 3)" (( "(") (binary_expression "(int)puVar11 < 3" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;\n    puVar14 = puVar11;\n    if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }\n  }" ({ "{") (expression_statement "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")) (* "*") (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")))) (; ";")) (expression_statement "puVar14 = puVar11;" (assignment_expression "puVar14 = puVar11" (identifier "puVar14") (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (puVar11 == (uint *)0x1) {\n      *puVar17 = uVar13 * uVar13;\n    }\n    else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" (if "if") (parenthesized_expression "(puVar11 == (uint *)0x1)" (( "(") (binary_expression "puVar11 == (uint *)0x1" (identifier "puVar11") (== "==") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n      *puVar17 = uVar13 * uVar13;\n    }" ({ "{") (expression_statement "*puVar17 = uVar13 * uVar13;" (assignment_expression "*puVar17 = uVar13 * uVar13" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (binary_expression "uVar13 * uVar13" (identifier "uVar13") (* "*") (identifier "uVar13"))) (; ";")) (} "}")) (else_clause "else {\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" (else "else") (compound_statement "{\n      *puVar17 = (uint)lVar1;\n      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);\n      piVar25 = aiStack_50;\n      lVar29 = lVar1;\n    }" ({ "{") (expression_statement "*puVar17 = (uint)lVar1;" (assignment_expression "*puVar17 = (uint)lVar1" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (cast_expression "(uint)lVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar1"))) (; ";")) (expression_statement "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);" (assignment_expression "puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20)" (binary_expression "uVar13 * puVar5[1] * 2" (binary_expression "uVar13 * puVar5[1]" (identifier "uVar13") (* "*") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (* "*") (number_literal "2")) (+ "+") (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "piVar25 = aiStack_50;" (assignment_expression "piVar25 = aiStack_50" (identifier "piVar25") (= "=") (identifier "aiStack_50")) (; ";")) (expression_statement "lVar29 = lVar1;" (assignment_expression "lVar29 = lVar1" (identifier "lVar29") (= "=") (identifier "lVar1")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" (else "else") (compound_statement "{\n    unaff_s4 = (uint *)((int)puVar11 + -1);\n    pcVar21 = *(code **)(puVar20 + 0x418d4);\n    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;\n    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;\n    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;\n    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);\n    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);\n    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);\n    iVar15 = *(int *)((int)piVar24 + -0xf0);\n    piVar25 = (int *)((int)unaff_s3 + iVar12);\n    if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }\n    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }\n    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);\n    unaff_s5[-0x28] = (uint)piVar25;\n    puVar18 = puVar17;\n    puVar14 = puVar5;\n    do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);\n    if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }\n    puVar14 = *(uint **)((int)piVar24 + -0xd4);\n    puVar5 = *(uint **)((int)piVar24 + -0xdc);\n    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);\n    puVar9 = puVar17 + 1;\n    puVar18 = puVar9;\n    puVar11 = puVar14;\n    param_4 = puVar5;\n    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();\n    lVar29 = CONCAT44(puVar9,puVar18);\n    puVar22 = *(undefined **)((int)piVar24 + -0xf0);\n  }" ({ "{") (expression_statement "unaff_s4 = (uint *)((int)puVar11 + -1);" (assignment_expression "unaff_s4 = (uint *)((int)puVar11 + -1)" (identifier "unaff_s4") (= "=") (cast_expression "(uint *)((int)puVar11 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + -1)" (( "(") (binary_expression "(int)puVar11 + -1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "pcVar21 = *(code **)(puVar20 + 0x418d4);" (assignment_expression "pcVar21 = *(code **)(puVar20 + 0x418d4)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar20 + 0x418d4)" (* "*") (cast_expression "(code **)(puVar20 + 0x418d4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar20 + 0x418d4)" (( "(") (binary_expression "puVar20 + 0x418d4" (identifier "puVar20") (+ "+") (number_literal "0x418d4")) () ")"))))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0xdc) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0xdc) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0xdc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xdc)" (( "(") (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xdc")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;" (assignment_expression "*(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xd8)" (( "(") (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd8")) () ")")))) (= "=") (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4" (pointer_expression "*(int *)((int)piVar24 + -0xcc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xcc)" (( "(") (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xcc")) () ")")))) (= "=") (binary_expression "(int)unaff_s4 * 4" (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);" (assignment_expression "*(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200)" (pointer_expression "*(undefined1 **)((int)piVar24 + -0xd4)" (* "*") (cast_expression "(undefined1 **)((int)piVar24 + -0xd4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xd4)" (( "(") (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd4")) () ")")))) (= "=") (cast_expression "(undefined1 *)((int)piVar24 + -200)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -200)" (( "(") (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-200")) () ")")))) (; ";")) (expression_statement "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);" (assignment_expression "unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4])" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)(uVar13 * puVar5[(int)unaff_s4])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 * puVar5[(int)unaff_s4])" (( "(") (binary_expression "uVar13 * puVar5[(int)unaff_s4]" (identifier "uVar13") (* "*") (subscript_expression "puVar5[(int)unaff_s4]" (identifier "puVar5") ([ "[") (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4")) (] "]"))) () ")")))) (; ";")) (expression_statement "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);" (assignment_expression "iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" (identifier "iVar12") (= "=") (call_expression "(*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13)" (( "(") (cast_expression "(undefined1 *)((int)piVar24 + -200)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -200)" (( "(") (binary_expression "(int)piVar24 + -200" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-200")) () ")"))) (, ",") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) (, ",") (binary_expression "(int)puVar11 + -2" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "-2")) (, ",") (identifier "uVar13") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "piVar25 = (int *)((int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)unaff_s3 + iVar12)" (identifier "piVar25") (= "=") (cast_expression "(int *)((int)unaff_s3 + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + iVar12)" (( "(") (binary_expression "(int)unaff_s3 + iVar12" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (identifier "iVar12")) () ")")))) (; ";")) (if_statement "if ((int)unaff_s4 < 4) {\n      iVar12 = 1;\n    }\n    else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" (if "if") (parenthesized_expression "((int)unaff_s4 < 4)" (( "(") (binary_expression "(int)unaff_s4 < 4" (cast_expression "(int)unaff_s4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s4")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n      iVar12 = 1;\n    }" ({ "{") (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" (identifier "iVar12") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" (else "else") (compound_statement "{\n      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;\n      unaff_s4 = puVar5 + (int)puVar11;\n      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);\n      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));\n      unaff_s7 = puVar5 + 2;\n      puVar18 = puVar11 + -1;\n      do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);\n      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;\n    }" ({ "{") (expression_statement "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;" (assignment_expression "*(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0xd0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xd0)" (( "(") (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd0")) () ")")))) (= "=") (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (- "-") (number_literal "5U"))) (; ";")) (expression_statement "unaff_s4 = puVar5 + (int)puVar11;" (assignment_expression "unaff_s4 = puVar5 + (int)puVar11" (identifier "unaff_s4") (= "=") (binary_expression "puVar5 + (int)puVar11" (identifier "puVar5") (+ "+") (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")))) (; ";")) (expression_statement "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);" (assignment_expression "unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0)" (identifier "unaff_s6") (= "=") (cast_expression "(undefined1 *)((int)piVar24 + -0xc0)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xc0)" (( "(") (binary_expression "(int)piVar24 + -0xc0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xc0")) () ")")))) (; ";")) (expression_statement "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));" (assignment_expression "*(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (pointer_expression "*(uint *)((int)piVar24 + -0xe4)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0xe4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xe4)" (( "(") (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xe4")) () ")")))) (= "=") (binary_expression "(int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe))" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (parenthesized_expression "(-6 - ((int)puVar11 - 5U & 0xfffffffe))" (( "(") (binary_expression "-6 - ((int)puVar11 - 5U & 0xfffffffe)" (number_literal "-6") (- "-") (parenthesized_expression "((int)puVar11 - 5U & 0xfffffffe)" (( "(") (binary_expression "(int)puVar11 - 5U & 0xfffffffe" (binary_expression "(int)puVar11 - 5U" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (- "-") (number_literal "5U")) (& "&") (number_literal "0xfffffffe")) () ")"))) () ")")))) (; ";")) (expression_statement "unaff_s7 = puVar5 + 2;" (assignment_expression "unaff_s7 = puVar5 + 2" (identifier "unaff_s7") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar18 = puVar11 + -1;" (assignment_expression "puVar18 = puVar11 + -1" (identifier "puVar18") (= "=") (binary_expression "puVar11 + -1" (identifier "puVar11") (+ "+") (number_literal "-1"))) (; ";")) (do_statement "do {\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);" (do "do") (compound_statement "{\n        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);\n        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);\n        puVar18 = (uint *)((int)puVar18 + -2);\n        iVar15 = *(int *)((int)piVar24 + -0xf0);\n        unaff_s4 = unaff_s4 + -1;\n        unaff_s6 = unaff_s6 + 8;\n        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);\n        unaff_s7 = unaff_s7 + 1;\n      }" ({ "{") (expression_statement "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);" (assignment_expression "unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2])" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)(unaff_s7[-1] * unaff_s4[-2])" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s7[-1] * unaff_s4[-2])" (( "(") (binary_expression "unaff_s7[-1] * unaff_s4[-2]" (subscript_expression "unaff_s7[-1]" (identifier "unaff_s7") ([ "[") (number_literal "-1") (] "]")) (* "*") (subscript_expression "unaff_s4[-2]" (identifier "unaff_s4") ([ "[") (number_literal "-2") (] "]"))) () ")")))) (; ";")) (expression_statement "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);" (assignment_expression "iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" (parenthesized_expression "(**(code **)(iVar15 + -0x7f70))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7f70)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7f70)" (* "*") (cast_expression "(code **)(iVar15 + -0x7f70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7f70)" (( "(") (binary_expression "iVar15 + -0x7f70" (identifier "iVar15") (+ "+") (number_literal "-0x7f70")) () ")"))))) () ")")) (argument_list "(unaff_s6,unaff_s7,puVar18,unaff_s7[-1])" (( "(") (identifier "unaff_s6") (, ",") (identifier "unaff_s7") (, ",") (identifier "puVar18") (, ",") (subscript_expression "unaff_s7[-1]" (identifier "unaff_s7") ([ "[") (number_literal "-1") (] "]")) () ")")))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar18 + -2);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + -2)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + -2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + -2)" (( "(") (binary_expression "(int)puVar18 + -2" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (number_literal "-2")) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)((int)piVar24 + -0xf0);" (assignment_expression "iVar15 = *(int *)((int)piVar24 + -0xf0)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "unaff_s4 = unaff_s4 + -1;" (assignment_expression "unaff_s4 = unaff_s4 + -1" (identifier "unaff_s4") (= "=") (binary_expression "unaff_s4 + -1" (identifier "unaff_s4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "unaff_s6 = unaff_s6 + 8;" (assignment_expression "unaff_s6 = unaff_s6 + 8" (identifier "unaff_s6") (= "=") (binary_expression "unaff_s6 + 8" (identifier "unaff_s6") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);" (assignment_expression "piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12)" (identifier "piVar25") (= "=") (cast_expression "(int *)((int)piVar25 + (int)unaff_s3 + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar25 + (int)unaff_s3 + iVar12)" (( "(") (binary_expression "(int)piVar25 + (int)unaff_s3 + iVar12" (binary_expression "(int)piVar25 + (int)unaff_s3" (cast_expression "(int)piVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar25")) (+ "+") (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3"))) (+ "+") (identifier "iVar12")) () ")")))) (; ";")) (expression_statement "unaff_s7 = unaff_s7 + 1;" (assignment_expression "unaff_s7 = unaff_s7 + 1" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s7 + 1" (identifier "unaff_s7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(uint **)((int)piVar24 + -0xe4) != puVar18)" (( "(") (binary_expression "*(uint **)((int)piVar24 + -0xe4) != puVar18" (pointer_expression "*(uint **)((int)piVar24 + -0xe4)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0xe4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xe4)" (( "(") (binary_expression "(int)piVar24 + -0xe4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xe4")) () ")")))) (!= "!=") (identifier "puVar18")) () ")")) (; ";")) (expression_statement "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;" (assignment_expression "iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" (identifier "iVar12") (= "=") (binary_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1) + 2" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xd0) >> 1)" (( "(") (binary_expression "*(uint *)((int)piVar24 + -0xd0) >> 1" (pointer_expression "*(uint *)((int)piVar24 + -0xd0)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0xd0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xd0)" (( "(") (binary_expression "(int)piVar24 + -0xd0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd0")) () ")")))) (>> ">>") (number_literal "1")) () ")")) (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (if_statement "if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" (if "if") (parenthesized_expression "((*(uint *)((int)piVar24 + -0xdc) & 1) != 0)" (( "(") (binary_expression "(*(uint *)((int)piVar24 + -0xdc) & 1) != 0" (parenthesized_expression "(*(uint *)((int)piVar24 + -0xdc) & 1)" (( "(") (binary_expression "*(uint *)((int)piVar24 + -0xdc) & 1" (pointer_expression "*(uint *)((int)piVar24 + -0xdc)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0xdc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xdc)" (( "(") (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xdc")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);\n    }" ({ "{") (expression_statement "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);" (assignment_expression "piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" (identifier "piVar25") (= "=") (cast_expression "(int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25)" (( "(") (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25" (binary_expression "(puVar5 + iVar12)[1] * puVar5[iVar12]" (subscript_expression "(puVar5 + iVar12)[1]" (parenthesized_expression "(puVar5 + iVar12)" (( "(") (binary_expression "puVar5 + iVar12" (identifier "puVar5") (+ "+") (identifier "iVar12")) () ")")) ([ "[") (number_literal "1") (] "]")) (* "*") (subscript_expression "puVar5[iVar12]" (identifier "puVar5") ([ "[") (identifier "iVar12") (] "]"))) (+ "+") (cast_expression "(int)piVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar25"))) () ")")))) (; ";")) (} "}"))) (expression_statement "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);" (assignment_expression "unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" (identifier "unaff_s5") (= "=") (cast_expression "(uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28)" (( "(") (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28" (binary_expression "(int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (binary_expression "*(int *)((int)piVar24 + -0xd8) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xd8)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xd8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xd8)" (( "(") (binary_expression "(int)piVar24 + -0xd8" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd8")) () ")")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x28")) () ")")))) (; ";")) (expression_statement "unaff_s5[-0x28] = (uint)piVar25;" (assignment_expression "unaff_s5[-0x28] = (uint)piVar25" (subscript_expression "unaff_s5[-0x28]" (identifier "unaff_s5") ([ "[") (number_literal "-0x28") (] "]")) (= "=") (cast_expression "(uint)piVar25" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar25"))) (; ";")) (expression_statement "puVar18 = puVar17;" (assignment_expression "puVar18 = puVar17" (identifier "puVar18") (= "=") (identifier "puVar17")) (; ";")) (expression_statement "puVar14 = puVar5;" (assignment_expression "puVar14 = puVar5" (identifier "puVar14") (= "=") (identifier "puVar5")) (; ";")) (do_statement "do {\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);" (do "do") (compound_statement "{\n      uVar13 = *puVar14;\n      puVar9 = puVar18 + 2;\n      puVar14 = puVar14 + 1;\n      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;\n      *puVar18 = (uint)lVar29;\n      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);\n      puVar18 = puVar9;\n    }" ({ "{") (expression_statement "uVar13 = *puVar14;" (assignment_expression "uVar13 = *puVar14" (identifier "uVar13") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar9 = puVar18 + 2;" (assignment_expression "puVar9 = puVar18 + 2" (identifier "puVar9") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;" (assignment_expression "lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13" (identifier "lVar29") (= "=") (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar13" (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")) (* "*") (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")))) (; ";")) (expression_statement "*puVar18 = (uint)lVar29;" (assignment_expression "*puVar18 = (uint)lVar29" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (cast_expression "(uint)lVar29" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar29"))) (; ";")) (expression_statement "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);" (assignment_expression "puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20)" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "(uint)((ulonglong)lVar29 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar29 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar29")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" (identifier "puVar18") (= "=") (identifier "puVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 + ((int)puVar11 >> 1) * 2 != puVar9)" (( "(") (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2 != puVar9" (binary_expression "puVar17 + ((int)puVar11 >> 1) * 2" (identifier "puVar17") (+ "+") (binary_expression "((int)puVar11 >> 1) * 2" (parenthesized_expression "((int)puVar11 >> 1)" (( "(") (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (>> ">>") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) (!= "!=") (identifier "puVar9")) () ")")) (; ";")) (if_statement "if (((uint)puVar11 & 1) != 0) {\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" (if "if") (parenthesized_expression "(((uint)puVar11 & 1) != 0)" (( "(") (binary_expression "((uint)puVar11 & 1) != 0" (parenthesized_expression "((uint)puVar11 & 1)" (( "(") (binary_expression "(uint)puVar11 & 1" (cast_expression "(uint)puVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar11")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));\n      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];\n    }" ({ "{") (expression_statement "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));" (assignment_expression "piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" (identifier "piVar25") (= "=") (cast_expression "(int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar17 + *(int *)((int)piVar24 + -0xcc))" (( "(") (binary_expression "(int)puVar17 + *(int *)((int)piVar24 + -0xcc)" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (pointer_expression "*(int *)((int)piVar24 + -0xcc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xcc)" (( "(") (binary_expression "(int)piVar24 + -0xcc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xcc")) () ")"))))) () ")")))) (; ";")) (expression_statement "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];" (assignment_expression "*piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (pointer_expression "*piVar25" (* "*") (identifier "piVar25")) (= "=") (binary_expression "puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1]" (subscript_expression "puVar5[(int)puVar11 >> 1]" (identifier "puVar5") ([ "[") (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (>> ">>") (number_literal "1")) (] "]")) (* "*") (subscript_expression "puVar5[(int)puVar11 >> 1]" (identifier "puVar5") ([ "[") (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (>> ">>") (number_literal "1")) (] "]")))) (; ";")) (} "}"))) (expression_statement "puVar14 = *(uint **)((int)piVar24 + -0xd4);" (assignment_expression "puVar14 = *(uint **)((int)piVar24 + -0xd4)" (identifier "puVar14") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -0xd4)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0xd4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xd4)" (( "(") (binary_expression "(int)piVar24 + -0xd4" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xd4")) () ")"))))) (; ";")) (expression_statement "puVar5 = *(uint **)((int)piVar24 + -0xdc);" (assignment_expression "puVar5 = *(uint **)((int)piVar24 + -0xdc)" (identifier "puVar5") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -0xdc)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0xdc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xdc)" (( "(") (binary_expression "(int)piVar24 + -0xdc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xdc")) () ")"))))) (; ";")) (expression_statement "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);" (call_expression "(**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ad4))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7ad4)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7ad4)" (* "*") (cast_expression "(code **)(iVar15 + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7ad4)" (( "(") (binary_expression "iVar15 + -0x7ad4" (identifier "iVar15") (+ "+") (number_literal "-0x7ad4")) () ")"))))) () ")")) (argument_list "(puVar14,puVar14,puVar5,1)" (( "(") (identifier "puVar14") (, ",") (identifier "puVar14") (, ",") (identifier "puVar5") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "puVar9 = puVar17 + 1;" (assignment_expression "puVar9 = puVar17 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = puVar9;" (assignment_expression "puVar18 = puVar9" (identifier "puVar18") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar11 = puVar14;" (assignment_expression "puVar11 = puVar14" (identifier "puVar11") (= "=") (identifier "puVar14")) (; ";")) (expression_statement "param_4 = puVar5;" (assignment_expression "param_4 = puVar5" (identifier "param_4") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();" (call_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))()" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))" (( "(") (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" (* "*") (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" (* "*") (cast_expression "(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)piVar24 + -0xf0) + -0x7d0c)" (( "(") (binary_expression "*(int *)((int)piVar24 + -0xf0) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")")))) (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "lVar29 = CONCAT44(puVar9,puVar18);" (assignment_expression "lVar29 = CONCAT44(puVar9,puVar18)" (identifier "lVar29") (= "=") (call_expression "CONCAT44(puVar9,puVar18)" (identifier "CONCAT44") (argument_list "(puVar9,puVar18)" (( "(") (identifier "puVar9") (, ",") (identifier "puVar18") () ")")))) (; ";")) (expression_statement "puVar22 = *(undefined **)((int)piVar24 + -0xf0);" (assignment_expression "puVar22 = *(undefined **)((int)piVar24 + -0xf0)" (identifier "puVar22") (= "=") (pointer_expression "*(undefined **)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(undefined **)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0))" (( "(") (binary_expression "*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)" (pointer_expression "*(int *)((int)piVar24 + -0x2c)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x2c)" (( "(") (binary_expression "(int)piVar24 + -0x2c" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "**(int **)((int)piVar24 + -0xe0)" (* "*") (pointer_expression "*(int **)((int)piVar24 + -0xe0)" (* "*") (cast_expression "(int **)((int)piVar24 + -0xe0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0xe0)" (( "(") (binary_expression "(int)piVar24 + -0xe0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xe0")) () ")")))))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar21 = *(code **)(puVar22 + -0x7b70);" (assignment_expression "pcVar21 = *(code **)(puVar22 + -0x7b70)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(puVar22 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar22 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar22 + -0x7b70)" (( "(") (binary_expression "puVar22 + -0x7b70" (identifier "puVar22") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "pcVar28 = __gmpn_toom22_mul;" (assignment_expression "pcVar28 = __gmpn_toom22_mul" (identifier "pcVar28") (= "=") (identifier "__gmpn_toom22_mul")) (; ";")) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar12 = (int)((ulonglong)lVar29 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar29 >> 0x20)" (identifier "iVar12") (= "=") (cast_expression "(int)((ulonglong)lVar29 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar29 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar29 >> 0x20" (cast_expression "(ulonglong)lVar29" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar29")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x128) = puVar14;" (assignment_expression "*(uint **)((int)piVar24 + -0x128) = puVar14" (pointer_expression "*(uint **)((int)piVar24 + -0x128)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x128)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x128)" (( "(") (binary_expression "(int)piVar24 + -0x128" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x128")) () ")")))) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "iVar15 = (int)puVar11 >> 1;" (assignment_expression "iVar15 = (int)puVar11 >> 1" (identifier "iVar15") (= "=") (binary_expression "(int)puVar11 >> 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "*(int **)((int)piVar24 + -0x108) = piVar25;" (assignment_expression "*(int **)((int)piVar24 + -0x108) = piVar25" (pointer_expression "*(int **)((int)piVar24 + -0x108)" (* "*") (cast_expression "(int **)((int)piVar24 + -0x108)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x108)" (( "(") (binary_expression "(int)piVar24 + -0x108" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (identifier "piVar25")) (; ";")) (expression_statement "iVar26 = (int)puVar11 - iVar15;" (assignment_expression "iVar26 = (int)puVar11 - iVar15" (identifier "iVar26") (= "=") (binary_expression "(int)puVar11 - iVar15" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (- "-") (identifier "iVar15"))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x114) = unaff_s5;" (assignment_expression "*(uint **)((int)piVar24 + -0x114) = unaff_s5" (pointer_expression "*(uint **)((int)piVar24 + -0x114)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x114)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x114)" (( "(") (binary_expression "(int)piVar24 + -0x114" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x114")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x124) = puVar5;" (assignment_expression "*(uint **)((int)piVar24 + -0x124) = puVar5" (pointer_expression "*(uint **)((int)piVar24 + -0x124)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x124)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x124)" (( "(") (binary_expression "(int)piVar24 + -0x124" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x124")) () ")")))) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;" (assignment_expression "*(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0" (pointer_expression "*(code **)((int)piVar24 + -0x140)" (* "*") (cast_expression "(code **)((int)piVar24 + -0x140)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")")))) (= "=") (binary_expression "pcVar21 + 0x495d0" (identifier "pcVar21") (+ "+") (number_literal "0x495d0"))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x118) = unaff_s4;" (assignment_expression "*(uint **)((int)piVar24 + -0x118) = unaff_s4" (pointer_expression "*(uint **)((int)piVar24 + -0x118)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x118)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x118)" (( "(") (binary_expression "(int)piVar24 + -0x118" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x118")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x11c) = unaff_s3;" (assignment_expression "*(uint **)((int)piVar24 + -0x11c) = unaff_s3" (pointer_expression "*(uint **)((int)piVar24 + -0x11c)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x11c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x11c)" (( "(") (binary_expression "(int)piVar24 + -0x11c" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x11c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x120) = puVar17;" (assignment_expression "*(uint **)((int)piVar24 + -0x120) = puVar17" (pointer_expression "*(uint **)((int)piVar24 + -0x120)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x120)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x120)" (( "(") (binary_expression "(int)piVar24 + -0x120" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x120")) () ")")))) (= "=") (identifier "puVar17")) (; ";")) (expression_statement "*(code **)((int)piVar24 + -0x104) = pcVar28;" (assignment_expression "*(code **)((int)piVar24 + -0x104) = pcVar28" (pointer_expression "*(code **)((int)piVar24 + -0x104)" (* "*") (cast_expression "(code **)((int)piVar24 + -0x104)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x104)" (( "(") (binary_expression "(int)piVar24 + -0x104" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x104")) () ")")))) (= "=") (identifier "pcVar28")) (; ";")) (expression_statement "puVar17 = (uint *)(iVar12 + iVar26 * 4);" (assignment_expression "puVar17 = (uint *)(iVar12 + iVar26 * 4)" (identifier "puVar17") (= "=") (cast_expression "(uint *)(iVar12 + iVar26 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar26 * 4)" (( "(") (binary_expression "iVar12 + iVar26 * 4" (identifier "iVar12") (+ "+") (binary_expression "iVar26 * 4" (identifier "iVar26") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -0x10c) = unaff_s7;" (assignment_expression "*(uint **)((int)piVar24 + -0x10c) = unaff_s7" (pointer_expression "*(uint **)((int)piVar24 + -0x10c)" (* "*") (cast_expression "(uint **)((int)piVar24 + -0x10c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x10c)" (( "(") (binary_expression "(int)piVar24 + -0x10c" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x10c")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;" (assignment_expression "*(undefined1 **)((int)piVar24 + -0x110) = unaff_s6" (pointer_expression "*(undefined1 **)((int)piVar24 + -0x110)" (* "*") (cast_expression "(undefined1 **)((int)piVar24 + -0x110)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -0x110)" (( "(") (binary_expression "(int)piVar24 + -0x110" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x110")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0xfc) = (int)lVar29;" (assignment_expression "*(int *)((int)piVar24 + -0xfc) = (int)lVar29" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (= "=") (cast_expression "(int)lVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar29"))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;" (assignment_expression "*(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4" (pointer_expression "*(int *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (= "=") (binary_expression "(int)lVar29 + iVar26 * 4" (cast_expression "(int)lVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar29")) (+ "+") (binary_expression "iVar26 * 4" (identifier "iVar26") (* "*") (number_literal "4")))) (; ";")) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26" (identifier "iVar16") (= "=") (binary_expression "*(int *)((int)piVar24 + -0xf0) - iVar26" (pointer_expression "*(int *)((int)piVar24 + -0xf0)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xf0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xf0)" (( "(") (binary_expression "(int)piVar24 + -0xf0" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xf0")) () ")")))) (- "-") (identifier "iVar26"))) (; ";")) (if_statement "if (iVar15 == iVar26) {\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }\n  else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" (if "if") (parenthesized_expression "(iVar15 == iVar26)" (( "(") (binary_expression "iVar15 == iVar26" (identifier "iVar15") (== "==") (identifier "iVar26")) () ")")) (compound_statement "{\n    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);\n    iVar8 = iVar15;\n    do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n    if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }\nLAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    if (iVar26 != iVar16) goto LAB_00055b5c;\nLAB_00055ed4:\n    puVar11 = param_4 + iVar26;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar26;\n    do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" ({ "{") (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" (identifier "puVar5") (= "=") (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4)" (( "(") (binary_expression "*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (binary_expression "(iVar15 + -1) * 4" (parenthesized_expression "(iVar15 + -1)" (( "(") (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" (identifier "iVar8") (= "=") (identifier "iVar15")) (; ";")) (do_statement "do {\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" (do "do") (compound_statement "{\n      iVar8 = iVar8 + -1;\n      pcVar28 = *(code **)(pcVar21 + 0x41aa4);\n      if (iVar8 < 0) goto LAB_00055eb0;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" ({ "{") (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" (* "*") (cast_expression "(code **)(pcVar21 + 0x41aa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x41aa4)" (( "(") (binary_expression "pcVar21 + 0x41aa4" (identifier "pcVar21") (+ "+") (number_literal "0x41aa4")) () ")"))))) (; ";")) (if_statement "if (iVar8 < 0) goto LAB_00055eb0;" (if "if") (parenthesized_expression "(iVar8 < 0)" (( "(") (binary_expression "iVar8 < 0" (identifier "iVar8") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00055eb0;" (goto "goto") (statement_identifier "LAB_00055eb0") (; ";"))) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 == puVar5[iVar26 + 1]" (identifier "uVar13") (== "==") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (; ";")) (expression_statement "pcVar28 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar28 = *(code **)(pcVar21 + 0x41aa4)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" (* "*") (cast_expression "(code **)(pcVar21 + 0x41aa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x41aa4)" (( "(") (binary_expression "pcVar21 + 0x41aa4" (identifier "pcVar21") (+ "+") (number_literal "0x41aa4")) () ")"))))) (; ";")) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" (if "if") (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 <= puVar5[iVar26 + 1]" (identifier "uVar13") (<= "<=") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (compound_statement "{\n      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      *(undefined4 *)((int)piVar24 + -0x130) = 1;\n      goto LAB_00055b54;\n    }" ({ "{") (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)\n                 ,iVar26)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (identifier "iVar26") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00055b54;" (goto "goto") (statement_identifier "LAB_00055b54") (; ";")) (} "}"))) (labeled_statement "LAB_00055eb0:\n    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" (statement_identifier "LAB_00055eb0") (: ":") (expression_statement "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26);" (call_expression "(*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),\n               iVar26)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (identifier "iVar26") () ")"))) (; ";"))) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar26 != iVar16) goto LAB_00055b5c;" (if "if") (parenthesized_expression "(iVar26 != iVar16)" (( "(") (binary_expression "iVar26 != iVar16" (identifier "iVar26") (!= "!=") (identifier "iVar16")) () ")")) (goto_statement "goto LAB_00055b5c;" (goto "goto") (statement_identifier "LAB_00055b5c") (; ";"))) (labeled_statement "LAB_00055ed4:\n    puVar11 = param_4 + iVar26;" (statement_identifier "LAB_00055ed4") (: ":") (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" (identifier "puVar11") (= "=") (binary_expression "param_4 + iVar26" (identifier "param_4") (+ "+") (identifier "iVar26"))) (; ";"))) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" (identifier "puVar5") (= "=") (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" (identifier "param_4") (+ "+") (identifier "iVar26")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar4 = iVar26;" (assignment_expression "iVar4 = iVar26" (identifier "iVar4") (= "=") (identifier "iVar26")) (; ";")) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" (do "do") (compound_statement "{\n      iVar4 = iVar4 + -1;\n      pcVar21 = *(code **)(iVar8 + -0x7b2c);\n      if (iVar4 < 0) goto LAB_00055f0c;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" ({ "{") (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar8 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7b2c)" (( "(") (binary_expression "iVar8 + -0x7b2c" (identifier "iVar8") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (if_statement "if (iVar4 < 0) goto LAB_00055f0c;" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00055f0c;" (goto "goto") (statement_identifier "LAB_00055f0c") (; ";"))) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 == puVar5[iVar26 + 1]" (identifier "uVar13") (== "==") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (; ";")) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar8 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7b2c)" (( "(") (binary_expression "iVar8 + -0x7b2c" (identifier "iVar8") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" (if "if") (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" (( "(") (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]")) (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\nLAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,param_4,puVar11,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n    }" ({ "{") (labeled_statement "LAB_00055f0c:\n      *(uint **)((int)piVar24 + -300) = puVar11;" (statement_identifier "LAB_00055f0c") (: ":") (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (identifier "puVar11")) (; ";"))) (expression_statement "(*pcVar21)(puVar17,param_4,puVar11,iVar26);" (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar26)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar17,param_4,puVar11,iVar26)" (( "(") (identifier "puVar17") (, ",") (identifier "param_4") (, ",") (identifier "puVar11") (, ",") (identifier "iVar26") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" (identifier "puVar11") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" (else "else") (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar26);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" ({ "{") (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar26);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar26)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar17,puVar11,param_4,iVar26)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar11") (, ",") (identifier "param_4") (, ",") (identifier "iVar26") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" (identifier "puVar11") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (^ "^") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" (else "else") (compound_statement "{\n    iVar4 = iVar15 * 4;\n    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);\n    if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }\n    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    *(undefined4 *)((int)piVar24 + -0x130) = 0;\n    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;\nLAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;\nLAB_00055b5c:\n    puVar11 = param_4 + iVar26;\n    iVar19 = iVar26 - iVar16;\n    puVar5 = param_4 + iVar26 + -1;\n    iVar4 = iVar19;\n    do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);\n    puVar5 = param_4 + iVar16 + -1;\n    iVar4 = iVar16;\n    do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);\n    pcVar21 = *(code **)(iVar8 + -0x7b2c);\n    if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }\n  }" ({ "{") (expression_statement "iVar4 = iVar15 * 4;" (assignment_expression "iVar4 = iVar15 * 4" (identifier "iVar4") (= "=") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);" (assignment_expression "iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" (identifier "iVar19") (= "=") (pointer_expression "*(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" (* "*") (cast_expression "(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4)" (( "(") (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (identifier "iVar4")) () ")"))))) (; ";")) (if_statement "if (iVar19 == 0) {\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }\n    else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);\n      iVar8 = iVar15;\n      do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n      if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }\n    }" ({ "{") (expression_statement "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);" (assignment_expression "puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" (identifier "puVar5") (= "=") (cast_expression "(uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4)" (( "(") (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4 + -4" (binary_expression "*(int *)((int)piVar24 + -0xfc) + iVar4" (pointer_expression "*(int *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "iVar8 = iVar15;" (assignment_expression "iVar8 = iVar15" (identifier "iVar8") (= "=") (identifier "iVar15")) (; ";")) (do_statement "do {\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      } while (uVar13 == puVar5[iVar26 + 1]);" (do "do") (compound_statement "{\n        iVar8 = iVar8 + -1;\n        if (iVar8 < 0) goto LAB_00055b2c;\n        uVar13 = *puVar5;\n        puVar5 = puVar5 + -1;\n      }" ({ "{") (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar8 < 0) goto LAB_00055b2c;" (if "if") (parenthesized_expression "(iVar8 < 0)" (( "(") (binary_expression "iVar8 < 0" (identifier "iVar8") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00055b2c;" (goto "goto") (statement_identifier "LAB_00055b2c") (; ";"))) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 == puVar5[iVar26 + 1]" (identifier "uVar13") (== "==") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (; ";")) (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" (* "*") (cast_expression "(code **)(pcVar21 + 0x41aa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x41aa4)" (( "(") (binary_expression "pcVar21 + 0x41aa4" (identifier "pcVar21") (+ "+") (number_literal "0x41aa4")) () ")"))))) (; ";")) (if_statement "if (uVar13 <= puVar5[iVar26 + 1]) {\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" (if "if") (parenthesized_expression "(uVar13 <= puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 <= puVar5[iVar26 + 1]" (identifier "uVar13") (<= "<=") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (compound_statement "{\n        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        *(undefined4 *)((int)piVar24 + -0x130) = 1;\n        *(int *)(iVar12 + iVar4) = 0;\n        goto LAB_00055b54;\n      }" ({ "{") (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0x134),\n                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (identifier "iVar15") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 1;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 1" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(iVar12 + iVar4) = 0;" (assignment_expression "*(int *)(iVar12 + iVar4) = 0" (pointer_expression "*(int *)(iVar12 + iVar4)" (* "*") (cast_expression "(int *)(iVar12 + iVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar4)" (( "(") (binary_expression "iVar12 + iVar4" (identifier "iVar12") (+ "+") (identifier "iVar4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00055b54;" (goto "goto") (statement_identifier "LAB_00055b54") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" (else "else") (compound_statement "{\nLAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);\n    }" ({ "{") (labeled_statement "LAB_00055b2c:\n      pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (statement_identifier "LAB_00055b2c") (: ":") (expression_statement "pcVar21 = *(code **)(pcVar21 + 0x41aa4);" (assignment_expression "pcVar21 = *(code **)(pcVar21 + 0x41aa4)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(pcVar21 + 0x41aa4)" (* "*") (cast_expression "(code **)(pcVar21 + 0x41aa4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x41aa4)" (( "(") (binary_expression "pcVar21 + 0x41aa4" (identifier "pcVar21") (+ "+") (number_literal "0x41aa4")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);" (assignment_expression "iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" (identifier "iVar6") (= "=") (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),\n                       *(undefined4 *)((int)piVar24 + -0x134),iVar15)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (identifier "iVar15") () ")")))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)((int)piVar24 + -0x130) = 0;" (assignment_expression "*(undefined4 *)((int)piVar24 + -0x130) = 0" (pointer_expression "*(undefined4 *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar12 + iVar4) = iVar19 - iVar6;" (assignment_expression "*(int *)(iVar12 + iVar4) = iVar19 - iVar6" (pointer_expression "*(int *)(iVar12 + iVar4)" (* "*") (cast_expression "(int *)(iVar12 + iVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + iVar4)" (( "(") (binary_expression "iVar12 + iVar4" (identifier "iVar12") (+ "+") (identifier "iVar4")) () ")")))) (= "=") (binary_expression "iVar19 - iVar6" (identifier "iVar19") (- "-") (identifier "iVar6"))) (; ";")) (labeled_statement "LAB_00055b54:\n    if (iVar26 == iVar16) goto LAB_00055ed4;" (statement_identifier "LAB_00055b54") (: ":") (if_statement "if (iVar26 == iVar16) goto LAB_00055ed4;" (if "if") (parenthesized_expression "(iVar26 == iVar16)" (( "(") (binary_expression "iVar26 == iVar16" (identifier "iVar26") (== "==") (identifier "iVar16")) () ")")) (goto_statement "goto LAB_00055ed4;" (goto "goto") (statement_identifier "LAB_00055ed4") (; ";")))) (labeled_statement "LAB_00055b5c:\n    puVar11 = param_4 + iVar26;" (statement_identifier "LAB_00055b5c") (: ":") (expression_statement "puVar11 = param_4 + iVar26;" (assignment_expression "puVar11 = param_4 + iVar26" (identifier "puVar11") (= "=") (binary_expression "param_4 + iVar26" (identifier "param_4") (+ "+") (identifier "iVar26"))) (; ";"))) (expression_statement "iVar19 = iVar26 - iVar16;" (assignment_expression "iVar19 = iVar26 - iVar16" (identifier "iVar19") (= "=") (binary_expression "iVar26 - iVar16" (identifier "iVar26") (- "-") (identifier "iVar16"))) (; ";")) (expression_statement "puVar5 = param_4 + iVar26 + -1;" (assignment_expression "puVar5 = param_4 + iVar26 + -1" (identifier "puVar5") (= "=") (binary_expression "param_4 + iVar26 + -1" (binary_expression "param_4 + iVar26" (identifier "param_4") (+ "+") (identifier "iVar26")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar4 = iVar19;" (assignment_expression "iVar4 = iVar19" (identifier "iVar4") (= "=") (identifier "iVar19")) (; ";")) (do_statement "do {\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    } while (iVar4 != 0);" (do "do") (compound_statement "{\n      uVar13 = *puVar5;\n      iVar4 = iVar4 + -1;\n      puVar5 = puVar5 + -1;\n      if (uVar13 != 0) goto LAB_00055b90;\n    }" ({ "{") (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (uVar13 != 0) goto LAB_00055b90;" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00055b90;" (goto "goto") (statement_identifier "LAB_00055b90") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar5 = param_4 + iVar16 + -1;" (assignment_expression "puVar5 = param_4 + iVar16 + -1" (identifier "puVar5") (= "=") (binary_expression "param_4 + iVar16 + -1" (binary_expression "param_4 + iVar16" (identifier "param_4") (+ "+") (identifier "iVar16")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" (identifier "iVar4") (= "=") (identifier "iVar16")) (; ";")) (do_statement "do {\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    } while (uVar13 == puVar5[iVar26 + 1]);" (do "do") (compound_statement "{\n      iVar4 = iVar4 + -1;\n      if (iVar4 < 0) goto LAB_00055b90;\n      uVar13 = *puVar5;\n      puVar5 = puVar5 + -1;\n    }" ({ "{") (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar4 < 0) goto LAB_00055b90;" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00055b90;" (goto "goto") (statement_identifier "LAB_00055b90") (; ";"))) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "puVar5 = puVar5 + -1;" (assignment_expression "puVar5 = puVar5 + -1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + -1" (identifier "puVar5") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == puVar5[iVar26 + 1])" (( "(") (binary_expression "uVar13 == puVar5[iVar26 + 1]" (identifier "uVar13") (== "==") (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]"))) () ")")) (; ";")) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar8 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7b2c)" (( "(") (binary_expression "iVar8 + -0x7b2c" (identifier "iVar8") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (if_statement "if (puVar5[iVar26 + 1] < uVar13) {\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }\n    else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" (if "if") (parenthesized_expression "(puVar5[iVar26 + 1] < uVar13)" (( "(") (binary_expression "puVar5[iVar26 + 1] < uVar13" (subscript_expression "puVar5[iVar26 + 1]" (identifier "puVar5") ([ "[") (binary_expression "iVar26 + 1" (identifier "iVar26") (+ "+") (number_literal "1")) (] "]")) (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\nLAB_00055b90:\n      iVar4 = 0;\n      if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }\n      if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }\n    }" ({ "{") (labeled_statement "LAB_00055b90:\n      iVar4 = 0;" (statement_identifier "LAB_00055b90") (: ":") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (iVar16 != 0) {\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar21 = *(code **)(iVar8 + -0x7b2c);\n        *(uint **)((int)piVar24 + -300) = puVar11;\n        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);\n        iVar8 = *(int *)((int)piVar24 + -0x140);\n        puVar11 = *(uint **)((int)piVar24 + -300);\n        iVar4 = iVar16;\n        if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }\n      }" ({ "{") (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7b2c);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7b2c)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar8 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7b2c)" (( "(") (binary_expression "iVar8 + -0x7b2c" (identifier "iVar8") (+ "+") (number_literal "-0x7b2c")) () ")"))))) (; ";")) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);" (assignment_expression "iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16)" (identifier "iVar19") (= "=") (call_expression "(*pcVar21)(puVar17,param_4,puVar11,iVar16)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar17,param_4,puVar11,iVar16)" (( "(") (identifier "puVar17") (, ",") (identifier "param_4") (, ",") (identifier "puVar11") (, ",") (identifier "iVar16") () ")")))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" (identifier "puVar11") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (expression_statement "iVar4 = iVar16;" (assignment_expression "iVar4 = iVar16" (identifier "iVar4") (= "=") (identifier "iVar16")) (; ";")) (if_statement "if (iVar19 != 0) {\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar5 = param_4 + iVar16;\n          if (iVar26 <= iVar16) goto LAB_00055bc8;\n          puVar18 = puVar17 + iVar16;\n          uVar13 = *puVar5;\n          *puVar18 = uVar13 - 1;\n          while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }\n        }" ({ "{") (expression_statement "puVar5 = param_4 + iVar16;" (assignment_expression "puVar5 = param_4 + iVar16" (identifier "puVar5") (= "=") (binary_expression "param_4 + iVar16" (identifier "param_4") (+ "+") (identifier "iVar16"))) (; ";")) (if_statement "if (iVar26 <= iVar16) goto LAB_00055bc8;" (if "if") (parenthesized_expression "(iVar26 <= iVar16)" (( "(") (binary_expression "iVar26 <= iVar16" (identifier "iVar26") (<= "<=") (identifier "iVar16")) () ")")) (goto_statement "goto LAB_00055bc8;" (goto "goto") (statement_identifier "LAB_00055bc8") (; ";"))) (expression_statement "puVar18 = puVar17 + iVar16;" (assignment_expression "puVar18 = puVar17 + iVar16" (identifier "puVar18") (= "=") (binary_expression "puVar17 + iVar16" (identifier "puVar17") (+ "+") (identifier "iVar16"))) (; ";")) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) (; ";")) (while_statement "while (iVar4 = iVar4 + 1, uVar13 == 0) {\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" (while "while") (parenthesized_expression "(iVar4 = iVar4 + 1, uVar13 == 0)" (( "(") (comma_expression "iVar4 = iVar4 + 1, uVar13 == 0" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n            puVar18 = puVar18 + 1;\n            if (iVar26 == iVar4) goto LAB_00055bc8;\n            uVar13 = puVar5[1];\n            puVar5 = puVar5 + 1;\n            *puVar18 = uVar13 - 1;\n          }" ({ "{") (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar26 == iVar4) goto LAB_00055bc8;" (if "if") (parenthesized_expression "(iVar26 == iVar4)" (( "(") (binary_expression "iVar26 == iVar4" (identifier "iVar26") (== "==") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_00055bc8;" (goto "goto") (statement_identifier "LAB_00055bc8") (; ";"))) (expression_statement "uVar13 = puVar5[1];" (assignment_expression "uVar13 = puVar5[1]" (identifier "uVar13") (= "=") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar18 = uVar13 - 1;" (assignment_expression "*puVar18 = uVar13 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if ((puVar17 != param_4) && (iVar4 < iVar26)) {\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" (if "if") (parenthesized_expression "((puVar17 != param_4) && (iVar4 < iVar26))" (( "(") (binary_expression "(puVar17 != param_4) && (iVar4 < iVar26)" (parenthesized_expression "(puVar17 != param_4)" (( "(") (binary_expression "puVar17 != param_4" (identifier "puVar17") (!= "!=") (identifier "param_4")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < iVar26)" (( "(") (binary_expression "iVar4 < iVar26" (identifier "iVar4") (< "<") (identifier "iVar26")) () ")"))) () ")")) (compound_statement "{\n        puVar18 = param_4 + iVar4;\n        puVar5 = puVar17 + iVar4;\n        do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);\n      }" ({ "{") (expression_statement "puVar18 = param_4 + iVar4;" (assignment_expression "puVar18 = param_4 + iVar4" (identifier "puVar18") (= "=") (binary_expression "param_4 + iVar4" (identifier "param_4") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "puVar5 = puVar17 + iVar4;" (assignment_expression "puVar5 = puVar17 + iVar4" (identifier "puVar5") (= "=") (binary_expression "puVar17 + iVar4" (identifier "puVar17") (+ "+") (identifier "iVar4"))) (; ";")) (do_statement "do {\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        } while (puVar18 != puVar11);" (do "do") (compound_statement "{\n          uVar13 = *puVar18;\n          puVar18 = puVar18 + 1;\n          *puVar5 = uVar13;\n          puVar5 = puVar5 + 1;\n        }" ({ "{") (expression_statement "uVar13 = *puVar18;" (assignment_expression "uVar13 = *puVar18" (identifier "uVar13") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = uVar13;" (assignment_expression "*puVar5 = uVar13" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != puVar11)" (( "(") (binary_expression "puVar18 != puVar11" (identifier "puVar18") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" (else "else") (compound_statement "{\n      *(uint **)((int)piVar24 + -300) = puVar11;\n      (*pcVar21)(puVar17,puVar11,param_4,iVar16);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n      puVar11 = *(uint **)((int)piVar24 + -300);\n      puVar5 = puVar17 + iVar16;\n      do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);\n      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;\n    }" ({ "{") (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "(*pcVar21)(puVar17,puVar11,param_4,iVar16);" (call_expression "(*pcVar21)(puVar17,puVar11,param_4,iVar16)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar17,puVar11,param_4,iVar16)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar11") (, ",") (identifier "param_4") (, ",") (identifier "iVar16") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "puVar11 = *(uint **)((int)piVar24 + -300);" (assignment_expression "puVar11 = *(uint **)((int)piVar24 + -300)" (identifier "puVar11") (= "=") (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (expression_statement "puVar5 = puVar17 + iVar16;" (assignment_expression "puVar5 = puVar17 + iVar16" (identifier "puVar5") (= "=") (binary_expression "puVar17 + iVar16" (identifier "puVar17") (+ "+") (identifier "iVar16"))) (; ";")) (do_statement "do {\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      } while (iVar19 != 0);" (do "do") (compound_statement "{\n        iVar19 = iVar19 + -1;\n        *puVar5 = 0;\n        puVar5 = puVar5 + 1;\n      }" ({ "{") (expression_statement "iVar19 = iVar19 + -1;" (assignment_expression "iVar19 = iVar19 + -1" (identifier "iVar19") (= "=") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;" (assignment_expression "*(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (binary_expression "*(uint *)((int)piVar24 + -0x130) ^ 1" (pointer_expression "*(uint *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(uint *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")")))) (^ "^") (number_literal "1"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_00055bc8:\n  *(int *)((int)piVar24 + -300) = iVar26 * 8;" (statement_identifier "LAB_00055bc8") (: ":") (expression_statement "*(int *)((int)piVar24 + -300) = iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -300) = iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -300)" (* "*") (cast_expression "(int *)((int)piVar24 + -300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8"))) (; ";"))) (expression_statement "*(uint **)((int)piVar24 + -300) = puVar11;" (assignment_expression "*(uint **)((int)piVar24 + -300) = puVar11" (pointer_expression "*(uint **)((int)piVar24 + -300)" (* "*") (cast_expression "(uint **)((int)piVar24 + -300)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" (if "if") (parenthesized_expression "(0x13 < iVar26)" (( "(") (binary_expression "0x13 < iVar26" (number_literal "0x13") (< "<") (identifier "iVar26")) () ")")) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" ({ "{") (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x144)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x144)" (( "(") (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (+ "+") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8")))) (; ";")) (expression_statement "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "__gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (identifier "__gmpn_toom22_mul") (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (( "(") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (, ",") (identifier "iVar12") (, ",") (identifier "iVar26") (, ",") (identifier "puVar17") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" (identifier "uVar27") (= "=") (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -300)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" (else "else") (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n    uVar27 = *(undefined4 *)((int)piVar24 + -300);\n  }" ({ "{") (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7bd0)" (* "*") (cast_expression "(code **)(iVar8 + -0x7bd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7bd0)" (( "(") (binary_expression "iVar8 + -0x7bd0" (identifier "iVar8") (+ "+") (number_literal "-0x7bd0")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (expression_statement "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);" (call_expression "(*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17)" (( "(") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (, ",") (identifier "iVar12") (, ",") (identifier "iVar26") (, ",") (identifier "puVar17") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "uVar27 = *(undefined4 *)((int)piVar24 + -300);" (assignment_expression "uVar27 = *(undefined4 *)((int)piVar24 + -300)" (identifier "uVar27") (= "=") (pointer_expression "*(undefined4 *)((int)piVar24 + -300)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -300)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -300)" (( "(") (binary_expression "(int)piVar24 + -300" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-300")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar5 = puVar17 + iVar26;" (assignment_expression "puVar5 = puVar17 + iVar26" (identifier "puVar5") (= "=") (binary_expression "puVar17 + iVar26" (identifier "puVar17") (+ "+") (identifier "iVar26"))) (; ";")) (if_statement "if (iVar16 < iVar15) {\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }\n  else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" (if "if") (parenthesized_expression "(iVar16 < iVar15)" (( "(") (binary_expression "iVar16 < iVar15" (identifier "iVar16") (< "<") (identifier "iVar15")) () ")")) (compound_statement "{\n    if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n  }" ({ "{") (if_statement "if (iVar16 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }\n    else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" (if "if") (parenthesized_expression "(iVar16 < 0x14)" (( "(") (binary_expression "iVar16 < 0x14" (identifier "iVar16") (< "<") (number_literal "0x14")) () ")")) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar16;\nLAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" ({ "{") (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7bd0)" (* "*") (cast_expression "(code **)(iVar8 + -0x7bd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7bd0)" (( "(") (binary_expression "iVar8 + -0x7bd0" (identifier "iVar8") (+ "+") (number_literal "-0x7bd0")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (labeled_statement "LAB_00055c5c:\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (statement_identifier "LAB_00055c5c") (: ":") (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (identifier "iVar15") (, ",") (identifier "uVar27") () ")"))) (; ";"))) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" (else "else") (compound_statement "{\n      if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }\n      pcVar21 = *(code **)(iVar8 + -0x7c88);\n      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n      *(int *)((int)piVar24 + -0x148) = iVar16;\n      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n      iVar8 = *(int *)((int)piVar24 + -0x140);\n    }" ({ "{") (if_statement "if (iVar15 << 2 < iVar16 * 5) {\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" (if "if") (parenthesized_expression "(iVar15 << 2 < iVar16 * 5)" (( "(") (binary_expression "iVar15 << 2 < iVar16 * 5" (binary_expression "iVar15 << 2" (identifier "iVar15") (<< "<<") (number_literal "2")) (< "<") (binary_expression "iVar16 * 5" (identifier "iVar16") (* "*") (number_literal "5"))) () ")")) (compound_statement "{\n        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n        *(int *)((int)piVar24 + -0x148) = iVar16;\n        goto LAB_00055ff8;\n      }" ({ "{") (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x144)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x144)" (( "(") (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (+ "+") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (goto_statement "goto LAB_00055ff8;" (goto "goto") (statement_identifier "LAB_00055ff8") (; ";")) (} "}"))) (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7c88);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7c88)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7c88)" (* "*") (cast_expression "(code **)(iVar8 + -0x7c88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7c88)" (( "(") (binary_expression "iVar8 + -0x7c88" (identifier "iVar8") (+ "+") (number_literal "-0x7c88")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x144)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x144)" (( "(") (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (+ "+") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar16;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar16" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "(*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (identifier "iVar15") (, ",") (identifier "uVar27") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" (else "else") (compound_statement "{\n    if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }\n    *(int *)((int)piVar24 + -0x148) = iVar15;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\nLAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" ({ "{") (if_statement "if (iVar15 < 0x14) {\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" (if "if") (parenthesized_expression "(iVar15 < 0x14)" (( "(") (binary_expression "iVar15 < 0x14" (identifier "iVar15") (< "<") (number_literal "0x14")) () ")")) (compound_statement "{\n      pcVar21 = *(code **)(iVar8 + -0x7bd0);\n      *(int *)((int)piVar24 + -0x148) = iVar15;\n      goto LAB_00055c5c;\n    }" ({ "{") (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7bd0)" (* "*") (cast_expression "(code **)(iVar8 + -0x7bd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7bd0)" (( "(") (binary_expression "iVar8 + -0x7bd0" (identifier "iVar8") (+ "+") (number_literal "-0x7bd0")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (goto_statement "goto LAB_00055c5c;" (goto "goto") (statement_identifier "LAB_00055c5c") (; ";")) (} "}"))) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar15;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar15" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x144)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x144)" (( "(") (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (+ "+") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8")))) (; ";")) (labeled_statement "LAB_00055ff8:\n    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (statement_identifier "LAB_00055ff8") (: ":") (expression_statement "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);" (call_expression "__gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (identifier "__gmpn_toom22_mul") (argument_list "(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27)" (( "(") (identifier "puVar5") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0x134)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x134)" (( "(") (binary_expression "(int)piVar24 + -0x134" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x134")) () ")")))) (, ",") (identifier "iVar15") (, ",") (identifier "uVar27") () ")"))) (; ";"))) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (0x13 < iVar26) {\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }\n  else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" (if "if") (parenthesized_expression "(0x13 < iVar26)" (( "(") (binary_expression "0x13 < iVar26" (number_literal "0x13") (< "<") (identifier "iVar26")) () ")")) (compound_statement "{\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;\n    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" ({ "{") (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;" (assignment_expression "*(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0x144)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x144)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x144)" (( "(") (binary_expression "(int)piVar24 + -0x144" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x144")) () ")")))) (= "=") (binary_expression "*(int *)((int)piVar24 + -0xec) + iVar26 * 8" (pointer_expression "*(int *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(int *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (+ "+") (binary_expression "iVar26 * 8" (identifier "iVar26") (* "*") (number_literal "8")))) (; ";")) (expression_statement "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "__gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (identifier "__gmpn_toom22_mul") (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (identifier "iVar26") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" (else "else") (compound_statement "{\n    pcVar21 = *(code **)(iVar8 + -0x7bd0);\n    *(int *)((int)piVar24 + -0x148) = iVar26;\n    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);\n    iVar8 = *(int *)((int)piVar24 + -0x140);\n  }" ({ "{") (expression_statement "pcVar21 = *(code **)(iVar8 + -0x7bd0);" (assignment_expression "pcVar21 = *(code **)(iVar8 + -0x7bd0)" (identifier "pcVar21") (= "=") (pointer_expression "*(code **)(iVar8 + -0x7bd0)" (* "*") (cast_expression "(code **)(iVar8 + -0x7bd0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7bd0)" (( "(") (binary_expression "iVar8 + -0x7bd0" (identifier "iVar8") (+ "+") (number_literal "-0x7bd0")) () ")"))))) (; ";")) (expression_statement "*(int *)((int)piVar24 + -0x148) = iVar26;" (assignment_expression "*(int *)((int)piVar24 + -0x148) = iVar26" (pointer_expression "*(int *)((int)piVar24 + -0x148)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x148)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x148)" (( "(") (binary_expression "(int)piVar24 + -0x148" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x148")) () ")")))) (= "=") (identifier "iVar26")) (; ";")) (expression_statement "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);" (call_expression "(*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (parenthesized_expression "(*pcVar21)" (( "(") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) () ")")) (argument_list "(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4)" (( "(") (identifier "iVar12") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xfc)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xfc)" (( "(") (binary_expression "(int)piVar24 + -0xfc" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xfc")) () ")")))) (, ",") (identifier "iVar26") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "iVar8 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar8 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);" (assignment_expression "iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" (identifier "iVar8") (= "=") (call_expression "(**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26)" (parenthesized_expression "(**(code **)(iVar8 + -0x7d0c))" (( "(") (pointer_expression "**(code **)(iVar8 + -0x7d0c)" (* "*") (pointer_expression "*(code **)(iVar8 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar8 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + -0x7d0c)" (( "(") (binary_expression "iVar8 + -0x7d0c" (identifier "iVar8") (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(puVar5,puVar17,puVar5,iVar26)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar17") (, ",") (identifier "puVar5") (, ",") (identifier "iVar26") () ")")))) (; ";")) (expression_statement "iVar15 = (iVar15 + iVar16) - iVar26;" (assignment_expression "iVar15 = (iVar15 + iVar16) - iVar26" (identifier "iVar15") (= "=") (binary_expression "(iVar15 + iVar16) - iVar26" (parenthesized_expression "(iVar15 + iVar16)" (( "(") (binary_expression "iVar15 + iVar16" (identifier "iVar15") (+ "+") (identifier "iVar16")) () ")")) (- "-") (identifier "iVar26"))) (; ";")) (expression_statement "puVar11 = puVar5 + iVar26;" (assignment_expression "puVar11 = puVar5 + iVar26" (identifier "puVar11") (= "=") (binary_expression "puVar5 + iVar26" (identifier "puVar5") (+ "+") (identifier "iVar26"))) (; ";")) (expression_statement "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);" (assignment_expression "iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26)" (parenthesized_expression "(**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))" (( "(") (pointer_expression "**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" (* "*") (pointer_expression "*(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" (* "*") (cast_expression "(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)((int)piVar24 + -0x140) + -0x7d0c)" (( "(") (binary_expression "*(int *)((int)piVar24 + -0x140) + -0x7d0c" (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")")))) (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(puVar17,puVar5,iVar12,iVar26)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar5") (, ",") (identifier "iVar12") (, ",") (identifier "iVar26") () ")")))) (; ";")) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (expression_statement "uVar13 = iVar12 + iVar8;" (assignment_expression "uVar13 = iVar12 + iVar8" (identifier "uVar13") (= "=") (binary_expression "iVar12 + iVar8" (identifier "iVar12") (+ "+") (identifier "iVar8"))) (; ";")) (if_statement "if (iVar15 != 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);\n    iVar16 = *(int *)((int)piVar24 + -0x140);\n    if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15)" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" (( "(") (pointer_expression "**(code **)(iVar16 + -0x7d0c)" (* "*") (pointer_expression "*(code **)(iVar16 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar16 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + -0x7d0c)" (( "(") (binary_expression "iVar16 + -0x7d0c" (identifier "iVar16") (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(puVar5,puVar5,puVar11,iVar15)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar5") (, ",") (identifier "puVar11") (, ",") (identifier "iVar15") () ")")))) (; ";")) (expression_statement "iVar16 = *(int *)((int)piVar24 + -0x140);" (assignment_expression "iVar16 = *(int *)((int)piVar24 + -0x140)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x140)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x140)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x140)" (( "(") (binary_expression "(int)piVar24 + -0x140" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x140")) () ")"))))) (; ";")) (if_statement "if (iVar12 != 0) {\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }\n    }" ({ "{") (if_statement "if (iVar15 < iVar26) {\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }\n      else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" (if "if") (parenthesized_expression "(iVar15 < iVar26)" (( "(") (binary_expression "iVar15 < iVar26" (identifier "iVar15") (< "<") (identifier "iVar26")) () ")")) (compound_statement "{\n        puVar18 = puVar5 + iVar15;\n        uVar7 = *puVar18;\n        *puVar18 = uVar7 + 1;\n        if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }\n        do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);\n      }" ({ "{") (expression_statement "puVar18 = puVar5 + iVar15;" (assignment_expression "puVar18 = puVar5 + iVar15" (identifier "puVar18") (= "=") (binary_expression "puVar5 + iVar15" (identifier "puVar5") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar7 = *puVar18;" (assignment_expression "uVar7 = *puVar18" (identifier "uVar7") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar7 + 1 != 0) {\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" (if "if") (parenthesized_expression "(uVar7 + 1 != 0)" (( "(") (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar12 = *(int *)((int)piVar24 + -0x130);\n          goto LAB_00055cec;\n        }" ({ "{") (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")"))))) (; ";")) (goto_statement "goto LAB_00055cec;" (goto "goto") (statement_identifier "LAB_00055cec") (; ";")) (} "}"))) (do_statement "do {\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        } while (uVar7 + 1 == 0);" (do "do") (compound_statement "{\n          iVar15 = iVar15 + 1;\n          if (iVar26 == iVar15) goto LAB_00055f98;\n          uVar7 = puVar18[1];\n          puVar18 = puVar18 + 1;\n          *puVar18 = uVar7 + 1;\n        }" ({ "{") (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar26 == iVar15) goto LAB_00055f98;" (if "if") (parenthesized_expression "(iVar26 == iVar15)" (( "(") (binary_expression "iVar26 == iVar15" (identifier "iVar26") (== "==") (identifier "iVar15")) () ")")) (goto_statement "goto LAB_00055f98;" (goto "goto") (statement_identifier "LAB_00055f98") (; ";"))) (expression_statement "uVar7 = puVar18[1];" (assignment_expression "uVar7 = puVar18[1]" (identifier "uVar7") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (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 "*puVar18 = uVar7 + 1;" (assignment_expression "*puVar18 = uVar7 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 + 1 == 0)" (( "(") (binary_expression "uVar7 + 1 == 0" (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" (else "else") (compound_statement "{\nLAB_00055f98:\n        iVar8 = iVar8 + 1;\n      }" ({ "{") (labeled_statement "LAB_00055f98:\n        iVar8 = iVar8 + 1;" (statement_identifier "LAB_00055f98") (: ":") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";"))) (} "}")))) (} "}"))) (} "}"))) (expression_statement "iVar12 = *(int *)((int)piVar24 + -0x130);" (assignment_expression "iVar12 = *(int *)((int)piVar24 + -0x130)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)((int)piVar24 + -0x130)" (* "*") (cast_expression "(int *)((int)piVar24 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0x130)" (( "(") (binary_expression "(int)piVar24 + -0x130" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0x130")) () ")"))))) (; ";")) (labeled_statement "LAB_00055cec:\n  if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" (statement_identifier "LAB_00055cec") (: ":") (if_statement "if (iVar12 == 0) {\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }\n  else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);\n    iVar12 = -iVar12;\n  }" ({ "{") (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar16 + -0x7b2c))\n                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" (parenthesized_expression "(**(code **)(iVar16 + -0x7b2c))" (( "(") (pointer_expression "**(code **)(iVar16 + -0x7b2c)" (* "*") (pointer_expression "*(code **)(iVar16 + -0x7b2c)" (* "*") (cast_expression "(code **)(iVar16 + -0x7b2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + -0x7b2c)" (( "(") (binary_expression "iVar16 + -0x7b2c" (identifier "iVar16") (+ "+") (number_literal "-0x7b2c")) () ")"))))) () ")")) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2)" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) (, ",") (binary_expression "iVar26 * 2" (identifier "iVar26") (* "*") (number_literal "2")) () ")")))) (; ";")) (expression_statement "iVar12 = -iVar12;" (assignment_expression "iVar12 = -iVar12" (identifier "iVar12") (= "=") (unary_expression "-iVar12" (- "-") (identifier "iVar12"))) (; ";")) (} "}")) (else_clause "else {\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" (else "else") (compound_statement "{\n    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));\n  }" ({ "{") (expression_statement "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));" (assignment_expression "iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" (identifier "iVar12") (= "=") (call_expression "(**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" (parenthesized_expression "(**(code **)(iVar16 + -0x7d0c))" (( "(") (pointer_expression "**(code **)(iVar16 + -0x7d0c)" (* "*") (pointer_expression "*(code **)(iVar16 + -0x7d0c)" (* "*") (cast_expression "(code **)(iVar16 + -0x7d0c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar16 + -0x7d0c)" (( "(") (binary_expression "iVar16 + -0x7d0c" (identifier "iVar16") (+ "+") (number_literal "-0x7d0c")) () ")"))))) () ")")) (argument_list "(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec))" (( "(") (identifier "puVar17") (, ",") (identifier "puVar17") (, ",") (pointer_expression "*(undefined4 *)((int)piVar24 + -0xec)" (* "*") (cast_expression "(undefined4 *)((int)piVar24 + -0xec)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar24 + -0xec)" (( "(") (binary_expression "(int)piVar24 + -0xec" (cast_expression "(int)piVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar24")) (+ "+") (number_literal "-0xec")) () ")")))) () ")")))) (; ";")) (} "}"))))) (expression_statement "uVar7 = iVar12 + iVar8;" (assignment_expression "uVar7 = iVar12 + iVar8" (identifier "uVar7") (= "=") (binary_expression "iVar12 + iVar8" (identifier "iVar12") (+ "+") (identifier "iVar8"))) (; ";")) (expression_statement "uVar10 = uVar13 + *puVar5;" (assignment_expression "uVar10 = uVar13 + *puVar5" (identifier "uVar10") (= "=") (binary_expression "uVar13 + *puVar5" (identifier "uVar13") (+ "+") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (expression_statement "*puVar5 = uVar10;" (assignment_expression "*puVar5 = uVar10" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar10 < uVar13) {\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" (if "if") (parenthesized_expression "(uVar10 < uVar13)" (( "(") (binary_expression "uVar10 < uVar13" (identifier "uVar10") (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\n    do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);\n  }" ({ "{") (do_statement "do {\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    } while (uVar13 + 1 == 0);" (do "do") (compound_statement "{\n      uVar13 = puVar5[1] + 1;\n      puVar5[1] = uVar13;\n      if (uVar13 != 0) break;\n      puVar5 = puVar5 + 2;\n      uVar13 = *puVar5;\n      *puVar5 = uVar13 + 1;\n    }" ({ "{") (expression_statement "uVar13 = puVar5[1] + 1;" (assignment_expression "uVar13 = puVar5[1] + 1" (identifier "uVar13") (= "=") (binary_expression "puVar5[1] + 1" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar5[1] = uVar13;" (assignment_expression "puVar5[1] = uVar13" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (uVar13 != 0) break;" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = *puVar5;" (assignment_expression "uVar13 = *puVar5" (identifier "uVar13") (= "=") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) (; ";")) (expression_statement "*puVar5 = uVar13 + 1;" (assignment_expression "*puVar5 = uVar13 + 1" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 + 1 == 0)" (( "(") (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" (identifier "uVar13") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (if_statement "if (uVar7 < 3) {\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }\n  else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" (if "if") (parenthesized_expression "(uVar7 < 3)" (( "(") (binary_expression "uVar7 < 3" (identifier "uVar7") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n    *puVar11 = uVar7 + uVar13;\n    if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }\n  }" ({ "{") (expression_statement "*puVar11 = uVar7 + uVar13;" (assignment_expression "*puVar11 = uVar7 + uVar13" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (binary_expression "uVar7 + uVar13" (identifier "uVar7") (+ "+") (identifier "uVar13"))) (; ";")) (if_statement "if (uVar7 + uVar13 < uVar7) {\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" (if "if") (parenthesized_expression "(uVar7 + uVar13 < uVar7)" (( "(") (binary_expression "uVar7 + uVar13 < uVar7" (binary_expression "uVar7 + uVar13" (identifier "uVar7") (+ "+") (identifier "uVar13")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n      do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);\n    }" ({ "{") (do_statement "do {\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      } while (uVar13 + 1 == 0);" (do "do") (compound_statement "{\n        uVar13 = puVar11[1] + 1;\n        puVar11[1] = uVar13;\n        if (uVar13 != 0) {\n          return;\n        }\n        puVar11 = puVar11 + 2;\n        uVar13 = *puVar11;\n        *puVar11 = uVar13 + 1;\n      }" ({ "{") (expression_statement "uVar13 = puVar11[1] + 1;" (assignment_expression "uVar13 = puVar11[1] + 1" (identifier "uVar13") (= "=") (binary_expression "puVar11[1] + 1" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11[1] = uVar13;" (assignment_expression "puVar11[1] = uVar13" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (uVar13 != 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar11 = puVar11 + 2;" (assignment_expression "puVar11 = puVar11 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 2" (identifier "puVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = *puVar11;" (assignment_expression "uVar13 = *puVar11" (identifier "uVar13") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "*puVar11 = uVar13 + 1;" (assignment_expression "*puVar11 = uVar13 + 1" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 + 1 == 0)" (( "(") (binary_expression "uVar13 + 1 == 0" (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" (else "else") (compound_statement "{\n    while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }\n  }" ({ "{") (while_statement "while( true ) {\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      *puVar11 = uVar13 - 1;\n      if (uVar13 != 0) break;\n      uVar13 = puVar11[1];\n      puVar11 = puVar11 + 1;\n    }" ({ "{") (expression_statement "*puVar11 = uVar13 - 1;" (assignment_expression "*puVar11 = uVar13 - 1" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar13 != 0) break;" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar13 = puVar11[1];" (assignment_expression "uVar13 = puVar11[1]" (identifier "uVar13") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 var_11,type_2 var_5,type_3 var_1)

{
  type_4 lVar1;
  type_5 *puVar2;
  type_6 *var_8;
  type_7 *puVar4;
  type_8 *var_18;
  int var_33;
  type_6 *var_6;
  type_8 var_42;
  type_1 var_7;
  int var_30;
  type_9 *var_25;
  type_9 *var_23;
  type_9 *var_26;
  size_t *psVar14;
  type_6 var_35;
  type_8 var_41;
  type_2 var_36;
  type_8 *var_24;
  size_t *psVar19;
  type_10 *var_16;
  type_8 *var_31;
  int var_10;
  type_8 var_17;
  type_2 var_34;
  type_2 var_38;
  type_2 var_37;
  type_6 *var_4;
  int var_19;
  type_8 *var_2;
  type_8 *var_21;
  type_6 *unaff_s5;
  type_10 *var_20;
  type_10 *var_9;
  type_1 var_40;
  type_2 var_22;
  int var_32;
  type_5 *var_15;
  type_11 *var_28;
  type_5 *var_27;
  int *piVar32;
  int *piVar33;
  int *piVar34;
  int var_29;
  type_7 uVar35;
  type_11 *pcVar36;
  type_4 lVar37;
  int var_3 [6];
  type_9 *var_12;
  int var_13;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  piVar33 = var_3;
  piVar32 = var_3;
  piVar34 = var_3;
  var_13 = *(int *)PTR___stack_chk_guard_00097540;
  if (var_1 < 0x28) {
    var_16 = (type_10 *)var_1;
    (*(type_11 *)PTR___gmpn_sqrlo_basecase_000975a8)();
    var_25 = (type_9 *)var_11;
    var_18 = var_5;
  }
  else {
    var_2 = (type_8 *)(var_1 * 8);
    var_12 = (type_9 *)0x0;
    if (var_2 < (type_8 *)0x7f01) {
      piVar32 = var_3 + var_1 * -2;
      var_4 = (type_6 *)(&stack0xffffffc8 + var_1 * -8);
    }
    else {
      var_4 = (type_6 *)
                 (*(type_11 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&var_12,var_2);
    }
    unaff_s5 = (type_6 *)(var_1 * 4);
    if (var_1 < 0x2e00) {
      unaff_s5 = var_4 + var_1;
      if (var_1 < 0x52) {
        var_2 = (type_8 *)(var_1 >> 1);
LAB_000555e4:
        var_1 = var_1 - (int)var_2;
        var_9 = (type_10 *)(var_1 * 4);
        (*(type_11 *)PTR___gmpn_sqr_00097394)(var_4,var_5,var_1);
        var_36 = var_5 + var_1;
        if ((type_1)var_1 != (type_1)0x0) {
LAB_00055760:
          var_35 = *var_4;
          if ((type_10 *)var_1 != &DAT_00000001) goto LAB_000556dc;
          *var_11 = var_35;
        }
joined_r0x0005570c:
        var_28 = (type_11 *)PTR___gmpn_mullo_n_00097234;
        if ((int)var_2 < 0x28) {
          var_28 = (type_11 *)PTR___gmpn_mullo_basecase_00097120;
        }
      }
      else {
        if (var_1 < 0x70) {
          var_2 = (type_8 *)((type_8)(var_1 * 0xb) / 0x24);
          var_1 = var_1 - (int)var_2;
          var_9 = (type_10 *)(var_1 * 4);
          (*(type_11 *)PTR___gmpn_sqr_00097394)(var_4,var_5,var_1);
          var_36 = var_5 + var_1;
          var_35 = *var_4;
LAB_000556dc:
          var_6 = var_4 + 1;
          var_7 = var_11;
          do {
            *var_7 = var_35;
            var_8 = var_6 + 1;
            var_35 = *var_6;
            var_6 = var_8;
            var_7 = var_7 + 1;
          } while (var_8 != (type_6 *)((int)var_4 + (int)var_9));
          *(type_6 *)((int)var_11 + (int)(var_9 + -4)) = var_35;
          goto joined_r0x0005570c;
        }
        if (var_1 < 0x204) {
          var_2 = (type_8 *)((type_8)(var_1 * 9) / 0x28);
          goto LAB_000555e4;
        }
        var_2 = (type_8 *)((type_8)var_1 / 10);
        var_1 = var_1 - (int)var_2;
        var_9 = (type_10 *)(var_1 * 4);
        (*(type_11 *)PTR___gmpn_sqr_00097394)(var_4,var_5,var_1);
        var_36 = var_5 + var_1;
        var_28 = (type_11 *)PTR___gmpn_mullo_n_00097234;
        if ((type_1)var_1 != (type_1)0x0) goto LAB_00055760;
      }
      (*var_28)(unaff_s5,var_36,var_5,var_2);
      var_11 = (type_1)((int)var_11 + (int)var_9);
      (*(type_11 *)PTR___gmpn_lshift_0009756c)(var_11,unaff_s5,var_2,1);
      var_16 = (type_10 *)((int)var_4 + (int)var_9);
      var_18 = var_11;
      var_31 = var_2;
      (*(type_11 *)PTR___gmpn_add_n_00097334)(var_11);
    }
    else {
      *(type_3 *)((int)piVar32 + 0x10) = var_1;
      var_18 = var_5;
      (*(type_11 *)PTR___gmpn_nussbaumer_mul_000972bc)(var_4,var_5,var_1,var_5);
      var_10 = var_1 + -1;
      var_16 = (type_10 *)*var_4;
      var_7 = var_11;
      var_6 = var_4;
      do {
        var_6 = var_6 + 1;
        *var_7 = (type_6)var_16;
        var_10 = var_10 + -1;
        var_16 = (type_10 *)*var_6;
        var_7 = var_7 + 1;
      } while (var_10 != 0);
      var_1 = (type_3)(var_11 + var_1);
      *(type_10 **)(var_1 + -4) = var_16;
      var_31 = (type_8 *)0x0;
    }
    var_25 = var_12;
    var_21 = var_11;
    var_22 = var_5;
    piVar33 = piVar32;
    if (var_12 != (type_9 *)0x0) {
      (*(type_11 *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (var_13 == *(int *)puVar2) {
    return;
  }
  uVar35 = 0x557c8;
  var_15 = PTR___stack_chk_fail_000974d0;
  (*(type_11 *)PTR___stack_chk_fail_000974d0)();
  lVar37 = var_14(var_25,var_18);
  var_27 = var_15 + 0x49870;
  puVar4 = *(type_7 **)(var_15 + 0x41d70);
  var_17 = *var_18;
  *(type_5 **)((int)piVar33 + -0xf0) = var_27;
  *(type_7 **)((int)piVar33 + -0xe0) = puVar4;
  *(type_5 **)((int)piVar33 + -0x20) = puVar2;
  *(type_3 *)((int)piVar33 + -0x24) = var_1;
  *(type_6 **)((int)piVar33 + -0x28) = var_4;
  *(type_7 *)((int)piVar33 + -4) = uVar35;
  *(int **)((int)piVar33 + -8) = var_3;
  *(type_2 *)((int)piVar33 + -0xc) = var_22;
  *(type_10 **)((int)piVar33 + -0x10) = var_9;
  *(type_6 **)((int)piVar33 + -0x14) = unaff_s5;
  *(type_8 **)((int)piVar33 + -0x18) = var_21;
  *(type_8 **)((int)piVar33 + -0x1c) = var_2;
  *(type_7 *)((int)piVar33 + -0x2c) = *puVar4;
  if ((int)var_16 < 3) {
    lVar1 = (type_12)var_17 * (type_12)var_17;
    var_20 = var_16;
    if (var_16 == &DAT_00000001) {
      var_25->next = (type_9 *)(var_17 * var_17);
    }
    else {
      var_25->next = (type_9 *)lVar1;
      var_25->size = var_17 * var_18[1] * 2 + (int)((type_12)lVar1 >> 0x20);
      piVar34 = var_3;
      lVar37 = lVar1;
    }
  }
  else {
    var_21 = (type_8 *)(var_16 + -1);
    var_28 = *(type_11 **)(var_15 + 0x418d4);
    *(type_8 **)((int)piVar33 + -0xdc) = var_21;
    *(type_10 **)((int)piVar33 + -0xd8) = var_16 + -2;
    *(int *)((int)piVar33 + -0xcc) = (int)var_21 * 4;
    *(type_10 **)((int)piVar33 + -0xd4) = (type_10 *)((int)piVar33 + -200);
    var_2 = (type_8 *)(var_17 * var_18[(int)var_21]);
    var_10 = (*var_28)((type_10 *)((int)piVar33 + -200),var_18 + 1,var_16 + -2,var_17);
    var_19 = *(int *)((int)piVar33 + -0xf0);
    piVar34 = (int *)((int)var_2 + var_10);
    if ((int)var_21 < 4) {
      var_10 = 1;
    }
    else {
      *(type_10 **)((int)piVar33 + -0xd0) = var_16 + -5;
      var_21 = var_18 + (int)((int)var_21 + 1);
      var_9 = (type_10 *)((int)piVar33 + -0xc0);
      *(type_10 **)((int)piVar33 + -0xe4) = var_16 + (-6 - ((type_8)(var_16 + -5) & 0xfffffffe));
      var_22 = var_18 + 2;
      var_20 = var_16 + -4;
      do {
        var_2 = (type_8 *)(var_22[-1] * var_21[-2]);
        var_10 = (**(type_11 **)(var_19 + -0x7f70))(var_9,var_22,var_20,var_22[-1]);
        var_20 = var_20 + -2;
        var_19 = *(int *)((int)piVar33 + -0xf0);
        var_21 = var_21 + -1;
        var_9 = var_9 + 8;
        piVar34 = (int *)((int)piVar34 + (int)((int)var_2 + var_10));
        var_22 = var_22 + 1;
      } while (*(type_10 **)((int)piVar33 + -0xe4) != var_20);
      var_10 = (*(type_8 *)((int)piVar33 + -0xd0) >> 1) + 2;
    }
    if ((*(type_8 *)((int)piVar33 + -0xdc) & 1) != 0) {
      piVar34 = (int *)((var_18 + var_10)[1] * var_18[var_10] + (int)piVar34);
    }
    unaff_s5 = (type_6 *)((int)piVar33 + *(int *)((int)piVar33 + -0xd8) * 4 + -0x28);
    unaff_s5[-0x28] = (type_6)piVar34;
    var_23 = var_25;
    var_24 = var_18;
    do {
      var_17 = *var_24;
      var_26 = var_23 + 1;
      var_24 = var_24 + 1;
      lVar37 = (type_12)var_17 * (type_12)var_17;
      var_23->next = (type_9 *)lVar37;
      var_23->size = (size_t)((type_12)lVar37 >> 0x20);
      var_23 = var_26;
    } while (var_25 + ((int)var_16 >> 1) != var_26);
    if (((type_8)var_16 & 1) != 0) {
      piVar34 = (int *)((int)&var_25->next + *(int *)((int)piVar33 + -0xcc));
      *piVar34 = var_18[(int)var_16 >> 1] * var_18[(int)var_16 >> 1];
    }
    var_20 = *(type_10 **)((int)piVar33 + -0xd4);
    var_18 = *(type_8 **)((int)piVar33 + -0xdc);
    (**(type_11 **)(var_19 + -0x7ad4))(var_20,var_20,var_18,1);
    psVar14 = &var_25->size;
    psVar19 = psVar14;
    var_16 = var_20;
    var_31 = var_18;
    (**(type_11 **)(*(int *)((int)piVar33 + -0xf0) + -0x7d0c))();
    lVar37 = var_14(psVar14,psVar19);
    var_27 = *(type_5 **)((int)piVar33 + -0xf0);
  }
  if (*(int *)((int)piVar33 + -0x2c) == **(int **)((int)piVar33 + -0xe0)) {
    return;
  }
  var_28 = *(type_11 **)(var_27 + -0x7b70);
  pcVar36 = var_39;
  (*var_28)();
  var_7 = (type_1)((type_12)lVar37 >> 0x20);
  *(type_10 **)((int)piVar33 + -0x128) = var_20;
  var_10 = (int)var_16 >> 1;
  *(int **)((int)piVar33 + -0x108) = piVar34;
  var_29 = (int)var_16 - var_10;
  *(type_6 **)((int)piVar33 + -0x114) = unaff_s5;
  *(type_8 **)((int)piVar33 + -0x124) = var_18;
  *(type_11 **)((int)piVar33 + -0x140) = var_28 + 0x495d0;
  *(type_8 **)((int)piVar33 + -0x118) = var_21;
  *(type_8 **)((int)piVar33 + -0x11c) = var_2;
  *(type_9 **)((int)piVar33 + -0x120) = var_25;
  *(type_11 **)((int)piVar33 + -0x104) = pcVar36;
  var_36 = var_7 + var_29;
  *(type_2 *)((int)piVar33 + -0x10c) = var_22;
  *(type_10 **)((int)piVar33 + -0x110) = var_9;
  *(int *)((int)piVar33 + -0xfc) = (int)lVar37;
  *(int *)((int)piVar33 + -0x134) = (int)lVar37 + var_29 * 4;
  var_19 = *(int *)((int)piVar33 + -0xf0) - var_29;
  if (var_10 == var_29) {
    var_18 = (type_8 *)(*(int *)((int)piVar33 + -0xfc) + (var_10 + -1) * 4);
    var_30 = var_10;
    do {
      var_30 = var_30 + -1;
      pcVar36 = *(type_11 **)(var_28 + 0x41aa4);
      if (var_30 < 0) goto LAB_00055eb0;
      var_17 = *var_18;
      var_18 = var_18 + -1;
    } while (var_17 == var_18[var_29 + 1]);
    pcVar36 = *(type_11 **)(var_28 + 0x41aa4);
    if (var_17 <= var_18[var_29 + 1]) {
      (*pcVar36)(var_7,*(type_7 *)((int)piVar33 + -0x134),*(type_7 *)((int)piVar33 + -0xfc)
                 ,var_29);
      var_30 = *(int *)((int)piVar33 + -0x140);
      *(type_7 *)((int)piVar33 + -0x130) = 1;
      goto LAB_00055b54;
    }
LAB_00055eb0:
    (*pcVar36)(var_7,*(type_7 *)((int)piVar33 + -0xfc),*(type_7 *)((int)piVar33 + -0x134),
               var_29);
    var_30 = *(int *)((int)piVar33 + -0x140);
    *(type_7 *)((int)piVar33 + -0x130) = 0;
    if (var_29 != var_19) goto LAB_00055b5c;
LAB_00055ed4:
    var_34 = var_31 + var_29;
    var_18 = var_31 + var_29 + -1;
    var_32 = var_29;
    do {
      var_32 = var_32 + -1;
      var_28 = *(type_11 **)(var_30 + -0x7b2c);
      if (var_32 < 0) goto LAB_00055f0c;
      var_17 = *var_18;
      var_18 = var_18 + -1;
    } while (var_17 == var_18[var_29 + 1]);
    var_28 = *(type_11 **)(var_30 + -0x7b2c);
    if (var_18[var_29 + 1] < var_17) {
LAB_00055f0c:
      *(type_2 *)((int)piVar33 + -300) = var_34;
      (*var_28)(var_36,var_31,var_34,var_29);
      var_30 = *(int *)((int)piVar33 + -0x140);
      var_38 = *(type_2 *)((int)piVar33 + -300);
    }
    else {
      *(type_2 *)((int)piVar33 + -300) = var_34;
      (*var_28)(var_36,var_34,var_31,var_29);
      var_30 = *(int *)((int)piVar33 + -0x140);
      var_38 = *(type_2 *)((int)piVar33 + -300);
      *(type_8 *)((int)piVar33 + -0x130) = *(type_8 *)((int)piVar33 + -0x130) ^ 1;
    }
  }
  else {
    var_32 = *(int *)(*(int *)((int)piVar33 + -0xfc) + var_10 * 4);
    if (var_32 == 0) {
      var_18 = (type_8 *)(*(int *)((int)piVar33 + -0xfc) + var_10 * 4 + -4);
      var_30 = var_10;
      do {
        var_30 = var_30 + -1;
        if (var_30 < 0) goto LAB_00055b2c;
        var_17 = *var_18;
        var_18 = var_18 + -1;
      } while (var_17 == var_18[var_29 + 1]);
      var_28 = *(type_11 **)(var_28 + 0x41aa4);
      if (var_17 <= var_18[var_29 + 1]) {
        (*var_28)(var_7,*(type_7 *)((int)piVar33 + -0x134),
                   *(type_7 *)((int)piVar33 + -0xfc),var_10);
        var_30 = *(int *)((int)piVar33 + -0x140);
        *(type_7 *)((int)piVar33 + -0x130) = 1;
        var_7[var_10] = 0;
        goto LAB_00055b54;
      }
    }
    else {
LAB_00055b2c:
      var_28 = *(type_11 **)(var_28 + 0x41aa4);
    }
    var_33 = (*var_28)(var_7,*(type_7 *)((int)piVar33 + -0xfc),
                       *(type_7 *)((int)piVar33 + -0x134),var_10);
    var_30 = *(int *)((int)piVar33 + -0x140);
    *(type_7 *)((int)piVar33 + -0x130) = 0;
    var_7[var_10] = var_32 - var_33;
LAB_00055b54:
    if (var_29 == var_19) goto LAB_00055ed4;
LAB_00055b5c:
    var_38 = var_31 + var_29;
    var_33 = var_29 - var_19;
    var_34 = var_31 + var_29 + -1;
    var_32 = var_33;
    do {
      var_35 = *var_34;
      var_32 = var_32 + -1;
      var_34 = var_34 + -1;
      if (var_35 != 0) goto LAB_00055b90;
    } while (var_32 != 0);
    var_18 = var_31 + var_19 + -1;
    var_32 = var_19;
    do {
      var_32 = var_32 + -1;
      if (var_32 < 0) goto LAB_00055b90;
      var_17 = *var_18;
      var_18 = var_18 + -1;
    } while (var_17 == var_18[var_29 + 1]);
    var_28 = *(type_11 **)(var_30 + -0x7b2c);
    if (var_18[var_29 + 1] < var_17) {
LAB_00055b90:
      var_32 = 0;
      if (var_19 != 0) {
        var_28 = *(type_11 **)(var_30 + -0x7b2c);
        *(type_2 *)((int)piVar33 + -300) = var_38;
        var_33 = (*var_28)(var_36,var_31,var_38,var_19);
        var_30 = *(int *)((int)piVar33 + -0x140);
        var_38 = *(type_2 *)((int)piVar33 + -300);
        var_32 = var_19;
        if (var_33 != 0) {
          var_34 = var_31 + var_19;
          if (var_29 <= var_19) goto LAB_00055bc8;
          var_37 = var_36 + var_19;
          var_35 = *var_34;
          *var_37 = var_35 - 1;
          while (var_32 = var_32 + 1, var_35 == 0) {
            var_37 = var_37 + 1;
            if (var_29 == var_32) goto LAB_00055bc8;
            var_35 = var_34[1];
            var_34 = var_34 + 1;
            *var_37 = var_35 - 1;
          }
        }
      }
      if ((var_36 != var_31) && (var_32 < var_29)) {
        var_34 = var_31 + var_32;
        var_6 = var_36 + var_32;
        do {
          var_35 = *var_34;
          var_34 = var_34 + 1;
          *var_6 = var_35;
          var_6 = var_6 + 1;
        } while (var_34 != var_38);
      }
    }
    else {
      *(type_2 *)((int)piVar33 + -300) = var_38;
      (*var_28)(var_36,var_38,var_31,var_19);
      var_30 = *(int *)((int)piVar33 + -0x140);
      var_38 = *(type_2 *)((int)piVar33 + -300);
      var_34 = var_36 + var_19;
      do {
        var_33 = var_33 + -1;
        *var_34 = 0;
        var_34 = var_34 + 1;
      } while (var_33 != 0);
      *(type_8 *)((int)piVar33 + -0x130) = *(type_8 *)((int)piVar33 + -0x130) ^ 1;
    }
  }
LAB_00055bc8:
  *(int *)((int)piVar33 + -300) = var_29 * 8;
  *(type_2 *)((int)piVar33 + -300) = var_38;
  if (0x13 < var_29) {
    *(int *)((int)piVar33 + -0x148) = var_29;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + var_29 * 8;
    var_39(*(type_1 *)((int)piVar33 + -0xec),var_7,var_29,var_36,
                      *(type_3 *)((int)piVar33 + -0x148),*(type_1 *)((int)piVar33 + -0x144));
    var_30 = *(int *)((int)piVar33 + -0x140);
    var_34 = *(type_2 *)((int)piVar33 + -300);
  }
  else {
    var_28 = *(type_11 **)(var_30 + -0x7bd0);
    *(int *)((int)piVar33 + -0x148) = var_29;
    (*var_28)(*(type_7 *)((int)piVar33 + -0xec),var_7,var_29,var_36);
    var_30 = *(int *)((int)piVar33 + -0x140);
    var_34 = *(type_2 *)((int)piVar33 + -300);
  }
  var_40 = var_36 + var_29;
  if (var_19 < var_10) {
    if (var_19 < 0x14) {
      var_28 = *(type_11 **)(var_30 + -0x7bd0);
      *(int *)((int)piVar33 + -0x148) = var_19;
LAB_00055c5c:
      (*var_28)(var_40,*(type_7 *)((int)piVar33 + -0x134),var_10,var_34);
      var_30 = *(int *)((int)piVar33 + -0x140);
    }
    else {
      if (var_10 << 2 < var_19 * 5) {
        *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + var_29 * 8;
        *(int *)((int)piVar33 + -0x148) = var_19;
        goto LAB_00055ff8;
      }
      var_28 = *(type_11 **)(var_30 + -0x7c88);
      *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + var_29 * 8;
      *(int *)((int)piVar33 + -0x148) = var_19;
      (*var_28)(var_40,*(type_7 *)((int)piVar33 + -0x134),var_10,var_34);
      var_30 = *(int *)((int)piVar33 + -0x140);
    }
  }
  else {
    if (var_10 < 0x14) {
      var_28 = *(type_11 **)(var_30 + -0x7bd0);
      *(int *)((int)piVar33 + -0x148) = var_10;
      goto LAB_00055c5c;
    }
    *(int *)((int)piVar33 + -0x148) = var_10;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + var_29 * 8;
LAB_00055ff8:
    var_39(var_40,*(type_2 *)((int)piVar33 + -0x134),var_10,var_34,
                      *(type_3 *)((int)piVar33 + -0x148),*(type_1 *)((int)piVar33 + -0x144));
    var_30 = *(int *)((int)piVar33 + -0x140);
  }
  if (0x13 < var_29) {
    *(int *)((int)piVar33 + -0x148) = var_29;
    *(int *)((int)piVar33 + -0x144) = *(int *)((int)piVar33 + -0xec) + var_29 * 8;
    var_39(var_7,*(type_2 *)((int)piVar33 + -0xfc),var_29,var_31,
                      *(type_3 *)((int)piVar33 + -0x148),*(type_1 *)((int)piVar33 + -0x144));
    var_30 = *(int *)((int)piVar33 + -0x140);
  }
  else {
    var_28 = *(type_11 **)(var_30 + -0x7bd0);
    *(int *)((int)piVar33 + -0x148) = var_29;
    (*var_28)(var_7,*(type_7 *)((int)piVar33 + -0xfc),var_29,var_31);
    var_30 = *(int *)((int)piVar33 + -0x140);
  }
  var_30 = (**(type_11 **)(var_30 + -0x7d0c))(var_40,var_36,var_40,var_29);
  var_10 = (var_10 + var_19) - var_29;
  var_18 = var_40 + var_29;
  var_19 = (**(type_11 **)(*(int *)((int)piVar33 + -0x140) + -0x7d0c))(var_36,var_40,var_7,var_29);
  var_32 = *(int *)((int)piVar33 + -0x140);
  var_17 = var_19 + var_30;
  if (var_10 != 0) {
    var_19 = (**(type_11 **)(var_32 + -0x7d0c))(var_40,var_40,var_18,var_10);
    var_32 = *(int *)((int)piVar33 + -0x140);
    if (var_19 != 0) {
      if (var_10 < var_29) {
        var_7 = var_40 + var_10;
        var_35 = *var_7;
        *var_7 = var_35 + 1;
        if (var_35 + 1 != 0) {
          var_10 = *(int *)((int)piVar33 + -0x130);
          goto LAB_00055cec;
        }
        do {
          var_10 = var_10 + 1;
          if (var_29 == var_10) goto LAB_00055f98;
          var_35 = var_7[1];
          var_7 = var_7 + 1;
          *var_7 = var_35 + 1;
        } while (var_35 + 1 == 0);
      }
      else {
LAB_00055f98:
        var_30 = var_30 + 1;
      }
    }
  }
  var_10 = *(int *)((int)piVar33 + -0x130);
LAB_00055cec:
  if (var_10 == 0) {
    var_10 = (**(type_11 **)(var_32 + -0x7b2c))
                       (var_36,var_36,*(type_7 *)((int)piVar33 + -0xec),var_29 * 2);
    var_10 = -var_10;
  }
  else {
    var_10 = (**(type_11 **)(var_32 + -0x7d0c))(var_36,var_36,*(type_7 *)((int)piVar33 + -0xec));
  }
  var_42 = var_10 + var_30;
  var_41 = var_17 + *var_40;
  *var_40 = var_41;
  if (var_41 < var_17) {
    do {
      var_35 = var_40[1] + 1;
      var_40[1] = var_35;
      if (var_35 != 0) break;
      var_40 = var_40 + 2;
      var_35 = *var_40;
      *var_40 = var_35 + 1;
    } while (var_35 + 1 == 0);
  }
  var_17 = *var_18;
  if (var_42 < 3) {
    *var_18 = var_42 + var_17;
    if (var_42 + var_17 < var_42) {
      do {
        var_17 = var_18[1] + 1;
        var_18[1] = var_17;
        if (var_17 != 0) {
          return;
        }
        var_18 = var_18 + 2;
        var_17 = *var_18;
        *var_18 = var_17 + 1;
      } while (var_17 + 1 == 0);
    }
  }
  else {
    while( true ) {
      *var_18 = var_17 - 1;
      if (var_17 != 0) break;
      var_17 = var_18[1];
      var_18 = var_18 + 1;
    }
  }
  return;
}


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

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

{
  longlong lVar1;
  undefined *puVar2;
  undefined4 *puVar3;
  int iVar4;
  uint *puVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  uint *puVar9;
  uint uVar10;
  uint *puVar11;
  int iVar12;
  uint uVar13;
  uint *unaff_s0;
  uint *puVar14;
  int iVar15;
  int iVar16;
  uint *puVar17;
  uint *unaff_s3;
  uint *unaff_s4;
  uint *unaff_s5;
  uint *puVar18;
  undefined1 *unaff_s6;
  uint *unaff_s7;
  int iVar19;
  undefined *puVar20;
  code *pcVar21;
  undefined *puVar22;
  int *piVar23;
  int *piVar24;
  int *piVar25;
  int iVar26;
  undefined4 uVar27;
  code *pcVar28;
  longlong lVar29;
  int aiStack_50 [6];
  uint *local_30;
  int local_2c;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  piVar24 = aiStack_50;
  piVar23 = aiStack_50;
  piVar25 = aiStack_50;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  if ((int)param_3 < 0x28) {
    puVar11 = param_3;
    (*(code *)PTR_MASKED_basecase_000975a8)();
    puVar17 = param_1;
    puVar5 = param_2;
  }
  else {
    unaff_s3 = (uint *)((int)param_3 * 8);
    local_30 = (uint *)0x0;
    if (unaff_s3 < (uint *)0x7f01) {
      piVar23 = aiStack_50 + (int)param_3 * -2;
      unaff_s0 = (uint *)(&stack0xffffffc8 + (int)param_3 * -8);
    }
    else {
      unaff_s0 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s3);
    }
    unaff_s5 = (uint *)((int)param_3 * 4);
    if ((int)param_3 < 0x2e00) {
      unaff_s5 = unaff_s0 + (int)param_3;
      if ((int)param_3 < 0x52) {
        unaff_s3 = (uint *)((int)param_3 >> 1);
LAB_000555e4:
        param_3 = (uint *)((int)param_3 - (int)unaff_s3);
        unaff_s6 = (undefined1 *)((int)param_3 * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
        puVar17 = param_2 + (int)param_3;
        if (param_3 != (uint *)0x0) {
LAB_00055760:
          uVar13 = *unaff_s0;
          if (param_3 != (uint *)0x1) goto LAB_000556dc;
          *param_1 = uVar13;
        }
joined_r0x0005570c:
        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;
        if ((int)unaff_s3 < 0x28) {
          pcVar21 = (code *)PTR___gmpn_mullo_basecase_00097120;
        }
      }
      else {
        if ((int)param_3 < 0x70) {
          unaff_s3 = (uint *)((uint)((int)param_3 * 0xb) / 0x24);
          param_3 = (uint *)((int)param_3 - (int)unaff_s3);
          unaff_s6 = (undefined1 *)((int)param_3 * 4);
          (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
          puVar17 = param_2 + (int)param_3;
          uVar13 = *unaff_s0;
LAB_000556dc:
          puVar5 = unaff_s0 + 1;
          puVar11 = param_1;
          do {
            *puVar11 = uVar13;
            puVar18 = puVar5 + 1;
            uVar13 = *puVar5;
            puVar5 = puVar18;
            puVar11 = puVar11 + 1;
          } while (puVar18 != (uint *)((int)unaff_s0 + (int)unaff_s6));
          *(uint *)((int)param_1 + (int)(unaff_s6 + -4)) = uVar13;
          goto joined_r0x0005570c;
        }
        if ((int)param_3 < 0x204) {
          unaff_s3 = (uint *)((uint)((int)param_3 * 9) / 0x28);
          goto LAB_000555e4;
        }
        unaff_s3 = (uint *)((uint)param_3 / 10);
        param_3 = (uint *)((int)param_3 - (int)unaff_s3);
        unaff_s6 = (undefined1 *)((int)param_3 * 4);
        (*(code *)PTR___gmpn_sqr_00097394)(unaff_s0,param_2,param_3);
        puVar17 = param_2 + (int)param_3;
        pcVar21 = (code *)PTR___gmpn_mullo_n_00097234;
        if (param_3 != (uint *)0x0) goto LAB_00055760;
      }
      (*pcVar21)(unaff_s5,puVar17,param_2,unaff_s3);
      param_1 = (uint *)((int)param_1 + (int)unaff_s6);
      (*(code *)PTR___gmpn_lshift_0009756c)(param_1,unaff_s5,unaff_s3,1);
      puVar11 = (uint *)((int)unaff_s0 + (int)unaff_s6);
      puVar5 = param_1;
      param_4 = unaff_s3;
      (*(code *)PTR___gmpn_add_n_00097334)(param_1);
    }
    else {
      *(uint **)((int)piVar23 + 0x10) = param_3;
      puVar5 = param_2;
      (*(code *)PTR___gmpn_nussbaumer_mul_000972bc)(unaff_s0,param_2,param_3,param_2);
      iVar12 = (int)param_3 + -1;
      puVar11 = (uint *)*unaff_s0;
      puVar18 = param_1;
      puVar17 = unaff_s0;
      do {
        puVar17 = puVar17 + 1;
        *puVar18 = (uint)puVar11;
        iVar12 = iVar12 + -1;
        puVar11 = (uint *)*puVar17;
        puVar18 = puVar18 + 1;
      } while (iVar12 != 0);
      param_3 = param_1 + (int)param_3;
      param_3[-1] = (uint)puVar11;
      param_4 = (uint *)0x0;
    }
    puVar17 = local_30;
    unaff_s4 = param_1;
    unaff_s7 = param_2;
    piVar24 = piVar23;
    if (local_30 != (uint *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar2) {
    return;
  }
  uVar27 = 0x557c8;
  puVar20 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  lVar29 = CONCAT44(puVar17,puVar5);
  puVar22 = puVar20 + 0x49870;
  puVar3 = *(undefined4 **)(puVar20 + 0x41d70);
  uVar13 = *puVar5;
  *(undefined **)((int)piVar24 + -0xf0) = puVar22;
  *(undefined4 **)((int)piVar24 + -0xe0) = puVar3;
  *(undefined **)((int)piVar24 + -0x20) = puVar2;
  *(uint **)((int)piVar24 + -0x24) = param_3;
  *(uint **)((int)piVar24 + -0x28) = unaff_s0;
  *(undefined4 *)((int)piVar24 + -4) = uVar27;
  *(int **)((int)piVar24 + -8) = aiStack_50;
  *(uint **)((int)piVar24 + -0xc) = unaff_s7;
  *(undefined1 **)((int)piVar24 + -0x10) = unaff_s6;
  *(uint **)((int)piVar24 + -0x14) = unaff_s5;
  *(uint **)((int)piVar24 + -0x18) = unaff_s4;
  *(uint **)((int)piVar24 + -0x1c) = unaff_s3;
  *(undefined4 *)((int)piVar24 + -0x2c) = *puVar3;
  if ((int)puVar11 < 3) {
    lVar1 = (ulonglong)uVar13 * (ulonglong)uVar13;
    puVar14 = puVar11;
    if (puVar11 == (uint *)0x1) {
      *puVar17 = uVar13 * uVar13;
    }
    else {
      *puVar17 = (uint)lVar1;
      puVar17[1] = uVar13 * puVar5[1] * 2 + (int)((ulonglong)lVar1 >> 0x20);
      piVar25 = aiStack_50;
      lVar29 = lVar1;
    }
  }
  else {
    unaff_s4 = (uint *)((int)puVar11 + -1);
    pcVar21 = *(code **)(puVar20 + 0x418d4);
    *(uint **)((int)piVar24 + -0xdc) = unaff_s4;
    *(int *)((int)piVar24 + -0xd8) = (int)puVar11 + -2;
    *(int *)((int)piVar24 + -0xcc) = (int)unaff_s4 * 4;
    *(undefined1 **)((int)piVar24 + -0xd4) = (undefined1 *)((int)piVar24 + -200);
    unaff_s3 = (uint *)(uVar13 * puVar5[(int)unaff_s4]);
    iVar12 = (*pcVar21)((undefined1 *)((int)piVar24 + -200),puVar5 + 1,(int)puVar11 + -2,uVar13);
    iVar15 = *(int *)((int)piVar24 + -0xf0);
    piVar25 = (int *)((int)unaff_s3 + iVar12);
    if ((int)unaff_s4 < 4) {
      iVar12 = 1;
    }
    else {
      *(uint *)((int)piVar24 + -0xd0) = (int)puVar11 - 5U;
      unaff_s4 = puVar5 + (int)puVar11;
      unaff_s6 = (undefined1 *)((int)piVar24 + -0xc0);
      *(uint *)((int)piVar24 + -0xe4) = (int)puVar11 + (-6 - ((int)puVar11 - 5U & 0xfffffffe));
      unaff_s7 = puVar5 + 2;
      puVar18 = puVar11 + -1;
      do {
        unaff_s3 = (uint *)(unaff_s7[-1] * unaff_s4[-2]);
        iVar12 = (**(code **)(iVar15 + -0x7f70))(unaff_s6,unaff_s7,puVar18,unaff_s7[-1]);
        puVar18 = (uint *)((int)puVar18 + -2);
        iVar15 = *(int *)((int)piVar24 + -0xf0);
        unaff_s4 = unaff_s4 + -1;
        unaff_s6 = unaff_s6 + 8;
        piVar25 = (int *)((int)piVar25 + (int)unaff_s3 + iVar12);
        unaff_s7 = unaff_s7 + 1;
      } while (*(uint **)((int)piVar24 + -0xe4) != puVar18);
      iVar12 = (*(uint *)((int)piVar24 + -0xd0) >> 1) + 2;
    }
    if ((*(uint *)((int)piVar24 + -0xdc) & 1) != 0) {
      piVar25 = (int *)((puVar5 + iVar12)[1] * puVar5[iVar12] + (int)piVar25);
    }
    unaff_s5 = (uint *)((int)piVar24 + *(int *)((int)piVar24 + -0xd8) * 4 + -0x28);
    unaff_s5[-0x28] = (uint)piVar25;
    puVar18 = puVar17;
    puVar14 = puVar5;
    do {
      uVar13 = *puVar14;
      puVar9 = puVar18 + 2;
      puVar14 = puVar14 + 1;
      lVar29 = (ulonglong)uVar13 * (ulonglong)uVar13;
      *puVar18 = (uint)lVar29;
      puVar18[1] = (uint)((ulonglong)lVar29 >> 0x20);
      puVar18 = puVar9;
    } while (puVar17 + ((int)puVar11 >> 1) * 2 != puVar9);
    if (((uint)puVar11 & 1) != 0) {
      piVar25 = (int *)((int)puVar17 + *(int *)((int)piVar24 + -0xcc));
      *piVar25 = puVar5[(int)puVar11 >> 1] * puVar5[(int)puVar11 >> 1];
    }
    puVar14 = *(uint **)((int)piVar24 + -0xd4);
    puVar5 = *(uint **)((int)piVar24 + -0xdc);
    (**(code **)(iVar15 + -0x7ad4))(puVar14,puVar14,puVar5,1);
    puVar9 = puVar17 + 1;
    puVar18 = puVar9;
    puVar11 = puVar14;
    param_4 = puVar5;
    (**(code **)(*(int *)((int)piVar24 + -0xf0) + -0x7d0c))();
    lVar29 = CONCAT44(puVar9,puVar18);
    puVar22 = *(undefined **)((int)piVar24 + -0xf0);
  }
  if (*(int *)((int)piVar24 + -0x2c) == **(int **)((int)piVar24 + -0xe0)) {
    return;
  }
  pcVar21 = *(code **)(puVar22 + -0x7b70);
  pcVar28 = __gmpn_toom22_mul;
  (*pcVar21)();
  iVar12 = (int)((ulonglong)lVar29 >> 0x20);
  *(uint **)((int)piVar24 + -0x128) = puVar14;
  iVar15 = (int)puVar11 >> 1;
  *(int **)((int)piVar24 + -0x108) = piVar25;
  iVar26 = (int)puVar11 - iVar15;
  *(uint **)((int)piVar24 + -0x114) = unaff_s5;
  *(uint **)((int)piVar24 + -0x124) = puVar5;
  *(code **)((int)piVar24 + -0x140) = pcVar21 + 0x495d0;
  *(uint **)((int)piVar24 + -0x118) = unaff_s4;
  *(uint **)((int)piVar24 + -0x11c) = unaff_s3;
  *(uint **)((int)piVar24 + -0x120) = puVar17;
  *(code **)((int)piVar24 + -0x104) = pcVar28;
  puVar17 = (uint *)(iVar12 + iVar26 * 4);
  *(uint **)((int)piVar24 + -0x10c) = unaff_s7;
  *(undefined1 **)((int)piVar24 + -0x110) = unaff_s6;
  *(int *)((int)piVar24 + -0xfc) = (int)lVar29;
  *(int *)((int)piVar24 + -0x134) = (int)lVar29 + iVar26 * 4;
  iVar16 = *(int *)((int)piVar24 + -0xf0) - iVar26;
  if (iVar15 == iVar26) {
    puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + (iVar15 + -1) * 4);
    iVar8 = iVar15;
    do {
      iVar8 = iVar8 + -1;
      pcVar28 = *(code **)(pcVar21 + 0x41aa4);
      if (iVar8 < 0) goto LAB_00055eb0;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar28 = *(code **)(pcVar21 + 0x41aa4);
    if (uVar13 <= puVar5[iVar26 + 1]) {
      (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),*(undefined4 *)((int)piVar24 + -0xfc)
                 ,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      *(undefined4 *)((int)piVar24 + -0x130) = 1;
      goto LAB_00055b54;
    }
LAB_00055eb0:
    (*pcVar28)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),*(undefined4 *)((int)piVar24 + -0x134),
               iVar26);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    *(undefined4 *)((int)piVar24 + -0x130) = 0;
    if (iVar26 != iVar16) goto LAB_00055b5c;
LAB_00055ed4:
    puVar11 = param_4 + iVar26;
    puVar5 = param_4 + iVar26 + -1;
    iVar4 = iVar26;
    do {
      iVar4 = iVar4 + -1;
      pcVar21 = *(code **)(iVar8 + -0x7b2c);
      if (iVar4 < 0) goto LAB_00055f0c;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar21 = *(code **)(iVar8 + -0x7b2c);
    if (puVar5[iVar26 + 1] < uVar13) {
LAB_00055f0c:
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,param_4,puVar11,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
    }
    else {
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,puVar11,param_4,iVar26);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;
    }
  }
  else {
    iVar4 = iVar15 * 4;
    iVar19 = *(int *)(*(int *)((int)piVar24 + -0xfc) + iVar4);
    if (iVar19 == 0) {
      puVar5 = (uint *)(*(int *)((int)piVar24 + -0xfc) + iVar4 + -4);
      iVar8 = iVar15;
      do {
        iVar8 = iVar8 + -1;
        if (iVar8 < 0) goto LAB_00055b2c;
        uVar13 = *puVar5;
        puVar5 = puVar5 + -1;
      } while (uVar13 == puVar5[iVar26 + 1]);
      pcVar21 = *(code **)(pcVar21 + 0x41aa4);
      if (uVar13 <= puVar5[iVar26 + 1]) {
        (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0x134),
                   *(undefined4 *)((int)piVar24 + -0xfc),iVar15);
        iVar8 = *(int *)((int)piVar24 + -0x140);
        *(undefined4 *)((int)piVar24 + -0x130) = 1;
        *(int *)(iVar12 + iVar4) = 0;
        goto LAB_00055b54;
      }
    }
    else {
LAB_00055b2c:
      pcVar21 = *(code **)(pcVar21 + 0x41aa4);
    }
    iVar6 = (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),
                       *(undefined4 *)((int)piVar24 + -0x134),iVar15);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    *(undefined4 *)((int)piVar24 + -0x130) = 0;
    *(int *)(iVar12 + iVar4) = iVar19 - iVar6;
LAB_00055b54:
    if (iVar26 == iVar16) goto LAB_00055ed4;
LAB_00055b5c:
    puVar11 = param_4 + iVar26;
    iVar19 = iVar26 - iVar16;
    puVar5 = param_4 + iVar26 + -1;
    iVar4 = iVar19;
    do {
      uVar13 = *puVar5;
      iVar4 = iVar4 + -1;
      puVar5 = puVar5 + -1;
      if (uVar13 != 0) goto LAB_00055b90;
    } while (iVar4 != 0);
    puVar5 = param_4 + iVar16 + -1;
    iVar4 = iVar16;
    do {
      iVar4 = iVar4 + -1;
      if (iVar4 < 0) goto LAB_00055b90;
      uVar13 = *puVar5;
      puVar5 = puVar5 + -1;
    } while (uVar13 == puVar5[iVar26 + 1]);
    pcVar21 = *(code **)(iVar8 + -0x7b2c);
    if (puVar5[iVar26 + 1] < uVar13) {
LAB_00055b90:
      iVar4 = 0;
      if (iVar16 != 0) {
        pcVar21 = *(code **)(iVar8 + -0x7b2c);
        *(uint **)((int)piVar24 + -300) = puVar11;
        iVar19 = (*pcVar21)(puVar17,param_4,puVar11,iVar16);
        iVar8 = *(int *)((int)piVar24 + -0x140);
        puVar11 = *(uint **)((int)piVar24 + -300);
        iVar4 = iVar16;
        if (iVar19 != 0) {
          puVar5 = param_4 + iVar16;
          if (iVar26 <= iVar16) goto LAB_00055bc8;
          puVar18 = puVar17 + iVar16;
          uVar13 = *puVar5;
          *puVar18 = uVar13 - 1;
          while (iVar4 = iVar4 + 1, uVar13 == 0) {
            puVar18 = puVar18 + 1;
            if (iVar26 == iVar4) goto LAB_00055bc8;
            uVar13 = puVar5[1];
            puVar5 = puVar5 + 1;
            *puVar18 = uVar13 - 1;
          }
        }
      }
      if ((puVar17 != param_4) && (iVar4 < iVar26)) {
        puVar18 = param_4 + iVar4;
        puVar5 = puVar17 + iVar4;
        do {
          uVar13 = *puVar18;
          puVar18 = puVar18 + 1;
          *puVar5 = uVar13;
          puVar5 = puVar5 + 1;
        } while (puVar18 != puVar11);
      }
    }
    else {
      *(uint **)((int)piVar24 + -300) = puVar11;
      (*pcVar21)(puVar17,puVar11,param_4,iVar16);
      iVar8 = *(int *)((int)piVar24 + -0x140);
      puVar11 = *(uint **)((int)piVar24 + -300);
      puVar5 = puVar17 + iVar16;
      do {
        iVar19 = iVar19 + -1;
        *puVar5 = 0;
        puVar5 = puVar5 + 1;
      } while (iVar19 != 0);
      *(uint *)((int)piVar24 + -0x130) = *(uint *)((int)piVar24 + -0x130) ^ 1;
    }
  }
LAB_00055bc8:
  *(int *)((int)piVar24 + -300) = iVar26 * 8;
  *(uint **)((int)piVar24 + -300) = puVar11;
  if (0x13 < iVar26) {
    *(int *)((int)piVar24 + -0x148) = iVar26;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
    __gmpn_toom22_mul(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    uVar27 = *(undefined4 *)((int)piVar24 + -300);
  }
  else {
    pcVar21 = *(code **)(iVar8 + -0x7bd0);
    *(int *)((int)piVar24 + -0x148) = iVar26;
    (*pcVar21)(*(undefined4 *)((int)piVar24 + -0xec),iVar12,iVar26,puVar17);
    iVar8 = *(int *)((int)piVar24 + -0x140);
    uVar27 = *(undefined4 *)((int)piVar24 + -300);
  }
  puVar5 = puVar17 + iVar26;
  if (iVar16 < iVar15) {
    if (iVar16 < 0x14) {
      pcVar21 = *(code **)(iVar8 + -0x7bd0);
      *(int *)((int)piVar24 + -0x148) = iVar16;
LAB_00055c5c:
      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
      iVar8 = *(int *)((int)piVar24 + -0x140);
    }
    else {
      if (iVar15 << 2 < iVar16 * 5) {
        *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
        *(int *)((int)piVar24 + -0x148) = iVar16;
        goto LAB_00055ff8;
      }
      pcVar21 = *(code **)(iVar8 + -0x7c88);
      *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
      *(int *)((int)piVar24 + -0x148) = iVar16;
      (*pcVar21)(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
      iVar8 = *(int *)((int)piVar24 + -0x140);
    }
  }
  else {
    if (iVar15 < 0x14) {
      pcVar21 = *(code **)(iVar8 + -0x7bd0);
      *(int *)((int)piVar24 + -0x148) = iVar15;
      goto LAB_00055c5c;
    }
    *(int *)((int)piVar24 + -0x148) = iVar15;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
LAB_00055ff8:
    __gmpn_toom22_mul(puVar5,*(undefined4 *)((int)piVar24 + -0x134),iVar15,uVar27);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  if (0x13 < iVar26) {
    *(int *)((int)piVar24 + -0x148) = iVar26;
    *(int *)((int)piVar24 + -0x144) = *(int *)((int)piVar24 + -0xec) + iVar26 * 8;
    __gmpn_toom22_mul(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  else {
    pcVar21 = *(code **)(iVar8 + -0x7bd0);
    *(int *)((int)piVar24 + -0x148) = iVar26;
    (*pcVar21)(iVar12,*(undefined4 *)((int)piVar24 + -0xfc),iVar26,param_4);
    iVar8 = *(int *)((int)piVar24 + -0x140);
  }
  iVar8 = (**(code **)(iVar8 + -0x7d0c))(puVar5,puVar17,puVar5,iVar26);
  iVar15 = (iVar15 + iVar16) - iVar26;
  puVar11 = puVar5 + iVar26;
  iVar12 = (**(code **)(*(int *)((int)piVar24 + -0x140) + -0x7d0c))(puVar17,puVar5,iVar12,iVar26);
  iVar16 = *(int *)((int)piVar24 + -0x140);
  uVar13 = iVar12 + iVar8;
  if (iVar15 != 0) {
    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar5,puVar5,puVar11,iVar15);
    iVar16 = *(int *)((int)piVar24 + -0x140);
    if (iVar12 != 0) {
      if (iVar15 < iVar26) {
        puVar18 = puVar5 + iVar15;
        uVar7 = *puVar18;
        *puVar18 = uVar7 + 1;
        if (uVar7 + 1 != 0) {
          iVar12 = *(int *)((int)piVar24 + -0x130);
          goto LAB_00055cec;
        }
        do {
          iVar15 = iVar15 + 1;
          if (iVar26 == iVar15) goto LAB_00055f98;
          uVar7 = puVar18[1];
          puVar18 = puVar18 + 1;
          *puVar18 = uVar7 + 1;
        } while (uVar7 + 1 == 0);
      }
      else {
LAB_00055f98:
        iVar8 = iVar8 + 1;
      }
    }
  }
  iVar12 = *(int *)((int)piVar24 + -0x130);
LAB_00055cec:
  if (iVar12 == 0) {
    iVar12 = (**(code **)(iVar16 + -0x7b2c))
                       (puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec),iVar26 * 2);
    iVar12 = -iVar12;
  }
  else {
    iVar12 = (**(code **)(iVar16 + -0x7d0c))(puVar17,puVar17,*(undefined4 *)((int)piVar24 + -0xec));
  }
  uVar7 = iVar12 + iVar8;
  uVar10 = uVar13 + *puVar5;
  *puVar5 = uVar10;
  if (uVar10 < uVar13) {
    do {
      uVar13 = puVar5[1] + 1;
      puVar5[1] = uVar13;
      if (uVar13 != 0) break;
      puVar5 = puVar5 + 2;
      uVar13 = *puVar5;
      *puVar5 = uVar13 + 1;
    } while (uVar13 + 1 == 0);
  }
  uVar13 = *puVar11;
  if (uVar7 < 3) {
    *puVar11 = uVar7 + uVar13;
    if (uVar7 + uVar13 < uVar7) {
      do {
        uVar13 = puVar11[1] + 1;
        puVar11[1] = uVar13;
        if (uVar13 != 0) {
          return;
        }
        puVar11 = puVar11 + 2;
        uVar13 = *puVar11;
        *puVar11 = uVar13 + 1;
      } while (uVar13 + 1 == 0);
    }
  }
  else {
    while( true ) {
      *puVar11 = uVar13 - 1;
      if (uVar13 != 0) break;
      uVar13 = puVar11[1];
      puVar11 = puVar11 + 1;
    }
  }
  return;
}

