
int __gmpz_invert(mpz_ptr inverse,mpz_srcptr x,mpz_srcptr n)

{
  bool bVar1;
  undefined *puVar2;
  uint *puVar3;
  int iVar4;
  mp_limb_t mVar5;
  mp_limb_t *pmVar6;
  int *piVar7;
  int *piVar8;
  int iVar9;
  undefined1 *puVar10;
  mp_limb_t *pmVar11;
  uint uVar12;
  uint *puVar13;
  mpz_srcptr p_Var14;
  uint *puVar15;
  undefined4 *puVar16;
  mpz_srcptr p_Var17;
  uint *puVar18;
  mp_limb_t *pmVar19;
  mpz_srcptr p_Var20;
  mp_limb_t mVar21;
  mp_limb_t mVar22;
  uint uVar23;
  mp_limb_t *pmVar24;
  uint uVar25;
  mpz_srcptr p_Var26;
  mpz_srcptr p_Var27;
  mp_limb_t *pmVar28;
  mp_limb_t *pmVar29;
  mp_limb_t *pmVar30;
  tmp_reentrant_t **unaff_s5;
  int *piVar31;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  mpz_srcptr p_Var32;
  mpz_srcptr p_Var33;
  undefined *puVar34;
  code *pcVar35;
  undefined *puVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined1 *puVar39;
  undefined4 uVar40;
  undefined1 auStack_68 [24];
  tmp_reentrant_t *__tmp_marker;
  mpz_t gcd;
  mpz_t tmp;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar37 = auStack_68;
  iVar9 = x->_mp_size;
  puVar3 = *(uint **)PTR___stack_chk_guard_00097540;
  if (iVar9 < 0) {
    iVar9 = -iVar9;
  }
  iVar4 = n->_mp_size;
  if (iVar4 < 0) {
    iVar4 = -iVar4;
  }
  __tmp_marker = (tmp_reentrant_t *)0x0;
  if (iVar4 <= iVar9) {
    iVar4 = iVar9;
  }
  iVar4 = iVar4 + 1;
  uVar23 = iVar4 * 4;
  gcd[0]._mp_alloc = iVar4;
  tmp[0]._mp_alloc = iVar4;
  if (uVar23 < 0x7f01) {
    uVar23 = uVar23 + 7 & 0xfffffff8;
    iVar9 = uVar23 * -2;
    puVar37 = auStack_68 + iVar9;
    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));
    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);
  }
  else {
    unaff_s5 = &__tmp_marker;
    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);
    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);
  }
  p_Var17 = (mpz_srcptr)0x0;
  *(mpz_srcptr *)(puVar37 + 0x10) = n;
  p_Var14 = tmp;
  (*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);
  if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {
    if (tmp[0]._mp_size < 0) {
      pcVar35 = (code *)PTR___gmpz_sub_0009752c;
      if (-1 < n->_mp_size) {
        pcVar35 = (code *)PTR___gmpz_add_000971f0;
      }
      p_Var14 = tmp;
      p_Var17 = n;
      (*pcVar35)(inverse);
    }
    else {
      p_Var14 = tmp;
      (*(code *)PTR___gmpz_set_000974b8)(inverse);
    }
    iVar9 = 1;
  }
  else {
    iVar9 = 0;
  }
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (puVar3 == *(uint **)puVar2) {
    return iVar9;
  }
  uVar40 = 0x2aaec;
  puVar34 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar36 = puVar34 + 0x74550;
  puVar39 = puVar37 + -0x50;
  puVar38 = puVar37 + -0x50;
  puVar10 = puVar37 + -0x50;
  *(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5;
  *(int *)(puVar37 + -0x24) = iVar4;
  piVar31 = *(int **)(puVar34 + 0x6ca50);
  p_Var26 = (mpz_srcptr)p_Var14->_mp_size;
  *(undefined1 **)(puVar37 + -8) = auStack_68;
  *(undefined4 *)(puVar37 + -0xc) = unaff_s7;
  *(undefined4 *)(puVar37 + -0x10) = unaff_s6;
  *(mpz_srcptr *)(puVar37 + -0x1c) = n;
  *(mpz_ptr *)(puVar37 + -0x20) = inverse;
  *(mpz_srcptr *)(puVar37 + -0x28) = tmp;
  *(undefined4 *)(puVar37 + -4) = uVar40;
  *(undefined **)(puVar37 + -0x18) = puVar2;
  *(undefined **)(puVar37 + -0x40) = puVar36;
  *(undefined4 *)(puVar37 + -0x30) = 0;
  p_Var32 = (mpz_srcptr)p_Var17->_mp_size;
  pmVar28 = p_Var14->_mp_d;
  pmVar24 = p_Var17->_mp_d;
  pmVar30 = (mp_limb_t *)puVar3[2];
  *(int *)(puVar37 + -0x2c) = *piVar31;
  if ((int)p_Var26 < 0) {
    p_Var20 = p_Var17;
    pmVar19 = pmVar28;
    p_Var27 = p_Var32;
    pmVar29 = pmVar24;
    p_Var33 = p_Var26;
    if ((int)p_Var32 < 0) {
      if ((int)p_Var26 < (int)p_Var32) {
        p_Var26 = p_Var32;
      }
      iVar9 = -(int)p_Var26;
      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);
      if (p_Var14 < (mpz_srcptr)0x7f01) {
        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;
        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);
      }
      else {
        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);
        puVar36 = *(undefined **)(puVar37 + -0x40);
      }
      mVar5 = *pmVar28;
      mVar21 = *pmVar24;
      pmVar29 = pmVar19 + -(int)p_Var26;
      mVar22 = mVar21 - 1;
      *pmVar19 = mVar5 - 1;
      if (mVar5 == 0) {
        if (p_Var26 == (mpz_srcptr)0xffffffff) {
LAB_0002b274:
          *pmVar29 = mVar22;
          if (mVar21 == 0) goto LAB_0002b088;
        }
        else {
          mVar5 = pmVar28[1];
          pmVar19[1] = mVar5 - 1;
          if (mVar5 == 0) {
            pmVar11 = pmVar28 + 2;
            iVar4 = 2;
            pmVar6 = pmVar19 + 2;
            do {
              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);
              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;
              p_Var14 = (mpz_srcptr)*pmVar11;
              iVar4 = iVar4 + 1;
              pmVar11 = pmVar11 + 1;
              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);
              pmVar6 = pmVar6 + 1;
            } while (p_Var14 == (mpz_srcptr)0x0);
          }
          else {
            iVar4 = 2;
          }
          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {
            pmVar11 = pmVar28 + iVar4;
            pmVar28 = pmVar28 + -(int)p_Var26;
            pmVar6 = pmVar19 + iVar4;
            do {
              mVar5 = *pmVar11;
              pmVar11 = pmVar11 + 1;
              *pmVar6 = mVar5;
              pmVar6 = pmVar6 + 1;
            } while (pmVar28 != pmVar11);
          }
LAB_0002b038:
          *pmVar29 = mVar22;
          if (mVar21 == 0) goto LAB_0002b040;
        }
LAB_0002b27c:
        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {
          pmVar24 = pmVar24 + 1;
          iVar4 = 1;
          pmVar6 = pmVar29;
          do {
            pmVar6 = pmVar6 + 1;
            p_Var14 = (mpz_srcptr)*pmVar24;
            iVar4 = iVar4 + 1;
            pmVar24 = pmVar24 + 1;
            *pmVar6 = (mp_limb_t)p_Var14;
          } while (iVar4 < iVar9);
        }
      }
      else {
        if (pmVar19 != pmVar28) {
          pmVar28 = pmVar28 + 1;
          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;
          iVar4 = 1;
          pmVar6 = pmVar19;
          do {
            pmVar6 = pmVar6 + 1;
            p_Var14 = (mpz_srcptr)*pmVar28;
            iVar4 = iVar4 + 1;
            pmVar28 = pmVar28 + 1;
            *pmVar6 = (mp_limb_t)p_Var14;
          } while (iVar4 < iVar9);
          goto LAB_0002b038;
        }
        *pmVar29 = mVar22;
        if (mVar21 != 0) goto LAB_0002b27c;
        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;
LAB_0002b040:
        mVar5 = pmVar24[1];
        pmVar29[1] = mVar5 - 1;
        if (mVar5 == 0) {
          pmVar11 = pmVar24 + 2;
          iVar4 = 2;
          pmVar6 = pmVar29 + 2;
          do {
            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);
            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;
            p_Var14 = (mpz_srcptr)*pmVar11;
            iVar4 = iVar4 + 1;
            pmVar11 = pmVar11 + 1;
            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);
            pmVar6 = pmVar6 + 1;
          } while (p_Var14 == (mpz_srcptr)0x0);
        }
        else {
          iVar4 = 2;
        }
        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {
          pmVar11 = pmVar24 + iVar4;
          pmVar24 = pmVar24 + -(int)p_Var26;
          pmVar6 = pmVar29 + iVar4;
          do {
            mVar5 = *pmVar11;
            pmVar11 = pmVar11 + 1;
            *pmVar6 = mVar5;
            pmVar6 = pmVar6 + 1;
          } while (pmVar24 != pmVar11);
        }
      }
LAB_0002b088:
      uVar23 = ~(uint)p_Var26;
      puVar13 = pmVar19 + uVar23;
      pmVar6 = pmVar29 + uVar23;
LAB_0002b098:
      uVar25 = *puVar13;
      puVar13 = puVar13 + -1;
      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;
      pmVar24 = (mp_limb_t *)(uVar23 + 1);
      pcVar35 = *(code **)(puVar36 + -0x7a84);
      if ((int)pmVar24 < (int)*puVar3) {
        piVar7 = (int *)puVar3[2];
      }
      else {
        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;
        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);
        puVar36 = *(undefined **)(puVar37 + -0x40);
        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);
      }
      iVar9 = 0;
      do {
        puVar13 = (uint *)((int)pmVar19 + iVar9);
        puVar18 = (uint *)((int)pmVar29 + iVar9);
        puVar15 = (uint *)((int)piVar7 + iVar9);
        iVar9 = iVar9 + 4;
        *puVar15 = *puVar13 & *puVar18;
      } while ((int)pmVar24 * 4 != iVar9);
      piVar7[(int)pmVar24] = 0;
      piVar8 = piVar7;
      do {
        iVar9 = *piVar8;
        *piVar8 = iVar9 + 1;
        piVar8 = piVar8 + 1;
      } while (iVar9 + 1 == 0);
      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);
      p_Var32 = (mpz_srcptr)-(int)p_Var14;
      goto LAB_0002b0c0;
    }
  }
  else {
    p_Var20 = p_Var14;
    pmVar19 = pmVar24;
    p_Var27 = p_Var26;
    pmVar29 = pmVar28;
    p_Var33 = p_Var32;
    if (-1 < (int)p_Var32) {
      puVar13 = puVar3;
      if ((int)p_Var26 < (int)p_Var32) {
        pcVar35 = *(code **)(puVar34 + 0x6cacc);
        if ((int)*puVar3 < (int)p_Var32) {
          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;
          p_Var14 = p_Var32;
          pmVar30 = (mp_limb_t *)(*pcVar35)();
          puVar36 = *(undefined **)(puVar37 + -0x40);
          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);
        }
        if (pmVar30 != pmVar24) {
          pmVar19 = pmVar24 + (int)p_Var26;
          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));
          puVar18 = pmVar30 + (int)p_Var26;
          p_Var14 = (mpz_srcptr)*pmVar19;
          puVar15 = puVar18;
          if (puVar10 != (undefined1 *)0x0) {
            do {
              pmVar19 = pmVar19 + 1;
              puVar13 = puVar15 + 1;
              *puVar15 = (uint)p_Var14;
              puVar10 = puVar10 + -1;
              p_Var14 = (mpz_srcptr)*pmVar19;
              puVar15 = puVar13;
            } while (puVar10 != (undefined1 *)0x0);
            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));
          }
          *puVar18 = (uint)p_Var14;
        }
        iVar9 = 0;
        if (p_Var26 != (mpz_srcptr)0x0) {
          do {
            puVar15 = (uint *)((int)pmVar28 + iVar9);
            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);
            puVar13 = (uint *)((int)pmVar30 + iVar9);
            iVar9 = iVar9 + 4;
            p_Var14 = (mpz_srcptr)*puVar16;
            *puVar13 = *puVar15 | (uint)p_Var14;
          } while ((int)p_Var26 << 2 != iVar9);
        }
        puVar3[1] = (uint)p_Var32;
      }
      else {
        pcVar35 = *(code **)(puVar34 + 0x6cacc);
        if ((int)*puVar3 < (int)p_Var26) {
          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;
          p_Var14 = p_Var26;
          pmVar30 = (mp_limb_t *)(*pcVar35)();
          puVar36 = *(undefined **)(puVar37 + -0x40);
          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);
        }
        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {
          pmVar19 = pmVar28 + (int)p_Var32;
          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));
          puVar18 = pmVar30 + (int)p_Var32;
          p_Var14 = (mpz_srcptr)*pmVar19;
          puVar15 = puVar18;
          if (puVar10 != (undefined1 *)0x0) {
            do {
              pmVar19 = pmVar19 + 1;
              puVar13 = puVar15 + 1;
              *puVar15 = (uint)p_Var14;
              puVar10 = puVar10 + -1;
              p_Var14 = (mpz_srcptr)*pmVar19;
              puVar15 = puVar13;
            } while (puVar10 != (undefined1 *)0x0);
            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));
          }
          *puVar18 = (uint)p_Var14;
        }
        iVar9 = 0;
        if (p_Var32 != (mpz_srcptr)0x0) {
          do {
            puVar15 = (uint *)((int)pmVar28 + iVar9);
            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);
            puVar13 = (uint *)((int)pmVar30 + iVar9);
            iVar9 = iVar9 + 4;
            p_Var14 = (mpz_srcptr)*puVar16;
            *puVar13 = *puVar15 | (uint)p_Var14;
          } while (iVar9 != (int)p_Var32 << 2);
        }
        puVar3[1] = (uint)p_Var26;
        p_Var32 = p_Var26;
        puVar38 = puVar37 + -0x50;
      }
      goto LAB_0002ac9c;
    }
  }
  p_Var14 = (mpz_srcptr)-(int)p_Var33;
  p_Var17 = (mpz_srcptr)((int)p_Var33 * -4);
  pcVar35 = *(code **)(puVar34 + 0x6c800);
  if (p_Var17 < (mpz_srcptr)0x7f01) {
    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);
    puVar10 = puVar37 + -(int)p_Var17 + -0x50;
    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);
  }
  else {
    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;
    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;
    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);
    puVar36 = *(undefined **)(puVar37 + -0x40);
    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);
    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);
  }
  mVar5 = *pmVar19;
  *pmVar24 = mVar5 - 1;
  if (mVar5 == 0) {
    if (p_Var33 != (mpz_srcptr)0xffffffff) {
      mVar5 = pmVar19[1];
      pmVar24[1] = mVar5 - 1;
      if (mVar5 == 0) {
        pmVar6 = pmVar19 + 2;
        iVar9 = 2;
        pmVar28 = pmVar24 + 2;
        do {
          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);
          iVar9 = iVar9 + 1;
          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;
          p_Var17 = (mpz_srcptr)*pmVar6;
          pmVar6 = pmVar6 + 1;
          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);
          pmVar28 = pmVar28 + 1;
        } while (p_Var17 == (mpz_srcptr)0x0);
      }
      else {
        iVar9 = 2;
      }
      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {
        pmVar6 = pmVar19 + iVar9;
        pmVar28 = pmVar24 + iVar9;
        do {
          mVar5 = *pmVar6;
          pmVar6 = pmVar6 + 1;
          *pmVar28 = mVar5;
          pmVar28 = pmVar28 + 1;
        } while (pmVar19 + (int)p_Var14 != pmVar6);
      }
    }
LAB_0002abf4:
    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));
    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;
LAB_0002ad34:
    pcVar35 = *(code **)(puVar36 + -0x7a84);
    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;
    (*pcVar35)(puVar3);
    puVar36 = *(undefined **)(puVar37 + -0x40);
    pmVar30 = (mp_limb_t *)puVar3[2];
    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);
    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;
LAB_0002ac20:
    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);
    if (p_Var26 == (mpz_srcptr)0x0) {
LAB_0002ac84:
      pmVar24 = (mp_limb_t *)0xffffffff;
      *pmVar30 = 1;
      puVar13 = *(uint **)(puVar37 + -0x30);
      puVar3[1] = 0xffffffff;
      pmVar28 = pmVar29;
      goto joined_r0x0002b0c4;
    }
    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {
      pmVar19 = pmVar29 + (int)p_Var26;
      pmVar28 = pmVar24 + (int)p_Var26;
      p_Var14 = p_Var32;
      do {
        p_Var32 = p_Var14;
        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);
        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;
        puVar13 = pmVar19 + -2;
        pmVar6 = pmVar28 + -2;
        pmVar19 = pmVar19 + -1;
        pmVar28 = pmVar28 + -1;
        p_Var26 = p_Var32;
      } while ((~*puVar13 & *pmVar6) == 0);
    }
    iVar9 = (int)p_Var26 << 2;
  }
  else {
    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))
    goto LAB_0002abf4;
    do {
      pmVar19 = pmVar19 + 1;
      p_Var17 = (mpz_srcptr)*pmVar19;
      iVar9 = iVar9 + 1;
      pmVar28[1] = (mp_limb_t)p_Var17;
      pmVar28 = pmVar28 + 1;
    } while (iVar9 < (int)p_Var14);
    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));
    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;
LAB_0002ac14:
    p_Var14 = p_Var17;
    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;
LAB_0002ad60:
    iVar9 = (int)p_Var27 * 4;
    pmVar19 = pmVar24 + (int)p_Var27;
    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));
    pmVar6 = pmVar30 + (int)p_Var27;
    mVar5 = *pmVar19;
    pmVar28 = pmVar6;
    if (puVar10 != (undefined1 *)0x0) {
      do {
        pmVar19 = pmVar19 + 1;
        *pmVar28 = mVar5;
        puVar10 = puVar10 + -1;
        mVar5 = *pmVar19;
        pmVar28 = pmVar28 + 1;
      } while (puVar10 != (undefined1 *)0x0);
      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));
    }
    *pmVar6 = mVar5;
    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;
  }
  iVar4 = 0;
  do {
    puVar3 = (uint *)((int)pmVar29 + iVar4);
    puVar15 = (uint *)((int)pmVar24 + iVar4);
    puVar13 = (uint *)((int)pmVar30 + iVar4);
    iVar4 = iVar4 + 4;
    *puVar13 = ~*puVar3 & *puVar15;
  } while (iVar9 != iVar4);
LAB_0002addc:
  mVar5 = *pmVar30;
  *pmVar30 = mVar5 + 1;
  if (mVar5 + 1 == 0) {
    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {
LAB_0002ae34:
      pmVar30[(int)p_Var26] = 1;
      iVar9 = FUN_0002ac90();
      return iVar9;
    }
    mVar5 = pmVar30[1];
    pmVar30[1] = mVar5 + 1;
    if (mVar5 + 1 == 0) {
      p_Var14 = (mpz_srcptr)0x2;
      pmVar24 = pmVar30 + 2;
      do {
        bVar1 = p_Var26 == p_Var14;
        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);
        if (bVar1) goto LAB_0002ae34;
        mVar5 = *pmVar24;
        *pmVar24 = mVar5 + 1;
        pmVar24 = pmVar24 + 1;
      } while (mVar5 + 1 == 0);
    }
  }
  iVar9 = FUN_0002ac90();
  return iVar9;
code_r0x0002b0ac:
  uVar23 = uVar23 - 1;
  pmVar6 = pmVar6 + -1;
  if (uVar23 == 0xffffffff) goto code_r0x0002b0b8;
  goto LAB_0002b098;
code_r0x0002b0b8:
  *pmVar30 = 1;
  p_Var32 = (mpz_srcptr)0xffffffff;
LAB_0002b0c0:
  puVar13 = *(uint **)(puVar37 + -0x30);
  puVar3[1] = (uint)p_Var32;
  puVar10 = puVar39;
joined_r0x0002b0c4:
  puVar38 = puVar10;
  if (puVar13 != (uint *)0x0) {
    (**(code **)(puVar36 + -0x7a2c))();
    puVar36 = *(undefined **)(puVar37 + -0x40);
  }
LAB_0002ac9c:
  iVar9 = *piVar31;
  if (*(int *)(puVar37 + -0x2c) == iVar9) {
    return iVar9;
  }
  pcVar35 = *(code **)(puVar36 + -0x7b70);
  uVar40 = 0x2b384;
  (*pcVar35)();
  *(mp_limb_t **)(puVar38 + -0x14) = pmVar24;
  *(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0;
  *(mp_limb_t **)(puVar38 + -8) = pmVar30;
  *(mp_limb_t **)(puVar38 + -0xc) = pmVar28;
  *(undefined4 *)(puVar38 + -4) = uVar40;
  *(mpz_srcptr *)(puVar38 + -0x10) = p_Var32;
  uVar25 = p_Var14->_mp_size;
  uVar23 = uVar25;
  if ((int)uVar25 < 0) {
    uVar23 = -uVar25;
  }
  uVar12 = 1;
  if (0 < (int)uVar23) {
    uVar12 = uVar23;
  }
  pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c);
  *puVar13 = uVar12;
  pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2);
  puVar13[2] = (uint)pmVar30;
  if (uVar25 != 0) {
    pmVar28 = p_Var14->_mp_d;
    iVar9 = uVar23 - 1;
    mVar5 = *pmVar28;
    pmVar24 = pmVar30;
    if (iVar9 != 0) {
      do {
        pmVar28 = pmVar28 + 1;
        *pmVar24 = mVar5;
        iVar9 = iVar9 + -1;
        mVar5 = *pmVar28;
        pmVar24 = pmVar24 + 1;
      } while (iVar9 != 0);
      pmVar30 = pmVar30 + (uVar23 - 1);
    }
    *pmVar30 = mVar5;
  }
  puVar13[1] = uVar25;
  return (int)pmVar30;
}



undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)

{
  bool bVar1;
  undefined *puVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  uint *puVar8;
  int *piVar9;
  uint *puVar10;
  uint *puVar11;
  undefined4 *puVar12;
  int *piVar13;
  uint *puVar14;
  int *piVar15;
  uint uVar16;
  uint uVar17;
  uint *puVar18;
  uint uVar19;
  int *piVar20;
  int *piVar21;
  uint *puVar22;
  uint *puVar23;
  uint *puVar24;
  int *unaff_s5;
  int *piVar25;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  int *piVar26;
  int *piVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  undefined1 *puVar33;
  undefined1 *puVar34;
  undefined4 uVar35;
  undefined1 auStack_68 [24];
  int local_40;
  int local_3c;
  int local_38;
  int *local_34;
  int local_30;
  int local_2c;
  undefined1 *local_28;
  uint *local_24;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar31 = auStack_68;
  iVar5 = *(int *)(param_2 + 4);
  local_24 = *(uint **)PTR___stack_chk_guard_00097540;
  if (iVar5 < 0) {
    iVar5 = -iVar5;
  }
  iVar3 = param_3[1];
  if (iVar3 < 0) {
    iVar3 = -iVar3;
  }
  local_40 = 0;
  if (iVar3 <= iVar5) {
    iVar3 = iVar5;
  }
  iVar3 = iVar3 + 1;
  uVar17 = iVar3 * 4;
  local_3c = iVar3;
  local_30 = iVar3;
  if (uVar17 < 0x7f01) {
    uVar17 = uVar17 + 7 & 0xfffffff8;
    iVar5 = uVar17 * -2;
    puVar31 = auStack_68 + iVar5;
    local_34 = (int *)(&stack0xffffffb0 + -uVar17);
    local_28 = &stack0xffffffb0 + iVar5;
  }
  else {
    unaff_s5 = &local_40;
    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);
    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);
  }
  piVar13 = (int *)0x0;
  *(int **)(puVar31 + 0x10) = param_3;
  piVar9 = &local_30;
  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);
  if ((local_38 == 1) && (*local_34 == 1)) {
    if (local_2c < 0) {
      pcVar29 = (code *)PTR___gmpz_sub_0009752c;
      if (-1 < param_3[1]) {
        pcVar29 = (code *)PTR___gmpz_add_000971f0;
      }
      piVar9 = &local_30;
      piVar13 = param_3;
      (*pcVar29)(param_1);
    }
    else {
      piVar9 = &local_30;
      (*(code *)PTR___gmpz_set_000974b8)(param_1);
    }
    puVar4 = (undefined4 *)0x1;
  }
  else {
    puVar4 = (undefined4 *)0x0;
  }
  if (local_40 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (local_24 == *(uint **)puVar2) {
    return puVar4;
  }
  uVar35 = 0x2aaec;
  puVar7 = local_24;
  puVar28 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar28 + 0x74550;
  puVar34 = puVar31 + -0x50;
  puVar33 = puVar31 + -0x50;
  puVar32 = puVar31 + -0x50;
  *(int **)(puVar31 + -0x14) = unaff_s5;
  *(int *)(puVar31 + -0x24) = iVar3;
  piVar25 = *(int **)(puVar28 + 0x6ca50);
  piVar20 = (int *)piVar9[1];
  *(undefined1 **)(puVar31 + -8) = auStack_68;
  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;
  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;
  *(int **)(puVar31 + -0x1c) = param_3;
  *(undefined4 *)(puVar31 + -0x20) = param_1;
  *(int **)(puVar31 + -0x28) = &local_30;
  *(undefined4 *)(puVar31 + -4) = uVar35;
  *(undefined **)(puVar31 + -0x18) = puVar2;
  *(undefined **)(puVar31 + -0x40) = puVar30;
  *(undefined4 *)(puVar31 + -0x30) = 0;
  piVar26 = (int *)piVar13[1];
  puVar22 = (uint *)piVar9[2];
  puVar18 = (uint *)piVar13[2];
  puVar24 = (uint *)puVar7[2];
  *(int *)(puVar31 + -0x2c) = *piVar25;
  if ((int)piVar20 < 0) {
    piVar15 = piVar13;
    puVar8 = puVar22;
    piVar21 = piVar26;
    puVar23 = puVar18;
    piVar27 = piVar20;
    if ((int)piVar26 < 0) {
      if ((int)piVar20 < (int)piVar26) {
        piVar20 = piVar26;
      }
      iVar5 = -(int)piVar20;
      piVar9 = (int *)((int)piVar20 * -8);
      if (piVar9 < (int *)0x7f01) {
        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;
        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);
      }
      else {
        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);
        puVar30 = *(undefined **)(puVar31 + -0x40);
      }
      uVar17 = *puVar22;
      uVar19 = *puVar18;
      puVar23 = puVar8 + -(int)piVar20;
      uVar16 = uVar19 - 1;
      *puVar8 = uVar17 - 1;
      if (uVar17 == 0) {
        if (piVar20 == (int *)0xffffffff) {
LAB_0002b274:
          *puVar23 = uVar16;
          if (uVar19 == 0) goto LAB_0002b088;
        }
        else {
          uVar17 = puVar22[1];
          puVar8[1] = uVar17 - 1;
          if (uVar17 == 0) {
            puVar11 = puVar22 + 2;
            iVar3 = 2;
            puVar10 = puVar8 + 2;
            do {
              piVar9 = (int *)(uint)(iVar3 < iVar5);
              if (piVar9 == (int *)0x0) goto LAB_0002b038;
              piVar9 = (int *)*puVar11;
              iVar3 = iVar3 + 1;
              puVar11 = puVar11 + 1;
              *puVar10 = (int)piVar9 - 1;
              puVar10 = puVar10 + 1;
            } while (piVar9 == (int *)0x0);
          }
          else {
            iVar3 = 2;
          }
          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {
            puVar11 = puVar22 + iVar3;
            puVar22 = puVar22 + -(int)piVar20;
            puVar10 = puVar8 + iVar3;
            do {
              uVar17 = *puVar11;
              puVar11 = puVar11 + 1;
              *puVar10 = uVar17;
              puVar10 = puVar10 + 1;
            } while (puVar22 != puVar11);
          }
LAB_0002b038:
          *puVar23 = uVar16;
          if (uVar19 == 0) goto LAB_0002b040;
        }
LAB_0002b27c:
        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {
          puVar18 = puVar18 + 1;
          iVar3 = 1;
          puVar10 = puVar23;
          do {
            puVar10 = puVar10 + 1;
            piVar9 = (int *)*puVar18;
            iVar3 = iVar3 + 1;
            puVar18 = puVar18 + 1;
            *puVar10 = (uint)piVar9;
          } while (iVar3 < iVar5);
        }
      }
      else {
        if (puVar8 != puVar22) {
          puVar22 = puVar22 + 1;
          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;
          iVar3 = 1;
          puVar10 = puVar8;
          do {
            puVar10 = puVar10 + 1;
            piVar9 = (int *)*puVar22;
            iVar3 = iVar3 + 1;
            puVar22 = puVar22 + 1;
            *puVar10 = (uint)piVar9;
          } while (iVar3 < iVar5);
          goto LAB_0002b038;
        }
        *puVar23 = uVar16;
        if (uVar19 != 0) goto LAB_0002b27c;
        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;
LAB_0002b040:
        uVar17 = puVar18[1];
        puVar23[1] = uVar17 - 1;
        if (uVar17 == 0) {
          puVar11 = puVar18 + 2;
          iVar3 = 2;
          puVar10 = puVar23 + 2;
          do {
            piVar9 = (int *)(uint)(iVar3 < iVar5);
            if (piVar9 == (int *)0x0) goto LAB_0002b088;
            piVar9 = (int *)*puVar11;
            iVar3 = iVar3 + 1;
            puVar11 = puVar11 + 1;
            *puVar10 = (int)piVar9 - 1;
            puVar10 = puVar10 + 1;
          } while (piVar9 == (int *)0x0);
        }
        else {
          iVar3 = 2;
        }
        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {
          puVar11 = puVar18 + iVar3;
          puVar18 = puVar18 + -(int)piVar20;
          puVar10 = puVar23 + iVar3;
          do {
            uVar17 = *puVar11;
            puVar11 = puVar11 + 1;
            *puVar10 = uVar17;
            puVar10 = puVar10 + 1;
          } while (puVar18 != puVar11);
        }
      }
LAB_0002b088:
      uVar17 = ~(uint)piVar20;
      puVar11 = puVar8 + uVar17;
      puVar10 = puVar23 + uVar17;
LAB_0002b098:
      uVar19 = *puVar11;
      puVar11 = puVar11 + -1;
      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;
      puVar18 = (uint *)(uVar17 + 1);
      pcVar29 = *(code **)(puVar30 + -0x7a84);
      if ((int)puVar18 < (int)*puVar7) {
        piVar9 = (int *)puVar7[2];
      }
      else {
        *(uint **)(puVar31 + -0x34) = puVar8;
        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);
        puVar30 = *(undefined **)(puVar31 + -0x40);
        puVar8 = *(uint **)(puVar31 + -0x34);
      }
      iVar5 = 0;
      do {
        puVar10 = (uint *)((int)puVar8 + iVar5);
        puVar14 = (uint *)((int)puVar23 + iVar5);
        puVar11 = (uint *)((int)piVar9 + iVar5);
        iVar5 = iVar5 + 4;
        *puVar11 = *puVar10 & *puVar14;
      } while ((int)puVar18 * 4 != iVar5);
      piVar9[(int)puVar18] = 0;
      piVar13 = piVar9;
      do {
        iVar5 = *piVar13;
        *piVar13 = iVar5 + 1;
        piVar13 = piVar13 + 1;
      } while (iVar5 + 1 == 0);
      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);
      piVar21 = (int *)-(int)piVar9;
      goto LAB_0002b0c0;
    }
  }
  else {
    piVar15 = piVar9;
    puVar8 = puVar18;
    piVar21 = piVar20;
    puVar23 = puVar22;
    piVar27 = piVar26;
    if (-1 < (int)piVar26) {
      puVar8 = puVar7;
      if ((int)piVar20 < (int)piVar26) {
        pcVar29 = *(code **)(puVar28 + 0x6cacc);
        if ((int)*puVar7 < (int)piVar26) {
          *(int **)(puVar31 + -0x34) = piVar9;
          piVar9 = piVar26;
          puVar24 = (uint *)(*pcVar29)();
          puVar30 = *(undefined **)(puVar31 + -0x40);
          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
        }
        if (puVar24 != puVar18) {
          puVar10 = puVar18 + (int)piVar20;
          iVar5 = (int)piVar26 + (-1 - (int)piVar20);
          puVar11 = puVar24 + (int)piVar20;
          piVar9 = (int *)*puVar10;
          puVar23 = puVar11;
          if (iVar5 != 0) {
            do {
              puVar10 = puVar10 + 1;
              puVar8 = puVar23 + 1;
              *puVar23 = (uint)piVar9;
              iVar5 = iVar5 + -1;
              piVar9 = (int *)*puVar10;
              puVar23 = puVar8;
            } while (iVar5 != 0);
            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);
          }
          *puVar11 = (uint)piVar9;
        }
        iVar5 = 0;
        if (piVar20 != (int *)0x0) {
          do {
            puVar23 = (uint *)((int)puVar22 + iVar5);
            puVar10 = (uint *)((int)puVar18 + iVar5);
            puVar8 = (uint *)((int)puVar24 + iVar5);
            iVar5 = iVar5 + 4;
            piVar9 = (int *)*puVar10;
            *puVar8 = *puVar23 | (uint)piVar9;
          } while ((int)piVar20 << 2 != iVar5);
        }
        puVar7[1] = (uint)piVar26;
      }
      else {
        pcVar29 = *(code **)(puVar28 + 0x6cacc);
        if ((int)*puVar7 < (int)piVar20) {
          *(int **)(puVar31 + -0x34) = piVar13;
          piVar9 = piVar20;
          puVar24 = (uint *)(*pcVar29)();
          puVar30 = *(undefined **)(puVar31 + -0x40);
          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
        }
        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {
          puVar10 = puVar22 + (int)piVar26;
          iVar5 = (int)piVar20 + (-1 - (int)piVar26);
          puVar11 = puVar24 + (int)piVar26;
          piVar9 = (int *)*puVar10;
          puVar23 = puVar11;
          if (iVar5 != 0) {
            do {
              puVar10 = puVar10 + 1;
              puVar8 = puVar23 + 1;
              *puVar23 = (uint)piVar9;
              iVar5 = iVar5 + -1;
              piVar9 = (int *)*puVar10;
              puVar23 = puVar8;
            } while (iVar5 != 0);
            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);
          }
          *puVar11 = (uint)piVar9;
        }
        iVar5 = 0;
        if (piVar26 != (int *)0x0) {
          do {
            puVar23 = (uint *)((int)puVar22 + iVar5);
            puVar10 = (uint *)((int)puVar18 + iVar5);
            puVar8 = (uint *)((int)puVar24 + iVar5);
            iVar5 = iVar5 + 4;
            piVar9 = (int *)*puVar10;
            *puVar8 = *puVar23 | (uint)piVar9;
          } while (iVar5 != (int)piVar26 << 2);
        }
        puVar7[1] = (uint)piVar20;
        piVar26 = piVar20;
        puVar33 = puVar31 + -0x50;
      }
      goto LAB_0002ac9c;
    }
  }
  piVar9 = (int *)-(int)piVar27;
  piVar13 = (int *)((int)piVar27 * -4);
  pcVar29 = *(code **)(puVar28 + 0x6c800);
  if (piVar13 < (int *)0x7f01) {
    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);
    puVar32 = puVar31 + -(int)piVar13 + -0x50;
    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);
  }
  else {
    *(int **)(puVar31 + -0x38) = piVar9;
    *(int **)(puVar31 + -0x34) = piVar15;
    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);
    puVar30 = *(undefined **)(puVar31 + -0x40);
    piVar9 = *(int **)(puVar31 + -0x38);
    piVar15 = *(int **)(puVar31 + -0x34);
  }
  uVar17 = *puVar8;
  *puVar18 = uVar17 - 1;
  if (uVar17 == 0) {
    if (piVar27 != (int *)0xffffffff) {
      uVar17 = puVar8[1];
      puVar18[1] = uVar17 - 1;
      if (uVar17 == 0) {
        puVar10 = puVar8 + 2;
        iVar5 = 2;
        puVar22 = puVar18 + 2;
        do {
          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);
          iVar5 = iVar5 + 1;
          if (piVar13 == (int *)0x0) goto LAB_0002abf4;
          piVar13 = (int *)*puVar10;
          puVar10 = puVar10 + 1;
          *puVar22 = (int)piVar13 - 1;
          puVar22 = puVar22 + 1;
        } while (piVar13 == (int *)0x0);
      }
      else {
        iVar5 = 2;
      }
      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {
        puVar10 = puVar8 + iVar5;
        puVar22 = puVar18 + iVar5;
        do {
          uVar17 = *puVar10;
          puVar10 = puVar10 + 1;
          *puVar22 = uVar17;
          puVar22 = puVar22 + 1;
        } while (puVar8 + (int)piVar9 != puVar10);
      }
    }
LAB_0002abf4:
    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));
    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;
LAB_0002ad34:
    pcVar29 = *(code **)(puVar30 + -0x7a84);
    *(int **)(puVar31 + -0x34) = piVar15;
    (*pcVar29)(puVar7);
    puVar30 = *(undefined **)(puVar31 + -0x40);
    puVar24 = (uint *)puVar7[2];
    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;
LAB_0002ac20:
    piVar21 = (int *)((int)piVar26 - 1);
    if (piVar26 != (int *)0x0) {
      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {
        puVar8 = puVar23 + (int)piVar26;
        puVar22 = puVar18 + (int)piVar26;
        piVar9 = piVar21;
        do {
          piVar21 = piVar9;
          piVar9 = (int *)((int)piVar21 - 1);
          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;
          puVar10 = puVar8 + -2;
          puVar11 = puVar22 + -2;
          puVar8 = puVar8 + -1;
          puVar22 = puVar22 + -1;
          piVar26 = piVar21;
        } while ((~*puVar10 & *puVar11) == 0);
      }
      iVar3 = (int)piVar26 << 2;
      piVar21 = piVar26;
LAB_0002adb0:
      iVar5 = 0;
      do {
        puVar22 = (uint *)((int)puVar23 + iVar5);
        puVar10 = (uint *)((int)puVar18 + iVar5);
        puVar8 = (uint *)((int)puVar24 + iVar5);
        iVar5 = iVar5 + 4;
        piVar9 = (int *)*puVar10;
        *puVar8 = ~*puVar22 & (uint)piVar9;
      } while (iVar3 != iVar5);
      goto LAB_0002addc;
    }
LAB_0002ac84:
    puVar18 = (uint *)0xffffffff;
    *puVar24 = 1;
  }
  else {
    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))
    goto LAB_0002abf4;
    do {
      puVar8 = puVar8 + 1;
      piVar13 = (int *)*puVar8;
      iVar5 = iVar5 + 1;
      puVar22[1] = (uint)piVar13;
      puVar22 = puVar22 + 1;
    } while (iVar5 < (int)piVar9);
    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));
    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;
LAB_0002ac14:
    piVar9 = piVar13;
    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;
LAB_0002ad60:
    iVar3 = (int)piVar21 * 4;
    puVar8 = puVar18 + (int)piVar21;
    iVar5 = (int)piVar26 + (-1 - (int)piVar21);
    puVar10 = puVar24 + (int)piVar21;
    piVar9 = (int *)*puVar8;
    puVar22 = puVar10;
    if (iVar5 != 0) {
      do {
        puVar8 = puVar8 + 1;
        *puVar22 = (uint)piVar9;
        iVar5 = iVar5 + -1;
        piVar9 = (int *)*puVar8;
        puVar22 = puVar22 + 1;
      } while (iVar5 != 0);
      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);
    }
    *puVar10 = (uint)piVar9;
    if (piVar21 != (int *)0x0) goto LAB_0002adb0;
LAB_0002addc:
    uVar17 = *puVar24;
    *puVar24 = uVar17 + 1;
    if (uVar17 + 1 == 0) {
      if (piVar26 == (int *)0x1) {
LAB_0002ae34:
        puVar18 = (uint *)~(uint)piVar26;
        puVar24 = puVar24 + (int)piVar26;
        *puVar24 = 1;
        goto LAB_0002ac90;
      }
      uVar17 = puVar24[1];
      puVar24[1] = uVar17 + 1;
      if (uVar17 + 1 == 0) {
        piVar13 = (int *)0x2;
        puVar18 = puVar24 + 2;
        do {
          bVar1 = piVar26 == piVar13;
          piVar13 = (int *)((int)piVar13 + 1);
          if (bVar1) goto LAB_0002ae34;
          uVar17 = *puVar18;
          *puVar18 = uVar17 + 1;
          puVar18 = puVar18 + 1;
        } while (uVar17 + 1 == 0);
      }
    }
    puVar18 = (uint *)-(int)piVar26;
  }
LAB_0002ac90:
  puVar8 = *(uint **)(puVar31 + -0x30);
  puVar7[1] = (uint)puVar18;
  puVar22 = puVar23;
  goto joined_r0x0002b0c4;
code_r0x0002b0ac:
  uVar17 = uVar17 - 1;
  puVar10 = puVar10 + -1;
  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;
  goto LAB_0002b098;
code_r0x0002b0b8:
  *puVar24 = 1;
  piVar21 = (int *)0xffffffff;
LAB_0002b0c0:
  puVar8 = *(uint **)(puVar31 + -0x30);
  puVar7[1] = (uint)piVar21;
  puVar32 = puVar34;
joined_r0x0002b0c4:
  piVar26 = piVar21;
  puVar33 = puVar32;
  if (puVar8 != (uint *)0x0) {
    (**(code **)(puVar30 + -0x7a2c))();
    puVar30 = *(undefined **)(puVar31 + -0x40);
  }
LAB_0002ac9c:
  puVar4 = (undefined4 *)*piVar25;
  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {
    return puVar4;
  }
  pcVar29 = *(code **)(puVar30 + -0x7b70);
  uVar35 = 0x2b384;
  (*pcVar29)();
  *(uint **)(puVar33 + -0x14) = puVar18;
  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;
  *(uint **)(puVar33 + -8) = puVar24;
  *(uint **)(puVar33 + -0xc) = puVar22;
  *(undefined4 *)(puVar33 + -4) = uVar35;
  *(int **)(puVar33 + -0x10) = piVar26;
  uVar19 = piVar9[1];
  uVar17 = uVar19;
  if ((int)uVar19 < 0) {
    uVar17 = -uVar19;
  }
  uVar16 = 1;
  if (0 < (int)uVar17) {
    uVar16 = uVar17;
  }
  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);
  *puVar8 = uVar16;
  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);
  puVar8[2] = (uint)puVar4;
  if (uVar19 != 0) {
    puVar6 = (undefined4 *)piVar9[2];
    iVar5 = uVar17 - 1;
    uVar35 = *puVar6;
    puVar12 = puVar4;
    if (iVar5 != 0) {
      do {
        puVar6 = puVar6 + 1;
        *puVar12 = uVar35;
        iVar5 = iVar5 + -1;
        uVar35 = *puVar6;
        puVar12 = puVar12 + 1;
      } while (iVar5 != 0);
      puVar4 = puVar4 + (uVar17 - 1);
    }
    *puVar4 = uVar35;
  }
  puVar8[1] = uVar19;
  return puVar4;
}


lui gp,0x7
addiu gp,gp,0x4750
addu gp,gp,t9
addiu sp,sp,-0x68
lw v1,0x4(a1)
or a3,a1,zero
sw s4,0x58(sp)
lw s4,-0x7b00(gp)
sw s8,0x60(sp)
or s8,sp,zero
sw s3,0x54(sp)
or s3,a2,zero
sw s2,0x50(sp)
or s2,a0,zero
sw ra,0x64(sp)
sw s5,0x5c(sp)
sw s1,0x4c(sp)
sw s0,0x48(sp)
sw gp,0x18(sp)
lw v0,0x0(s4)
sw v0,0x44(s8)
bgez v1,0x0002a950
_nop
subu v1,zero,v1
lw v0,0x4(s3)
bgez v0,0x0002a964
_slt s1,v1,v0
subu v0,zero,v0
slt s1,v1,v0
sw zero,0x28(s8)
movz v0,v1,s1
addiu s1,v0,0x1
sll s0,s1,0x2
sltiu v0,s0,0x7f01
beq v0,zero,0x0002aa9c
_sw s1,0x2c(s8)
addiu s0,s0,0x7
sw s1,0x38(s8)
srl s0,s0,0x3
sll s0,s0,0x3
subu sp,sp,s0
addiu v0,sp,0x18
subu sp,sp,s0
sw v0,0x34(s8)
addiu v0,sp,0x18
lw t9,-0x7a9c(gp)
addiu s0,s8,0x38
or a2,zero,zero
sw v0,0x40(s8)
addiu a0,s8,0x2c
sw s3,0x10(sp)
jalr t9
_or a1,s0,zero
li v1,0x1
lw v0,0x30(s8)
bne v0,v1,0x0002a9e4
_lw gp,0x18(s8)
lw v1,0x34(s8)
lw v1,0x0(v1)
beq v1,v0,0x0002aa2c
_lw v1,0x3c(s8)
lw a0,0x28(s8)
bne a0,zero,0x0002aa68
_or v0,zero,zero
lw a0,0x44(s8)
lw v1,0x0(s4)
bne a0,v1,0x0002aae4
_lw t9,-0x7b70(gp)
or sp,s8,zero
lw ra,0x64(sp)
lw s8,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x68
bgez v1,0x0002aa80
_lw t9,-0x7b88(gp)
lw v1,0x4(s3)
bltz v1,0x0002aadc
_sw v0,0x24(s8)
lw t9,-0x7e50(gp)
or a2,s3,zero
or a1,s0,zero
jalr t9
_or a0,s2,zero
lw gp,0x18(s8)
lw v0,0x24(s8)
lw a0,0x28(s8)
beq a0,zero,0x0002a9f0
_nop
lw t9,-0x7a2c(gp)
jalr t9
_sw v0,0x24(s8)
lw gp,0x18(s8)
b 0x0002a9f0
_lw v0,0x24(s8)
or a1,s0,zero
sw v0,0x24(s8)
jalr t9
_or a0,s2,zero
lw gp,0x18(s8)
b 0x0002aa5c
_lw v0,0x24(s8)
lw t9,-0x7d50(gp)
addiu s5,s8,0x28
sw a3,0x24(s8)
or a1,s0,zero
jalr t9
_or a0,s5,zero
or a1,s0,zero
lw gp,0x18(s8)
or a0,s5,zero
sw v0,0x34(s8)
lw t9,-0x7d50(gp)
jalr t9
_sw s1,0x38(s8)
lw gp,0x18(s8)
b 0x0002a9a4
_lw a3,0x24(s8)
b 0x0002aa44
_lw t9,-0x7b14(gp)
jalr t9
_nop
nop
(translation_unit "undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}\n\n" (function_definition "undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" type_identifier (pointer_declarator "* __gmpz_invert(undefined4 param_1,int param_2,int *param_3)" * (function_declarator "__gmpz_invert(undefined4 param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "undefined1 *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "undefined1 *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "undefined4 uVar35;" type_identifier identifier ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar31 = auStack_68;" (assignment_expression "puVar31 = auStack_68" identifier = identifier) ;) (expression_statement "iVar5 = *(int *)(param_2 + 4);" (assignment_expression "iVar5 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_24 = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = -iVar5;\n  }" { (expression_statement "iVar5 = -iVar5;" (assignment_expression "iVar5 = -iVar5" identifier = (unary_expression "-iVar5" - identifier)) ;) })) (expression_statement "iVar3 = param_3[1];" (assignment_expression "iVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar3 = -iVar3;\n  }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }" if (parenthesized_expression "(iVar3 <= iVar5)" ( (binary_expression "iVar3 <= iVar5" identifier <= identifier) )) (compound_statement "{\n    iVar3 = iVar5;\n  }" { (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = iVar3 * 4;" (assignment_expression "uVar17 = iVar3 * 4" identifier = (binary_expression "iVar3 * 4" identifier * number_literal)) ;) (expression_statement "local_3c = iVar3;" (assignment_expression "local_3c = iVar3" identifier = identifier) ;) (expression_statement "local_30 = iVar3;" (assignment_expression "local_30 = iVar3" identifier = identifier) ;) (if_statement "if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" if (parenthesized_expression "(uVar17 < 0x7f01)" ( (binary_expression "uVar17 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }" { (expression_statement "uVar17 = uVar17 + 7 & 0xfffffff8;" (assignment_expression "uVar17 = uVar17 + 7 & 0xfffffff8" identifier = (binary_expression "uVar17 + 7 & 0xfffffff8" (binary_expression "uVar17 + 7" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar5 = uVar17 * -2;" (assignment_expression "iVar5 = uVar17 * -2" identifier = (binary_expression "uVar17 * -2" identifier * number_literal)) ;) (expression_statement "puVar31 = auStack_68 + iVar5;" (assignment_expression "puVar31 = auStack_68 + iVar5" identifier = (binary_expression "auStack_68 + iVar5" identifier + identifier)) ;) (expression_statement "local_34 = (int *)(&stack0xffffffb0 + -uVar17);" (assignment_expression "local_34 = (int *)(&stack0xffffffb0 + -uVar17)" identifier = (cast_expression "(int *)(&stack0xffffffb0 + -uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb0 + -uVar17)" ( (binary_expression "&stack0xffffffb0 + -uVar17" (pointer_expression "&stack0xffffffb0" & identifier) + (unary_expression "-uVar17" - identifier)) )))) ;) (expression_statement "local_28 = &stack0xffffffb0 + iVar5;" (assignment_expression "local_28 = &stack0xffffffb0 + iVar5" identifier = (binary_expression "&stack0xffffffb0 + iVar5" (pointer_expression "&stack0xffffffb0" & identifier) + identifier)) ;) }) (else_clause "else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" else (compound_statement "{\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" { (expression_statement "unaff_s5 = &local_40;" (assignment_expression "unaff_s5 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" ( identifier , identifier ))))) ;) }))) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar31 + 0x10) = param_3;" (assignment_expression "*(int **)(puVar31 + 0x10) = param_3" (pointer_expression "*(int **)(puVar31 + 0x10)" * (cast_expression "(int **)(puVar31 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);" (call_expression "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2)" (parenthesized_expression "(*(code *)PTR___gmpz_gcdext_000975a4)" ( (pointer_expression "*(code *)PTR___gmpz_gcdext_000975a4" * (cast_expression "(code *)PTR___gmpz_gcdext_000975a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_3c,&local_30,0,param_2)" ( (pointer_expression "&local_3c" & identifier) , (pointer_expression "&local_30" & identifier) , number_literal , identifier ))) ;) (if_statement "if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "((local_38 == 1) && (*local_34 == 1))" ( (binary_expression "(local_38 == 1) && (*local_34 == 1)" (parenthesized_expression "(local_38 == 1)" ( (binary_expression "local_38 == 1" identifier == number_literal) )) && (parenthesized_expression "(*local_34 == 1)" ( (binary_expression "*local_34 == 1" (pointer_expression "*local_34" * identifier) == number_literal) ))) )) (compound_statement "{\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }" { (if_statement "if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }" { (expression_statement "pcVar29 = (code *)PTR___gmpz_sub_0009752c;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_sub_0009752c" identifier = (cast_expression "(code *)PTR___gmpz_sub_0009752c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" if (parenthesized_expression "(-1 < param_3[1])" ( (binary_expression "-1 < param_3[1]" number_literal < (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" { (expression_statement "pcVar29 = (code *)PTR___gmpz_add_000971f0;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_add_000971f0" identifier = (cast_expression "(code *)PTR___gmpz_add_000971f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "piVar13 = param_3;" (assignment_expression "piVar13 = param_3" identifier = identifier) ;) (expression_statement "(*pcVar29)(param_1);" (call_expression "(*pcVar29)(param_1)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" else (compound_statement "{\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" { (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" else (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != 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_24 == *(uint **)puVar2) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_24 == *(uint **)puVar2)" ( (binary_expression "local_24 == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar35 = 0x2aaec;" (assignment_expression "uVar35 = 0x2aaec" identifier = number_literal) ;) (expression_statement "puVar7 = local_24;" (assignment_expression "puVar7 = local_24" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = 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 "puVar30 = puVar28 + 0x74550;" (assignment_expression "puVar30 = puVar28 + 0x74550" identifier = (binary_expression "puVar28 + 0x74550" identifier + number_literal)) ;) (expression_statement "puVar34 = puVar31 + -0x50;" (assignment_expression "puVar34 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar32 = puVar31 + -0x50;" (assignment_expression "puVar32 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" * (cast_expression "(int **)(puVar31 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x24) = iVar3;" (assignment_expression "*(int *)(puVar31 + -0x24) = iVar3" (pointer_expression "*(int *)(puVar31 + -0x24)" * (cast_expression "(int *)(puVar31 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar25 = *(int **)(puVar28 + 0x6ca50);" (assignment_expression "piVar25 = *(int **)(puVar28 + 0x6ca50)" identifier = (pointer_expression "*(int **)(puVar28 + 0x6ca50)" * (cast_expression "(int **)(puVar28 + 0x6ca50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6ca50)" ( (binary_expression "puVar28 + 0x6ca50" identifier + number_literal) ))))) ;) (expression_statement "piVar20 = (int *)piVar9[1];" (assignment_expression "piVar20 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0xc) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar31 + -0xc) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar31 + -0xc)" * (cast_expression "(undefined4 *)(puVar31 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar31 + -0x10)" * (cast_expression "(undefined4 *)(puVar31 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar31 + -0x1c)" * (cast_expression "(int **)(puVar31 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x20) = param_1;" (assignment_expression "*(undefined4 *)(puVar31 + -0x20) = param_1" (pointer_expression "*(undefined4 *)(puVar31 + -0x20)" * (cast_expression "(undefined4 *)(puVar31 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x28) = &local_30;" (assignment_expression "*(int **)(puVar31 + -0x28) = &local_30" (pointer_expression "*(int **)(puVar31 + -0x28)" * (cast_expression "(int **)(puVar31 + -0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar31 + -4)" * (cast_expression "(undefined4 *)(puVar31 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x18) = puVar2;" (assignment_expression "*(undefined **)(puVar31 + -0x18) = puVar2" (pointer_expression "*(undefined **)(puVar31 + -0x18)" * (cast_expression "(undefined **)(puVar31 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x40) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x40) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" * (cast_expression "(undefined4 *)(puVar31 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar26 = (int *)piVar13[1];" (assignment_expression "piVar26 = (int *)piVar13[1]" identifier = (cast_expression "(int *)piVar13[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar22 = (uint *)piVar9[2];" (assignment_expression "puVar22 = (uint *)piVar9[2]" identifier = (cast_expression "(uint *)piVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar18 = (uint *)piVar13[2];" (assignment_expression "puVar18 = (uint *)piVar13[2]" identifier = (cast_expression "(uint *)piVar13[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" identifier = (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar31 + -0x2c) = *piVar25;" (assignment_expression "*(int *)(puVar31 + -0x2c) = *piVar25" (pointer_expression "*(int *)(puVar31 + -0x2c)" * (cast_expression "(int *)(puVar31 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar25" * identifier)) ;) (if_statement "if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" if (parenthesized_expression "((int)piVar20 < 0)" ( (binary_expression "(int)piVar20 < 0" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }" { (expression_statement "piVar15 = piVar13;" (assignment_expression "piVar15 = piVar13" identifier = identifier) ;) (expression_statement "puVar8 = puVar22;" (assignment_expression "puVar8 = puVar22" identifier = identifier) ;) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" identifier = identifier) ;) (expression_statement "puVar23 = puVar18;" (assignment_expression "puVar23 = puVar18" identifier = identifier) ;) (expression_statement "piVar27 = piVar20;" (assignment_expression "piVar27 = piVar20" identifier = identifier) ;) (if_statement "if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" if (parenthesized_expression "((int)piVar26 < 0)" ( (binary_expression "(int)piVar26 < 0" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" { (if_statement "if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }" if (parenthesized_expression "((int)piVar20 < (int)piVar26)" ( (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar20 = piVar26;\n      }" { (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" identifier = identifier) ;) })) (expression_statement "iVar5 = -(int)piVar20;" (assignment_expression "iVar5 = -(int)piVar20" identifier = (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)((int)piVar20 * -8);" (assignment_expression "piVar9 = (int *)((int)piVar20 * -8)" identifier = (cast_expression "(int *)((int)piVar20 * -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 * -8)" ( (binary_expression "(int)piVar20 * -8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" if (parenthesized_expression "(piVar9 < (int *)0x7f01)" ( (binary_expression "piVar9 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }" { (expression_statement "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;" (assignment_expression "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50" identifier = (binary_expression "puVar31 + (int)piVar20 * 8 + -0x50" (binary_expression "puVar31 + (int)piVar20 * 8" identifier + (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);" (assignment_expression "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" identifier = (cast_expression "(uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + (int)piVar20 * 8 + -0x40)" ( (binary_expression "puVar31 + (int)piVar20 * 8 + -0x40" (binary_expression "puVar31 + (int)piVar20 * 8" identifier + (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) ;) }) (else_clause "else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" else (compound_statement "{\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" { (expression_statement "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);" (assignment_expression "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" identifier = (cast_expression "(uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" (parenthesized_expression "(**(code **)(puVar28 + 0x6c800))" ( (pointer_expression "**(code **)(puVar28 + 0x6c800)" * (pointer_expression "*(code **)(puVar28 + 0x6c800)" * (cast_expression "(code **)(puVar28 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6c800)" ( (binary_expression "puVar28 + 0x6c800" identifier + number_literal) ))))) )) (argument_list "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar17 = *puVar22;" (assignment_expression "uVar17 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "uVar19 = *puVar18;" (assignment_expression "uVar19 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar23 = puVar8 + -(int)piVar20;" (assignment_expression "puVar23 = puVar8 + -(int)piVar20" identifier = (binary_expression "puVar8 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "uVar16 = uVar19 - 1;" (assignment_expression "uVar16 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "*puVar8 = uVar17 - 1;" (assignment_expression "*puVar8 = uVar17 - 1" (pointer_expression "*puVar8" * identifier) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }" { (if_statement "if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }" { (labeled_statement "LAB_0002b274:\n          *puVar23 = uVar16;" statement_identifier : (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;)) (if_statement "if (uVar19 == 0) goto LAB_0002b088;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) }) (else_clause "else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" else (compound_statement "{\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" { (expression_statement "uVar17 = puVar22[1];" (assignment_expression "uVar17 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = uVar17 - 1;" (assignment_expression "puVar8[1] = uVar17 - 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }" { (expression_statement "puVar11 = puVar22 + 2;" (assignment_expression "puVar11 = puVar22 + 2" identifier = (binary_expression "puVar22 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (do_statement "do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);" do (compound_statement "{\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            }" { (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b038;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;)) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" identifier = (cast_expression "(int *)*puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n            iVar3 = 2;\n          }" else (compound_statement "{\n            iVar3 = 2;\n          }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" if (parenthesized_expression "((puVar8 != puVar22) && (iVar3 < iVar5))" ( (binary_expression "(puVar8 != puVar22) && (iVar3 < iVar5)" (parenthesized_expression "(puVar8 != puVar22)" ( (binary_expression "puVar8 != puVar22" identifier != identifier) )) && (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))) )) (compound_statement "{\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" { (expression_statement "puVar11 = puVar22 + iVar3;" (assignment_expression "puVar11 = puVar22 + iVar3" identifier = (binary_expression "puVar22 + iVar3" identifier + identifier)) ;) (expression_statement "puVar22 = puVar22 + -(int)piVar20;" (assignment_expression "puVar22 = puVar22 + -(int)piVar20" identifier = (binary_expression "puVar22 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar10 = puVar8 + iVar3;" (assignment_expression "puVar10 = puVar8 + iVar3" identifier = (binary_expression "puVar8 + iVar3" identifier + identifier)) ;) (do_statement "do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);" do (compound_statement "{\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            }" { (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar11)" ( (binary_expression "puVar22 != puVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b038:\n          *puVar23 = uVar16;" statement_identifier : (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;)) (if_statement "if (uVar19 == 0) goto LAB_0002b040;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b040;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" statement_identifier : (if_statement "if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" if (parenthesized_expression "((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff))" ( (binary_expression "(puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)" (parenthesized_expression "(puVar18 != puVar23)" ( (binary_expression "puVar18 != puVar23" identifier != identifier) )) && (parenthesized_expression "(piVar20 != (int *)0xffffffff)" ( (binary_expression "piVar20 != (int *)0xffffffff" identifier != (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "puVar10 = puVar23;" (assignment_expression "puVar10 = puVar23" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" do (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar18;" (assignment_expression "piVar9 = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) )) ;) }))) }) (else_clause "else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" else (compound_statement "{\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" { (if_statement "if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" if (parenthesized_expression "(puVar8 != puVar22)" ( (binary_expression "puVar8 != puVar22" identifier != identifier) )) (compound_statement "{\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" { (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b274;" goto statement_identifier ;)) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" do (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar22;" (assignment_expression "piVar9 = (int *)*puVar22" identifier = (cast_expression "(int *)*puVar22" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) )) ;) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;) })) (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;) (if_statement "if (uVar19 != 0) goto LAB_0002b27c;" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002b27c;" goto statement_identifier ;)) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (labeled_statement "LAB_0002b040:\n        uVar17 = puVar18[1];" statement_identifier : (expression_statement "uVar17 = puVar18[1];" (assignment_expression "uVar17 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;)) (expression_statement "puVar23[1] = uVar17 - 1;" (assignment_expression "puVar23[1] = uVar17 - 1" (subscript_expression "puVar23[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }" { (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "puVar10 = puVar23 + 2;" (assignment_expression "puVar10 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) (do_statement "do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);" do (compound_statement "{\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b088;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" identifier = (cast_expression "(int *)*puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n          iVar3 = 2;\n        }" else (compound_statement "{\n          iVar3 = 2;\n        }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" if (parenthesized_expression "((puVar18 != puVar23) && (iVar3 < iVar5))" ( (binary_expression "(puVar18 != puVar23) && (iVar3 < iVar5)" (parenthesized_expression "(puVar18 != puVar23)" ( (binary_expression "puVar18 != puVar23" identifier != identifier) )) && (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))) )) (compound_statement "{\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" { (expression_statement "puVar11 = puVar18 + iVar3;" (assignment_expression "puVar11 = puVar18 + iVar3" identifier = (binary_expression "puVar18 + iVar3" identifier + identifier)) ;) (expression_statement "puVar18 = puVar18 + -(int)piVar20;" (assignment_expression "puVar18 = puVar18 + -(int)piVar20" identifier = (binary_expression "puVar18 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar10 = puVar23 + iVar3;" (assignment_expression "puVar10 = puVar23 + iVar3" identifier = (binary_expression "puVar23 + iVar3" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);" do (compound_statement "{\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != puVar11)" ( (binary_expression "puVar18 != puVar11" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_0002b088:\n      uVar17 = ~(uint)piVar20;" statement_identifier : (expression_statement "uVar17 = ~(uint)piVar20;" (assignment_expression "uVar17 = ~(uint)piVar20" identifier = (unary_expression "~(uint)piVar20" ~ (cast_expression "(uint)piVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;)) (expression_statement "puVar11 = puVar8 + uVar17;" (assignment_expression "puVar11 = puVar8 + uVar17" identifier = (binary_expression "puVar8 + uVar17" identifier + identifier)) ;) (expression_statement "puVar10 = puVar23 + uVar17;" (assignment_expression "puVar10 = puVar23 + uVar17" identifier = (binary_expression "puVar23 + uVar17" identifier + identifier)) ;) (labeled_statement "LAB_0002b098:\n      uVar19 = *puVar11;" statement_identifier : (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;)) (expression_statement "puVar11 = puVar11 + -1;" (assignment_expression "puVar11 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (if_statement "if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;" if (parenthesized_expression "((uVar19 & *puVar10) == 0)" ( (binary_expression "(uVar19 & *puVar10) == 0" (parenthesized_expression "(uVar19 & *puVar10)" ( (binary_expression "uVar19 & *puVar10" identifier & (pointer_expression "*puVar10" * identifier)) )) == number_literal) )) (goto_statement "goto code_r0x0002b0ac;" goto statement_identifier ;)) (expression_statement "puVar18 = (uint *)(uVar17 + 1);" (assignment_expression "puVar18 = (uint *)(uVar17 + 1)" identifier = (cast_expression "(uint *)(uVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 + 1)" ( (binary_expression "uVar17 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7a84)" * (cast_expression "(code **)(puVar30 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a84)" ( (binary_expression "puVar30 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" if (parenthesized_expression "((int)puVar18 < (int)*puVar7)" ( (binary_expression "(int)puVar18 < (int)*puVar7" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier))) )) (compound_statement "{\n        piVar9 = (int *)puVar7[2];\n      }" { (expression_statement "piVar9 = (int *)puVar7[2];" (assignment_expression "piVar9 = (int *)puVar7[2]" identifier = (cast_expression "(int *)puVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" else (compound_statement "{\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" { (expression_statement "*(uint **)(puVar31 + -0x34) = puVar8;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar8" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);" (assignment_expression "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2)" identifier = (cast_expression "(int *)(*pcVar29)(puVar7,uVar17 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(puVar7,uVar17 + 2)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar7,uVar17 + 2)" ( identifier , (binary_expression "uVar17 + 2" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = *(uint **)(puVar31 + -0x34);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);" do (compound_statement "{\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      }" { (expression_statement "puVar10 = (uint *)((int)puVar8 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar8 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar8 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar5)" ( (binary_expression "(int)puVar8 + iVar5" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar14 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar14 = (uint *)((int)puVar23 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar23 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + iVar5)" ( (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar11 = (uint *)((int)piVar9 + iVar5);" (assignment_expression "puVar11 = (uint *)((int)piVar9 + iVar5)" identifier = (cast_expression "(uint *)((int)piVar9 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + iVar5)" ( (binary_expression "(int)piVar9 + iVar5" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "*puVar11 = *puVar10 & *puVar14;" (assignment_expression "*puVar11 = *puVar10 & *puVar14" (pointer_expression "*puVar11" * identifier) = (binary_expression "*puVar10 & *puVar14" (pointer_expression "*puVar10" * identifier) & (pointer_expression "*puVar14" * identifier))) ;) }) while (parenthesized_expression "((int)puVar18 * 4 != iVar5)" ( (binary_expression "(int)puVar18 * 4 != iVar5" (binary_expression "(int)puVar18 * 4" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) != identifier) )) ;) (expression_statement "piVar9[(int)puVar18] = 0;" (assignment_expression "piVar9[(int)puVar18] = 0" (subscript_expression "piVar9[(int)puVar18]" identifier [ (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "piVar13 = piVar9;" (assignment_expression "piVar13 = piVar9" identifier = identifier) ;) (do_statement "do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);" do (compound_statement "{\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      }" { (expression_statement "iVar5 = *piVar13;" (assignment_expression "iVar5 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar5 + 1;" (assignment_expression "*piVar13 = iVar5 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 + 1 == 0)" ( (binary_expression "iVar5 + 1 == 0" (binary_expression "iVar5 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);" (assignment_expression "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18])" identifier = (cast_expression "(int *)((int)puVar18 + piVar9[(int)puVar18])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + piVar9[(int)puVar18])" ( (binary_expression "(int)puVar18 + piVar9[(int)puVar18]" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "piVar9[(int)puVar18]" identifier [ (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "piVar21 = (int *)-(int)piVar9;" (assignment_expression "piVar21 = (int *)-(int)piVar9" identifier = (cast_expression "(int *)-(int)piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar9" - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (goto_statement "goto LAB_0002b0c0;" goto statement_identifier ;) })) }) (else_clause "else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" else (compound_statement "{\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" { (expression_statement "piVar15 = piVar9;" (assignment_expression "piVar15 = piVar9" identifier = identifier) ;) (expression_statement "puVar8 = puVar18;" (assignment_expression "puVar8 = puVar18" identifier = identifier) ;) (expression_statement "piVar21 = piVar20;" (assignment_expression "piVar21 = piVar20" identifier = identifier) ;) (expression_statement "puVar23 = puVar22;" (assignment_expression "puVar23 = puVar22" identifier = identifier) ;) (expression_statement "piVar27 = piVar26;" (assignment_expression "piVar27 = piVar26" identifier = identifier) ;) (if_statement "if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" if (parenthesized_expression "(-1 < (int)piVar26)" ( (binary_expression "-1 < (int)piVar26" number_literal < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" { (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (if_statement "if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" if (parenthesized_expression "((int)piVar20 < (int)piVar26)" ( (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }" { (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6cacc)" * (cast_expression "(code **)(puVar28 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6cacc)" ( (binary_expression "puVar28 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar7 < (int)piVar26)" ( (binary_expression "(int)*puVar7 < (int)piVar26" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" { (expression_statement "*(int **)(puVar31 + -0x34) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = piVar26;" (assignment_expression "piVar9 = piVar26" identifier = identifier) ;) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" identifier = (cast_expression "(uint *)(*pcVar29)()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" if (parenthesized_expression "(puVar24 != puVar18)" ( (binary_expression "puVar24 != puVar18" identifier != identifier) )) (compound_statement "{\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" { (expression_statement "puVar10 = puVar18 + (int)piVar20;" (assignment_expression "puVar10 = puVar18 + (int)piVar20" identifier = (binary_expression "puVar18 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar20)" identifier = (binary_expression "(int)piVar26 + (-1 - (int)piVar20)" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar20)" ( (binary_expression "-1 - (int)piVar20" number_literal - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar11 = puVar24 + (int)piVar20;" (assignment_expression "puVar11 = puVar24 + (int)piVar20" identifier = (binary_expression "puVar24 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" { (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" do (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20)" identifier = (binary_expression "puVar11 + (int)piVar26 + (-1 - (int)piVar20)" (binary_expression "puVar11 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar20)" ( (binary_expression "-1 - (int)piVar20" number_literal - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" if (parenthesized_expression "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" { (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);" do (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" { (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar22 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + iVar5)" ( (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" * identifier) | (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)piVar20 << 2 != iVar5)" ( (binary_expression "(int)piVar20 << 2 != iVar5" (binary_expression "(int)piVar20 << 2" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (expression_statement "puVar7[1] = (uint)piVar26;" (assignment_expression "puVar7[1] = (uint)piVar26" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar26" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" else (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" { (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6cacc)" * (cast_expression "(code **)(puVar28 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6cacc)" ( (binary_expression "puVar28 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar7 < (int)piVar20)" ( (binary_expression "(int)*puVar7 < (int)piVar20" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" { (expression_statement "*(int **)(puVar31 + -0x34) = piVar13;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar13" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = piVar20;" (assignment_expression "piVar9 = piVar20" identifier = identifier) ;) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" identifier = (cast_expression "(uint *)(*pcVar29)()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" if (parenthesized_expression "((puVar24 != puVar22) && (piVar20 != piVar26))" ( (binary_expression "(puVar24 != puVar22) && (piVar20 != piVar26)" (parenthesized_expression "(puVar24 != puVar22)" ( (binary_expression "puVar24 != puVar22" identifier != identifier) )) && (parenthesized_expression "(piVar20 != piVar26)" ( (binary_expression "piVar20 != piVar26" identifier != identifier) ))) )) (compound_statement "{\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" { (expression_statement "puVar10 = puVar22 + (int)piVar26;" (assignment_expression "puVar10 = puVar22 + (int)piVar26" identifier = (binary_expression "puVar22 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "iVar5 = (int)piVar20 + (-1 - (int)piVar26)" identifier = (binary_expression "(int)piVar20 + (-1 - (int)piVar26)" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar26)" ( (binary_expression "-1 - (int)piVar26" number_literal - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar11 = puVar24 + (int)piVar26;" (assignment_expression "puVar11 = puVar24 + (int)piVar26" identifier = (binary_expression "puVar24 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" { (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" do (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26)" identifier = (binary_expression "puVar11 + (int)piVar20 + (-1 - (int)piVar26)" (binary_expression "puVar11 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar26)" ( (binary_expression "-1 - (int)piVar26" number_literal - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" if (parenthesized_expression "(piVar26 != (int *)0x0)" ( (binary_expression "piVar26 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" { (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);" do (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" { (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar22 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + iVar5)" ( (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" * identifier) | (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar5 != (int)piVar26 << 2)" ( (binary_expression "iVar5 != (int)piVar26 << 2" identifier != (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )) ;) })) (expression_statement "puVar7[1] = (uint)piVar20;" (assignment_expression "puVar7[1] = (uint)piVar20" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "piVar26 = piVar20;" (assignment_expression "piVar26 = piVar20" identifier = identifier) ;) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) }))) (goto_statement "goto LAB_0002ac9c;" goto statement_identifier ;) })) }))) (expression_statement "piVar9 = (int *)-(int)piVar27;" (assignment_expression "piVar9 = (int *)-(int)piVar27" identifier = (cast_expression "(int *)-(int)piVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar27" - (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar13 = (int *)((int)piVar27 * -4);" (assignment_expression "piVar13 = (int *)((int)piVar27 * -4)" identifier = (cast_expression "(int *)((int)piVar27 * -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 * -4)" ( (binary_expression "(int)piVar27 * -4" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6c800);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6c800)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6c800)" * (cast_expression "(code **)(puVar28 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6c800)" ( (binary_expression "puVar28 + 0x6c800" identifier + number_literal) ))))) ;) (if_statement "if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" if (parenthesized_expression "(piVar13 < (int *)0x7f01)" ( (binary_expression "piVar13 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }" { (expression_statement "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8)" identifier = (cast_expression "(int *)((int)piVar13 + 7U & 0xfffffff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar13 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 + 7U" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + -(int)piVar13 + -0x50;" (assignment_expression "puVar32 = puVar31 + -(int)piVar13 + -0x50" identifier = (binary_expression "puVar31 + -(int)piVar13 + -0x50" (binary_expression "puVar31 + -(int)piVar13" identifier + (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);" (assignment_expression "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40)" identifier = (cast_expression "(uint *)(puVar31 + -(int)piVar13 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -(int)piVar13 + -0x40)" ( (binary_expression "puVar31 + -(int)piVar13 + -0x40" (binary_expression "puVar31 + -(int)piVar13" identifier + (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal) )))) ;) }) (else_clause "else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" else (compound_statement "{\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" { (expression_statement "*(int **)(puVar31 + -0x38) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x38) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x38)" * (cast_expression "(int **)(puVar31 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);" (assignment_expression "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar29)(puVar31 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(puVar31 + -0x30)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = *(int **)(puVar31 + -0x38);" (assignment_expression "piVar9 = *(int **)(puVar31 + -0x38)" identifier = (pointer_expression "*(int **)(puVar31 + -0x38)" * (cast_expression "(int **)(puVar31 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = *(int **)(puVar31 + -0x34);" (assignment_expression "piVar15 = *(int **)(puVar31 + -0x34)" identifier = (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar17 = *puVar8;" (assignment_expression "uVar17 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar18 = uVar17 - 1;" (assignment_expression "*puVar18 = uVar17 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }" { (if_statement "if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" if (parenthesized_expression "(piVar27 != (int *)0xffffffff)" ( (binary_expression "piVar27 != (int *)0xffffffff" identifier != (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" { (expression_statement "uVar17 = puVar8[1];" (assignment_expression "uVar17 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar17 - 1;" (assignment_expression "puVar18[1] = uVar17 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }" { (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "puVar22 = puVar18 + 2;" (assignment_expression "puVar22 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (do_statement "do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);" do (compound_statement "{\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        }" { (expression_statement "piVar13 = (int *)(uint)(iVar5 < (int)piVar9);" (assignment_expression "piVar13 = (int *)(uint)(iVar5 < (int)piVar9)" identifier = (cast_expression "(int *)(uint)(iVar5 < (int)piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (piVar13 == (int *)0x0) goto LAB_0002abf4;" if (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (expression_statement "piVar13 = (int *)*puVar10;" (assignment_expression "piVar13 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = (int)piVar13 - 1;" (assignment_expression "*puVar22 = (int)piVar13 - 1" (pointer_expression "*puVar22" * identifier) = (binary_expression "(int)piVar13 - 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n        iVar5 = 2;\n      }" else (compound_statement "{\n        iVar5 = 2;\n      }" { (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" if (parenthesized_expression "((puVar8 != puVar18) && (iVar5 < (int)piVar9))" ( (binary_expression "(puVar8 != puVar18) && (iVar5 < (int)piVar9)" (parenthesized_expression "(puVar8 != puVar18)" ( (binary_expression "puVar8 != puVar18" identifier != identifier) )) && (parenthesized_expression "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" { (expression_statement "puVar10 = puVar8 + iVar5;" (assignment_expression "puVar10 = puVar8 + iVar5" identifier = (binary_expression "puVar8 + iVar5" identifier + identifier)) ;) (expression_statement "puVar22 = puVar18 + iVar5;" (assignment_expression "puVar22 = puVar18 + iVar5" identifier = (binary_expression "puVar18 + iVar5" identifier + identifier)) ;) (do_statement "do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);" do (compound_statement "{\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        }" { (expression_statement "uVar17 = *puVar10;" (assignment_expression "uVar17 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = uVar17;" (assignment_expression "*puVar22 = uVar17" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 + (int)piVar9 != puVar10)" ( (binary_expression "puVar8 + (int)piVar9 != puVar10" (binary_expression "puVar8 + (int)piVar9" identifier + (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) (labeled_statement "LAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" statement_identifier : (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" identifier = (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[~(uint)piVar27] == 0)" ( (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" identifier [ (unary_expression "~(uint)piVar27" ~ (cast_expression "(uint)piVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;)) (if_statement "if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;" if (parenthesized_expression "((int)piVar9 <= (int)*puVar7)" ( (binary_expression "(int)piVar9 <= (int)*puVar7" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier))) )) (goto_statement "goto LAB_0002ac14;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);" statement_identifier : (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7a84)" * (cast_expression "(code **)(puVar30 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a84)" ( (binary_expression "puVar30 + -0x7a84" identifier + number_literal) ))))) ;)) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar29)(puVar7);" (call_expression "(*pcVar29)(puVar7)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" identifier = (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;" if (parenthesized_expression "((int)piVar21 < (int)piVar26)" ( (binary_expression "(int)piVar21 < (int)piVar26" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);" statement_identifier : (expression_statement "piVar21 = (int *)((int)piVar26 - 1);" (assignment_expression "piVar21 = (int *)((int)piVar26 - 1)" identifier = (cast_expression "(int *)((int)piVar26 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar26 - 1)" ( (binary_expression "(int)piVar26 - 1" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;)) (if_statement "if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" if (parenthesized_expression "(piVar26 != (int *)0x0)" ( (binary_expression "piVar26 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" { (if_statement "if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" if (parenthesized_expression "((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0)" ( (binary_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0" (parenthesized_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21])" ( (binary_expression "~puVar23[(int)piVar21] & puVar18[(int)piVar21]" (unary_expression "~puVar23[(int)piVar21]" ~ (subscript_expression "puVar23[(int)piVar21]" identifier [ (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) ])) & (subscript_expression "puVar18[(int)piVar21]" identifier [ (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) ])) )) == number_literal) )) (compound_statement "{\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" { (expression_statement "puVar8 = puVar23 + (int)piVar26;" (assignment_expression "puVar8 = puVar23 + (int)piVar26" identifier = (binary_expression "puVar23 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar22 = puVar18 + (int)piVar26;" (assignment_expression "puVar22 = puVar18 + (int)piVar26" identifier = (binary_expression "puVar18 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = piVar21;" (assignment_expression "piVar9 = piVar21" identifier = identifier) ;) (do_statement "do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);" do (compound_statement "{\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        }" { (expression_statement "piVar21 = piVar9;" (assignment_expression "piVar21 = piVar9" identifier = identifier) ;) (expression_statement "piVar9 = (int *)((int)piVar21 - 1);" (assignment_expression "piVar9 = (int *)((int)piVar21 - 1)" identifier = (cast_expression "(int *)((int)piVar21 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 - 1)" ( (binary_expression "(int)piVar21 - 1" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (if_statement "if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;" if (parenthesized_expression "(piVar9 == (int *)0xffffffff)" ( (binary_expression "piVar9 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ac84;" goto statement_identifier ;)) (expression_statement "puVar10 = puVar8 + -2;" (assignment_expression "puVar10 = puVar8 + -2" identifier = (binary_expression "puVar8 + -2" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar22 + -2;" (assignment_expression "puVar11 = puVar22 + -2" identifier = (binary_expression "puVar22 + -2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + -1;" (assignment_expression "puVar22 = puVar22 + -1" identifier = (binary_expression "puVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" identifier = identifier) ;) }) while (parenthesized_expression "((~*puVar10 & *puVar11) == 0)" ( (binary_expression "(~*puVar10 & *puVar11) == 0" (parenthesized_expression "(~*puVar10 & *puVar11)" ( (binary_expression "~*puVar10 & *puVar11" (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)) & (pointer_expression "*puVar11" * identifier)) )) == number_literal) )) ;) })) (expression_statement "iVar3 = (int)piVar26 << 2;" (assignment_expression "iVar3 = (int)piVar26 << 2" identifier = (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" identifier = identifier) ;) (labeled_statement "LAB_0002adb0:\n      iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (do_statement "do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);" do (compound_statement "{\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      }" { (expression_statement "puVar22 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar22 = (uint *)((int)puVar23 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar23 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + iVar5)" ( (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = ~*puVar22 & (uint)piVar9;" (assignment_expression "*puVar8 = ~*puVar22 & (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "~*puVar22 & (uint)piVar9" (unary_expression "~*puVar22" ~ (pointer_expression "*puVar22" * identifier)) & (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar3 != iVar5)" ( (binary_expression "iVar3 != iVar5" identifier != identifier) )) ;) (goto_statement "goto LAB_0002addc;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;" statement_identifier : (expression_statement "puVar18 = (uint *)0xffffffff;" (assignment_expression "puVar18 = (uint *)0xffffffff" identifier = (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;) }) (else_clause "else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" else (compound_statement "{\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" { (if_statement "if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;" if (parenthesized_expression "((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))" ( (binary_expression "(puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" (parenthesized_expression "(puVar8 == puVar18)" ( (binary_expression "puVar8 == puVar18" identifier == identifier) )) || (parenthesized_expression "(iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" ( (comma_expression "iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "iVar5 = 1" identifier = number_literal) , (comma_expression "puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "puVar22 = puVar18" identifier = identifier) , (binary_expression "piVar27 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (do_statement "do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);" do (compound_statement "{\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    }" { (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)*puVar8;" (assignment_expression "piVar13 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar22[1] = (uint)piVar13;" (assignment_expression "puVar22[1] = (uint)piVar13" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" identifier = (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[~(uint)piVar27] == 0)" ( (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" identifier [ (unary_expression "~(uint)piVar27" ~ (cast_expression "(uint)piVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;) (if_statement "if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;" if (parenthesized_expression "((int)*puVar7 < (int)piVar9)" ( (binary_expression "(int)*puVar7 < (int)piVar9" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad34;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac14:\n    piVar9 = piVar13;" statement_identifier : (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" identifier = identifier) ;)) (if_statement "if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;" if (parenthesized_expression "((int)piVar26 <= (int)piVar21)" ( (binary_expression "(int)piVar26 <= (int)piVar21" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ac20;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;" statement_identifier : (expression_statement "iVar3 = (int)piVar21 * 4;" (assignment_expression "iVar3 = (int)piVar21 * 4" identifier = (binary_expression "(int)piVar21 * 4" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;)) (expression_statement "puVar8 = puVar18 + (int)piVar21;" (assignment_expression "puVar8 = puVar18 + (int)piVar21" identifier = (binary_expression "puVar18 + (int)piVar21" identifier + (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar21)" identifier = (binary_expression "(int)piVar26 + (-1 - (int)piVar21)" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar21)" ( (binary_expression "-1 - (int)piVar21" number_literal - (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = puVar24 + (int)piVar21;" (assignment_expression "puVar10 = puVar24 + (int)piVar21" identifier = (binary_expression "puVar24 + (int)piVar21" identifier + (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar22 = puVar10;" (assignment_expression "puVar22 = puVar10" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" { (do_statement "do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      }" { (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = (uint)piVar9;" (assignment_expression "*puVar22 = (uint)piVar9" (pointer_expression "*puVar22" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21)" identifier = (binary_expression "puVar10 + (int)piVar26 + (-1 - (int)piVar21)" (binary_expression "puVar10 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar21)" ( (binary_expression "-1 - (int)piVar21" number_literal - (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (piVar21 != (int *)0x0) goto LAB_0002adb0;" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002adb0;" goto statement_identifier ;)) (labeled_statement "LAB_0002addc:\n    uVar17 = *puVar24;" statement_identifier : (expression_statement "uVar17 = *puVar24;" (assignment_expression "uVar17 = *puVar24" identifier = (pointer_expression "*puVar24" * identifier)) ;)) (expression_statement "*puVar24 = uVar17 + 1;" (assignment_expression "*puVar24 = uVar17 + 1" (pointer_expression "*puVar24" * identifier) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" if (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" { (if_statement "if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" if (parenthesized_expression "(piVar26 == (int *)0x1)" ( (binary_expression "piVar26 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" { (labeled_statement "LAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;" statement_identifier : (expression_statement "puVar18 = (uint *)~(uint)piVar26;" (assignment_expression "puVar18 = (uint *)~(uint)piVar26" identifier = (cast_expression "(uint *)~(uint)piVar26" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "~(uint)piVar26" ~ (cast_expression "(uint)piVar26" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;)) (expression_statement "puVar24 = puVar24 + (int)piVar26;" (assignment_expression "puVar24 = puVar24 + (int)piVar26" identifier = (binary_expression "puVar24 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002ac90;" goto statement_identifier ;) })) (expression_statement "uVar17 = puVar24[1];" (assignment_expression "uVar17 = puVar24[1]" identifier = (subscript_expression "puVar24[1]" identifier [ number_literal ])) ;) (expression_statement "puVar24[1] = uVar17 + 1;" (assignment_expression "puVar24[1] = uVar17 + 1" (subscript_expression "puVar24[1]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" if (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" { (expression_statement "piVar13 = (int *)0x2;" (assignment_expression "piVar13 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar18 = puVar24 + 2;" (assignment_expression "puVar18 = puVar24 + 2" identifier = (binary_expression "puVar24 + 2" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);" do (compound_statement "{\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        }" { (expression_statement "bVar1 = piVar26 == piVar13;" (assignment_expression "bVar1 = piVar26 == piVar13" identifier = (binary_expression "piVar26 == piVar13" identifier == identifier)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" identifier = (cast_expression "(int *)((int)piVar13 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1)" ( (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0002ae34;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0002ae34;" goto statement_identifier ;)) (expression_statement "uVar17 = *puVar18;" (assignment_expression "uVar17 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar17 + 1;" (assignment_expression "*puVar18 = uVar17 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (expression_statement "puVar18 = (uint *)-(int)piVar26;" (assignment_expression "puVar18 = (uint *)-(int)piVar26" identifier = (cast_expression "(uint *)-(int)piVar26" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar26" - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }))) (labeled_statement "LAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);" statement_identifier : (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x30)" * (cast_expression "(uint **)(puVar31 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar7[1] = (uint)puVar18;" (assignment_expression "puVar7[1] = (uint)puVar18" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" identifier = identifier) ;) (goto_statement "goto joined_r0x0002b0c4;" goto statement_identifier ;) (labeled_statement "code_r0x0002b0ac:\n  uVar17 = uVar17 - 1;" statement_identifier : (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;)) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (if_statement "if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;" if (parenthesized_expression "(uVar17 == 0xffffffff)" ( (binary_expression "uVar17 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto code_r0x0002b0b8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002b098;" goto statement_identifier ;) (labeled_statement "code_r0x0002b0b8:\n  *puVar24 = 1;" statement_identifier : (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;)) (expression_statement "piVar21 = (int *)0xffffffff;" (assignment_expression "piVar21 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);" statement_identifier : (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x30)" * (cast_expression "(uint **)(puVar31 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar7[1] = (uint)piVar21;" (assignment_expression "puVar7[1] = (uint)piVar21" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar32 = puVar34;" (assignment_expression "puVar32 = puVar34" identifier = identifier) ;) (labeled_statement "joined_r0x0002b0c4:\n  piVar26 = piVar21;" statement_identifier : (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" identifier = identifier) ;)) (expression_statement "puVar33 = puVar32;" (assignment_expression "puVar33 = puVar32" identifier = identifier) ;) (if_statement "if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" if (parenthesized_expression "(puVar8 != (uint *)0x0)" ( (binary_expression "puVar8 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" { (expression_statement "(**(code **)(puVar30 + -0x7a2c))();" (call_expression "(**(code **)(puVar30 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar30 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar30 + -0x7a2c)" * (pointer_expression "*(code **)(puVar30 + -0x7a2c)" * (cast_expression "(code **)(puVar30 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a2c)" ( (binary_expression "puVar30 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;" statement_identifier : (expression_statement "puVar4 = (undefined4 *)*piVar25;" (assignment_expression "puVar4 = (undefined4 *)*piVar25" identifier = (cast_expression "(undefined4 *)*piVar25" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar25" * identifier))) ;)) (if_statement "if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar31 + -0x2c) == puVar4)" ( (binary_expression "*(undefined4 **)(puVar31 + -0x2c) == puVar4" (pointer_expression "*(undefined4 **)(puVar31 + -0x2c)" * (cast_expression "(undefined4 **)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = 0x2b384;" (assignment_expression "uVar35 = 0x2b384" identifier = number_literal) ;) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(uint **)(puVar33 + -0x14) = puVar18;" (assignment_expression "*(uint **)(puVar33 + -0x14) = puVar18" (pointer_expression "*(uint **)(puVar33 + -0x14)" * (cast_expression "(uint **)(puVar33 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x14)" ( (binary_expression "puVar33 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;" (assignment_expression "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0" (pointer_expression "*(code **)(puVar33 + -0x20)" * (cast_expression "(code **)(puVar33 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x20)" ( (binary_expression "puVar33 + -0x20" identifier + number_literal) )))) = (binary_expression "pcVar29 + 0x73cb0" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar33 + -8) = puVar24;" (assignment_expression "*(uint **)(puVar33 + -8) = puVar24" (pointer_expression "*(uint **)(puVar33 + -8)" * (cast_expression "(uint **)(puVar33 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -8)" ( (binary_expression "puVar33 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar33 + -0xc) = puVar22;" (assignment_expression "*(uint **)(puVar33 + -0xc) = puVar22" (pointer_expression "*(uint **)(puVar33 + -0xc)" * (cast_expression "(uint **)(puVar33 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0xc)" ( (binary_expression "puVar33 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar33 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar33 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar33 + -4)" * (cast_expression "(undefined4 *)(puVar33 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar33 + -4)" ( (binary_expression "puVar33 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar33 + -0x10) = piVar26;" (assignment_expression "*(int **)(puVar33 + -0x10) = piVar26" (pointer_expression "*(int **)(puVar33 + -0x10)" * (cast_expression "(int **)(puVar33 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x10)" ( (binary_expression "puVar33 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = piVar9[1];" (assignment_expression "uVar19 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" identifier = identifier) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar19;\n  }" { (expression_statement "uVar17 = -uVar19;" (assignment_expression "uVar17 = -uVar19" identifier = (unary_expression "-uVar19" - identifier)) ;) })) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar16 = uVar17;\n  }" { (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) })) (expression_statement "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);" (assignment_expression "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c)" identifier = (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x6c17c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar29 + 0x6c17c)" * (pointer_expression "*(undefined4 **)(pcVar29 + 0x6c17c)" * (cast_expression "(undefined4 **)(pcVar29 + 0x6c17c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x6c17c)" ( (binary_expression "pcVar29 + 0x6c17c" identifier + number_literal) ))))))) ;) (expression_statement "*puVar8 = uVar16;" (assignment_expression "*puVar8 = uVar16" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);" (assignment_expression "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2)" identifier = (cast_expression "(undefined4 *)(*pcVar29)(uVar16 << 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(uVar16 << 2)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(uVar16 << 2)" ( (binary_expression "uVar16 << 2" identifier << number_literal) ))))) ;) (expression_statement "puVar8[2] = (uint)puVar4;" (assignment_expression "puVar8[2] = (uint)puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (cast_expression "(uint)puVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" { (expression_statement "puVar6 = (undefined4 *)piVar9[2];" (assignment_expression "puVar6 = (undefined4 *)piVar9[2]" identifier = (cast_expression "(undefined4 *)piVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = uVar17 - 1;" (assignment_expression "iVar5 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar12 = puVar4;" (assignment_expression "puVar12 = puVar4" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" { (do_statement "do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      }" { (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uVar35;" (assignment_expression "*puVar12 = uVar35" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar17 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar17 - 1)" identifier = (binary_expression "puVar4 + (uVar17 - 1)" identifier + (parenthesized_expression "(uVar17 - 1)" ( (binary_expression "uVar17 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar4 = uVar35;" (assignment_expression "*puVar4 = uVar35" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "puVar8[1] = uVar19;" (assignment_expression "puVar8[1] = uVar19" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "int __gmpz_invert(mpz_ptr inverse,mpz_srcptr x,mpz_srcptr n)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  uint *puVar3;\n  int iVar4;\n  mp_limb_t mVar5;\n  mp_limb_t *pmVar6;\n  int *piVar7;\n  int *piVar8;\n  int iVar9;\n  undefined1 *puVar10;\n  mp_limb_t *pmVar11;\n  uint uVar12;\n  uint *puVar13;\n  mpz_srcptr p_Var14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  mpz_srcptr p_Var17;\n  uint *puVar18;\n  mp_limb_t *pmVar19;\n  mpz_srcptr p_Var20;\n  mp_limb_t mVar21;\n  mp_limb_t mVar22;\n  uint uVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  mpz_srcptr p_Var26;\n  mpz_srcptr p_Var27;\n  mp_limb_t *pmVar28;\n  mp_limb_t *pmVar29;\n  mp_limb_t *pmVar30;\n  tmp_reentrant_t **unaff_s5;\n  int *piVar31;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  mpz_srcptr p_Var32;\n  mpz_srcptr p_Var33;\n  undefined *puVar34;\n  code *pcVar35;\n  undefined *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  undefined4 uVar40;\n  undefined1 auStack_68 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  mpz_t tmp;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar37 = auStack_68;\n  iVar9 = x->_mp_size;\n  puVar3 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar9 < 0) {\n    iVar9 = -iVar9;\n  }\n  iVar4 = n->_mp_size;\n  if (iVar4 < 0) {\n    iVar4 = -iVar4;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (iVar4 <= iVar9) {\n    iVar4 = iVar9;\n  }\n  iVar4 = iVar4 + 1;\n  uVar23 = iVar4 * 4;\n  gcd[0]._mp_alloc = iVar4;\n  tmp[0]._mp_alloc = iVar4;\n  if (uVar23 < 0x7f01) {\n    uVar23 = uVar23 + 7 & 0xfffffff8;\n    iVar9 = uVar23 * -2;\n    puVar37 = auStack_68 + iVar9;\n    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));\n    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);\n  }\n  else {\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }\n  p_Var17 = (mpz_srcptr)0x0;\n  *(mpz_srcptr *)(puVar37 + 0x10) = n;\n  p_Var14 = tmp;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);\n  if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {\n    if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }\n    iVar9 = 1;\n  }\n  else {\n    iVar9 = 0;\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (puVar3 == *(uint **)puVar2) {\n    return iVar9;\n  }\n  uVar40 = 0x2aaec;\n  puVar34 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar36 = puVar34 + 0x74550;\n  puVar39 = puVar37 + -0x50;\n  puVar38 = puVar37 + -0x50;\n  puVar10 = puVar37 + -0x50;\n  *(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5;\n  *(int *)(puVar37 + -0x24) = iVar4;\n  piVar31 = *(int **)(puVar34 + 0x6ca50);\n  p_Var26 = (mpz_srcptr)p_Var14->_mp_size;\n  *(undefined1 **)(puVar37 + -8) = auStack_68;\n  *(undefined4 *)(puVar37 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar37 + -0x10) = unaff_s6;\n  *(mpz_srcptr *)(puVar37 + -0x1c) = n;\n  *(mpz_ptr *)(puVar37 + -0x20) = inverse;\n  *(mpz_srcptr *)(puVar37 + -0x28) = tmp;\n  *(undefined4 *)(puVar37 + -4) = uVar40;\n  *(undefined **)(puVar37 + -0x18) = puVar2;\n  *(undefined **)(puVar37 + -0x40) = puVar36;\n  *(undefined4 *)(puVar37 + -0x30) = 0;\n  p_Var32 = (mpz_srcptr)p_Var17->_mp_size;\n  pmVar28 = p_Var14->_mp_d;\n  pmVar24 = p_Var17->_mp_d;\n  pmVar30 = (mp_limb_t *)puVar3[2];\n  *(int *)(puVar37 + -0x2c) = *piVar31;\n  if ((int)p_Var26 < 0) {\n    p_Var20 = p_Var17;\n    pmVar19 = pmVar28;\n    p_Var27 = p_Var32;\n    pmVar29 = pmVar24;\n    p_Var33 = p_Var26;\n    if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  p_Var14 = (mpz_srcptr)-(int)p_Var33;\n  p_Var17 = (mpz_srcptr)((int)p_Var33 * -4);\n  pcVar35 = *(code **)(puVar34 + 0x6c800);\n  if (p_Var17 < (mpz_srcptr)0x7f01) {\n    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);\n    puVar10 = puVar37 + -(int)p_Var17 + -0x50;\n    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);\n  }\n  else {\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }\n  mVar5 = *pmVar19;\n  *pmVar24 = mVar5 - 1;\n  if (mVar5 == 0) {\n    if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }\nLAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    (*pcVar35)(puVar3);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    pmVar30 = (mp_limb_t *)puVar3[2];\n    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;\nLAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);\n    if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }\n    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }\n    iVar9 = (int)p_Var26 << 2;\n  }\n  else {\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }\n  iVar4 = 0;\n  do {\n    puVar3 = (uint *)((int)pmVar29 + iVar4);\n    puVar15 = (uint *)((int)pmVar24 + iVar4);\n    puVar13 = (uint *)((int)pmVar30 + iVar4);\n    iVar4 = iVar4 + 4;\n    *puVar13 = ~*puVar3 & *puVar15;\n  } while (iVar9 != iVar4);\nLAB_0002addc:\n  mVar5 = *pmVar30;\n  *pmVar30 = mVar5 + 1;\n  if (mVar5 + 1 == 0) {\n    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }\n    mVar5 = pmVar30[1];\n    pmVar30[1] = mVar5 + 1;\n    if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }\n  }\n  iVar9 = FUN_0002ac90();\n  return iVar9;\ncode_r0x0002b0ac:\n  uVar23 = uVar23 - 1;\n  pmVar6 = pmVar6 + -1;\n  if (uVar23 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *pmVar30 = 1;\n  p_Var32 = (mpz_srcptr)0xffffffff;\nLAB_0002b0c0:\n  puVar13 = *(uint **)(puVar37 + -0x30);\n  puVar3[1] = (uint)p_Var32;\n  puVar10 = puVar39;\njoined_r0x0002b0c4:\n  puVar38 = puVar10;\n  if (puVar13 != (uint *)0x0) {\n    (**(code **)(puVar36 + -0x7a2c))();\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n  }\nLAB_0002ac9c:\n  iVar9 = *piVar31;\n  if (*(int *)(puVar37 + -0x2c) == iVar9) {\n    return iVar9;\n  }\n  pcVar35 = *(code **)(puVar36 + -0x7b70);\n  uVar40 = 0x2b384;\n  (*pcVar35)();\n  *(mp_limb_t **)(puVar38 + -0x14) = pmVar24;\n  *(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0;\n  *(mp_limb_t **)(puVar38 + -8) = pmVar30;\n  *(mp_limb_t **)(puVar38 + -0xc) = pmVar28;\n  *(undefined4 *)(puVar38 + -4) = uVar40;\n  *(mpz_srcptr *)(puVar38 + -0x10) = p_Var32;\n  uVar25 = p_Var14->_mp_size;\n  uVar23 = uVar25;\n  if ((int)uVar25 < 0) {\n    uVar23 = -uVar25;\n  }\n  uVar12 = 1;\n  if (0 < (int)uVar23) {\n    uVar12 = uVar23;\n  }\n  pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c);\n  *puVar13 = uVar12;\n  pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2);\n  puVar13[2] = (uint)pmVar30;\n  if (uVar25 != 0) {\n    pmVar28 = p_Var14->_mp_d;\n    iVar9 = uVar23 - 1;\n    mVar5 = *pmVar28;\n    pmVar24 = pmVar30;\n    if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }\n    *pmVar30 = mVar5;\n  }\n  puVar13[1] = uVar25;\n  return (int)pmVar30;\n}\n\n" (function_definition "int __gmpz_invert(mpz_ptr inverse,mpz_srcptr x,mpz_srcptr n)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  uint *puVar3;\n  int iVar4;\n  mp_limb_t mVar5;\n  mp_limb_t *pmVar6;\n  int *piVar7;\n  int *piVar8;\n  int iVar9;\n  undefined1 *puVar10;\n  mp_limb_t *pmVar11;\n  uint uVar12;\n  uint *puVar13;\n  mpz_srcptr p_Var14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  mpz_srcptr p_Var17;\n  uint *puVar18;\n  mp_limb_t *pmVar19;\n  mpz_srcptr p_Var20;\n  mp_limb_t mVar21;\n  mp_limb_t mVar22;\n  uint uVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  mpz_srcptr p_Var26;\n  mpz_srcptr p_Var27;\n  mp_limb_t *pmVar28;\n  mp_limb_t *pmVar29;\n  mp_limb_t *pmVar30;\n  tmp_reentrant_t **unaff_s5;\n  int *piVar31;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  mpz_srcptr p_Var32;\n  mpz_srcptr p_Var33;\n  undefined *puVar34;\n  code *pcVar35;\n  undefined *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  undefined4 uVar40;\n  undefined1 auStack_68 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  mpz_t tmp;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar37 = auStack_68;\n  iVar9 = x->_mp_size;\n  puVar3 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar9 < 0) {\n    iVar9 = -iVar9;\n  }\n  iVar4 = n->_mp_size;\n  if (iVar4 < 0) {\n    iVar4 = -iVar4;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (iVar4 <= iVar9) {\n    iVar4 = iVar9;\n  }\n  iVar4 = iVar4 + 1;\n  uVar23 = iVar4 * 4;\n  gcd[0]._mp_alloc = iVar4;\n  tmp[0]._mp_alloc = iVar4;\n  if (uVar23 < 0x7f01) {\n    uVar23 = uVar23 + 7 & 0xfffffff8;\n    iVar9 = uVar23 * -2;\n    puVar37 = auStack_68 + iVar9;\n    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));\n    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);\n  }\n  else {\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }\n  p_Var17 = (mpz_srcptr)0x0;\n  *(mpz_srcptr *)(puVar37 + 0x10) = n;\n  p_Var14 = tmp;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);\n  if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {\n    if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }\n    iVar9 = 1;\n  }\n  else {\n    iVar9 = 0;\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (puVar3 == *(uint **)puVar2) {\n    return iVar9;\n  }\n  uVar40 = 0x2aaec;\n  puVar34 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar36 = puVar34 + 0x74550;\n  puVar39 = puVar37 + -0x50;\n  puVar38 = puVar37 + -0x50;\n  puVar10 = puVar37 + -0x50;\n  *(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5;\n  *(int *)(puVar37 + -0x24) = iVar4;\n  piVar31 = *(int **)(puVar34 + 0x6ca50);\n  p_Var26 = (mpz_srcptr)p_Var14->_mp_size;\n  *(undefined1 **)(puVar37 + -8) = auStack_68;\n  *(undefined4 *)(puVar37 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar37 + -0x10) = unaff_s6;\n  *(mpz_srcptr *)(puVar37 + -0x1c) = n;\n  *(mpz_ptr *)(puVar37 + -0x20) = inverse;\n  *(mpz_srcptr *)(puVar37 + -0x28) = tmp;\n  *(undefined4 *)(puVar37 + -4) = uVar40;\n  *(undefined **)(puVar37 + -0x18) = puVar2;\n  *(undefined **)(puVar37 + -0x40) = puVar36;\n  *(undefined4 *)(puVar37 + -0x30) = 0;\n  p_Var32 = (mpz_srcptr)p_Var17->_mp_size;\n  pmVar28 = p_Var14->_mp_d;\n  pmVar24 = p_Var17->_mp_d;\n  pmVar30 = (mp_limb_t *)puVar3[2];\n  *(int *)(puVar37 + -0x2c) = *piVar31;\n  if ((int)p_Var26 < 0) {\n    p_Var20 = p_Var17;\n    pmVar19 = pmVar28;\n    p_Var27 = p_Var32;\n    pmVar29 = pmVar24;\n    p_Var33 = p_Var26;\n    if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  p_Var14 = (mpz_srcptr)-(int)p_Var33;\n  p_Var17 = (mpz_srcptr)((int)p_Var33 * -4);\n  pcVar35 = *(code **)(puVar34 + 0x6c800);\n  if (p_Var17 < (mpz_srcptr)0x7f01) {\n    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);\n    puVar10 = puVar37 + -(int)p_Var17 + -0x50;\n    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);\n  }\n  else {\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }\n  mVar5 = *pmVar19;\n  *pmVar24 = mVar5 - 1;\n  if (mVar5 == 0) {\n    if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }\nLAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    (*pcVar35)(puVar3);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    pmVar30 = (mp_limb_t *)puVar3[2];\n    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;\nLAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);\n    if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }\n    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }\n    iVar9 = (int)p_Var26 << 2;\n  }\n  else {\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }\n  iVar4 = 0;\n  do {\n    puVar3 = (uint *)((int)pmVar29 + iVar4);\n    puVar15 = (uint *)((int)pmVar24 + iVar4);\n    puVar13 = (uint *)((int)pmVar30 + iVar4);\n    iVar4 = iVar4 + 4;\n    *puVar13 = ~*puVar3 & *puVar15;\n  } while (iVar9 != iVar4);\nLAB_0002addc:\n  mVar5 = *pmVar30;\n  *pmVar30 = mVar5 + 1;\n  if (mVar5 + 1 == 0) {\n    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }\n    mVar5 = pmVar30[1];\n    pmVar30[1] = mVar5 + 1;\n    if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }\n  }\n  iVar9 = FUN_0002ac90();\n  return iVar9;\ncode_r0x0002b0ac:\n  uVar23 = uVar23 - 1;\n  pmVar6 = pmVar6 + -1;\n  if (uVar23 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *pmVar30 = 1;\n  p_Var32 = (mpz_srcptr)0xffffffff;\nLAB_0002b0c0:\n  puVar13 = *(uint **)(puVar37 + -0x30);\n  puVar3[1] = (uint)p_Var32;\n  puVar10 = puVar39;\njoined_r0x0002b0c4:\n  puVar38 = puVar10;\n  if (puVar13 != (uint *)0x0) {\n    (**(code **)(puVar36 + -0x7a2c))();\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n  }\nLAB_0002ac9c:\n  iVar9 = *piVar31;\n  if (*(int *)(puVar37 + -0x2c) == iVar9) {\n    return iVar9;\n  }\n  pcVar35 = *(code **)(puVar36 + -0x7b70);\n  uVar40 = 0x2b384;\n  (*pcVar35)();\n  *(mp_limb_t **)(puVar38 + -0x14) = pmVar24;\n  *(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0;\n  *(mp_limb_t **)(puVar38 + -8) = pmVar30;\n  *(mp_limb_t **)(puVar38 + -0xc) = pmVar28;\n  *(undefined4 *)(puVar38 + -4) = uVar40;\n  *(mpz_srcptr *)(puVar38 + -0x10) = p_Var32;\n  uVar25 = p_Var14->_mp_size;\n  uVar23 = uVar25;\n  if ((int)uVar25 < 0) {\n    uVar23 = -uVar25;\n  }\n  uVar12 = 1;\n  if (0 < (int)uVar23) {\n    uVar12 = uVar23;\n  }\n  pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c);\n  *puVar13 = uVar12;\n  pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2);\n  puVar13[2] = (uint)pmVar30;\n  if (uVar25 != 0) {\n    pmVar28 = p_Var14->_mp_d;\n    iVar9 = uVar23 - 1;\n    mVar5 = *pmVar28;\n    pmVar24 = pmVar30;\n    if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }\n    *pmVar30 = mVar5;\n  }\n  puVar13[1] = uVar25;\n  return (int)pmVar30;\n}" primitive_type (function_declarator "__gmpz_invert(mpz_ptr inverse,mpz_srcptr x,mpz_srcptr n)" identifier (parameter_list "(mpz_ptr inverse,mpz_srcptr x,mpz_srcptr n)" ( (parameter_declaration "mpz_ptr inverse" type_identifier identifier) , (parameter_declaration "mpz_srcptr x" type_identifier identifier) , (parameter_declaration "mpz_srcptr n" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  uint *puVar3;\n  int iVar4;\n  mp_limb_t mVar5;\n  mp_limb_t *pmVar6;\n  int *piVar7;\n  int *piVar8;\n  int iVar9;\n  undefined1 *puVar10;\n  mp_limb_t *pmVar11;\n  uint uVar12;\n  uint *puVar13;\n  mpz_srcptr p_Var14;\n  uint *puVar15;\n  undefined4 *puVar16;\n  mpz_srcptr p_Var17;\n  uint *puVar18;\n  mp_limb_t *pmVar19;\n  mpz_srcptr p_Var20;\n  mp_limb_t mVar21;\n  mp_limb_t mVar22;\n  uint uVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  mpz_srcptr p_Var26;\n  mpz_srcptr p_Var27;\n  mp_limb_t *pmVar28;\n  mp_limb_t *pmVar29;\n  mp_limb_t *pmVar30;\n  tmp_reentrant_t **unaff_s5;\n  int *piVar31;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  mpz_srcptr p_Var32;\n  mpz_srcptr p_Var33;\n  undefined *puVar34;\n  code *pcVar35;\n  undefined *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  undefined4 uVar40;\n  undefined1 auStack_68 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mpz_t gcd;\n  mpz_t tmp;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar37 = auStack_68;\n  iVar9 = x->_mp_size;\n  puVar3 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar9 < 0) {\n    iVar9 = -iVar9;\n  }\n  iVar4 = n->_mp_size;\n  if (iVar4 < 0) {\n    iVar4 = -iVar4;\n  }\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  if (iVar4 <= iVar9) {\n    iVar4 = iVar9;\n  }\n  iVar4 = iVar4 + 1;\n  uVar23 = iVar4 * 4;\n  gcd[0]._mp_alloc = iVar4;\n  tmp[0]._mp_alloc = iVar4;\n  if (uVar23 < 0x7f01) {\n    uVar23 = uVar23 + 7 & 0xfffffff8;\n    iVar9 = uVar23 * -2;\n    puVar37 = auStack_68 + iVar9;\n    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));\n    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);\n  }\n  else {\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }\n  p_Var17 = (mpz_srcptr)0x0;\n  *(mpz_srcptr *)(puVar37 + 0x10) = n;\n  p_Var14 = tmp;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);\n  if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {\n    if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }\n    iVar9 = 1;\n  }\n  else {\n    iVar9 = 0;\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (puVar3 == *(uint **)puVar2) {\n    return iVar9;\n  }\n  uVar40 = 0x2aaec;\n  puVar34 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar36 = puVar34 + 0x74550;\n  puVar39 = puVar37 + -0x50;\n  puVar38 = puVar37 + -0x50;\n  puVar10 = puVar37 + -0x50;\n  *(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5;\n  *(int *)(puVar37 + -0x24) = iVar4;\n  piVar31 = *(int **)(puVar34 + 0x6ca50);\n  p_Var26 = (mpz_srcptr)p_Var14->_mp_size;\n  *(undefined1 **)(puVar37 + -8) = auStack_68;\n  *(undefined4 *)(puVar37 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar37 + -0x10) = unaff_s6;\n  *(mpz_srcptr *)(puVar37 + -0x1c) = n;\n  *(mpz_ptr *)(puVar37 + -0x20) = inverse;\n  *(mpz_srcptr *)(puVar37 + -0x28) = tmp;\n  *(undefined4 *)(puVar37 + -4) = uVar40;\n  *(undefined **)(puVar37 + -0x18) = puVar2;\n  *(undefined **)(puVar37 + -0x40) = puVar36;\n  *(undefined4 *)(puVar37 + -0x30) = 0;\n  p_Var32 = (mpz_srcptr)p_Var17->_mp_size;\n  pmVar28 = p_Var14->_mp_d;\n  pmVar24 = p_Var17->_mp_d;\n  pmVar30 = (mp_limb_t *)puVar3[2];\n  *(int *)(puVar37 + -0x2c) = *piVar31;\n  if ((int)p_Var26 < 0) {\n    p_Var20 = p_Var17;\n    pmVar19 = pmVar28;\n    p_Var27 = p_Var32;\n    pmVar29 = pmVar24;\n    p_Var33 = p_Var26;\n    if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  p_Var14 = (mpz_srcptr)-(int)p_Var33;\n  p_Var17 = (mpz_srcptr)((int)p_Var33 * -4);\n  pcVar35 = *(code **)(puVar34 + 0x6c800);\n  if (p_Var17 < (mpz_srcptr)0x7f01) {\n    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);\n    puVar10 = puVar37 + -(int)p_Var17 + -0x50;\n    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);\n  }\n  else {\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }\n  mVar5 = *pmVar19;\n  *pmVar24 = mVar5 - 1;\n  if (mVar5 == 0) {\n    if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }\nLAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    (*pcVar35)(puVar3);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    pmVar30 = (mp_limb_t *)puVar3[2];\n    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;\nLAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);\n    if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }\n    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }\n    iVar9 = (int)p_Var26 << 2;\n  }\n  else {\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }\n  iVar4 = 0;\n  do {\n    puVar3 = (uint *)((int)pmVar29 + iVar4);\n    puVar15 = (uint *)((int)pmVar24 + iVar4);\n    puVar13 = (uint *)((int)pmVar30 + iVar4);\n    iVar4 = iVar4 + 4;\n    *puVar13 = ~*puVar3 & *puVar15;\n  } while (iVar9 != iVar4);\nLAB_0002addc:\n  mVar5 = *pmVar30;\n  *pmVar30 = mVar5 + 1;\n  if (mVar5 + 1 == 0) {\n    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }\n    mVar5 = pmVar30[1];\n    pmVar30[1] = mVar5 + 1;\n    if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }\n  }\n  iVar9 = FUN_0002ac90();\n  return iVar9;\ncode_r0x0002b0ac:\n  uVar23 = uVar23 - 1;\n  pmVar6 = pmVar6 + -1;\n  if (uVar23 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *pmVar30 = 1;\n  p_Var32 = (mpz_srcptr)0xffffffff;\nLAB_0002b0c0:\n  puVar13 = *(uint **)(puVar37 + -0x30);\n  puVar3[1] = (uint)p_Var32;\n  puVar10 = puVar39;\njoined_r0x0002b0c4:\n  puVar38 = puVar10;\n  if (puVar13 != (uint *)0x0) {\n    (**(code **)(puVar36 + -0x7a2c))();\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n  }\nLAB_0002ac9c:\n  iVar9 = *piVar31;\n  if (*(int *)(puVar37 + -0x2c) == iVar9) {\n    return iVar9;\n  }\n  pcVar35 = *(code **)(puVar36 + -0x7b70);\n  uVar40 = 0x2b384;\n  (*pcVar35)();\n  *(mp_limb_t **)(puVar38 + -0x14) = pmVar24;\n  *(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0;\n  *(mp_limb_t **)(puVar38 + -8) = pmVar30;\n  *(mp_limb_t **)(puVar38 + -0xc) = pmVar28;\n  *(undefined4 *)(puVar38 + -4) = uVar40;\n  *(mpz_srcptr *)(puVar38 + -0x10) = p_Var32;\n  uVar25 = p_Var14->_mp_size;\n  uVar23 = uVar25;\n  if ((int)uVar25 < 0) {\n    uVar23 = -uVar25;\n  }\n  uVar12 = 1;\n  if (0 < (int)uVar23) {\n    uVar12 = uVar23;\n  }\n  pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c);\n  *puVar13 = uVar12;\n  pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2);\n  puVar13[2] = (uint)pmVar30;\n  if (uVar25 != 0) {\n    pmVar28 = p_Var14->_mp_d;\n    iVar9 = uVar23 - 1;\n    mVar5 = *pmVar28;\n    pmVar24 = pmVar30;\n    if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }\n    *pmVar30 = mVar5;\n  }\n  puVar13[1] = uVar25;\n  return (int)pmVar30;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "mp_limb_t mVar5;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar6;" type_identifier (pointer_declarator "*pmVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "mp_limb_t *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "mpz_srcptr p_Var14;" type_identifier identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "mpz_srcptr p_Var17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "mp_limb_t *pmVar19;" type_identifier (pointer_declarator "*pmVar19" * identifier) ;) (declaration "mpz_srcptr p_Var20;" type_identifier identifier ;) (declaration "mp_limb_t mVar21;" type_identifier identifier ;) (declaration "mp_limb_t mVar22;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar24;" type_identifier (pointer_declarator "*pmVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "mpz_srcptr p_Var26;" type_identifier identifier ;) (declaration "mpz_srcptr p_Var27;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar28;" type_identifier (pointer_declarator "*pmVar28" * identifier) ;) (declaration "mp_limb_t *pmVar29;" type_identifier (pointer_declarator "*pmVar29" * identifier) ;) (declaration "mp_limb_t *pmVar30;" type_identifier (pointer_declarator "*pmVar30" * identifier) ;) (declaration "tmp_reentrant_t **unaff_s5;" type_identifier (pointer_declarator "**unaff_s5" * (pointer_declarator "*unaff_s5" * identifier)) ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "mpz_srcptr p_Var32;" type_identifier identifier ;) (declaration "mpz_srcptr p_Var33;" type_identifier identifier ;) (declaration "undefined *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "code *pcVar35;" type_identifier (pointer_declarator "*pcVar35" * identifier) ;) (declaration "undefined *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined1 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "undefined4 uVar40;" type_identifier identifier ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mpz_t gcd;" type_identifier identifier ;) (declaration "mpz_t tmp;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar37 = auStack_68;" (assignment_expression "puVar37 = auStack_68" identifier = identifier) ;) (expression_statement "iVar9 = x->_mp_size;" (assignment_expression "iVar9 = x->_mp_size" identifier = (field_expression "x->_mp_size" identifier -> field_identifier)) ;) (expression_statement "puVar3 = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar9 < 0) {\n    iVar9 = -iVar9;\n  }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar9 = -iVar9;\n  }" { (expression_statement "iVar9 = -iVar9;" (assignment_expression "iVar9 = -iVar9" identifier = (unary_expression "-iVar9" - identifier)) ;) })) (expression_statement "iVar4 = n->_mp_size;" (assignment_expression "iVar4 = n->_mp_size" identifier = (field_expression "n->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar4 < 0) {\n    iVar4 = -iVar4;\n  }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar4 = -iVar4;\n  }" { (expression_statement "iVar4 = -iVar4;" (assignment_expression "iVar4 = -iVar4" identifier = (unary_expression "-iVar4" - identifier)) ;) })) (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 (iVar4 <= iVar9) {\n    iVar4 = iVar9;\n  }" if (parenthesized_expression "(iVar4 <= iVar9)" ( (binary_expression "iVar4 <= iVar9" identifier <= identifier) )) (compound_statement "{\n    iVar4 = iVar9;\n  }" { (expression_statement "iVar4 = iVar9;" (assignment_expression "iVar4 = iVar9" identifier = identifier) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar23 = iVar4 * 4;" (assignment_expression "uVar23 = iVar4 * 4" identifier = (binary_expression "iVar4 * 4" identifier * number_literal)) ;) (expression_statement "gcd[0]._mp_alloc = iVar4;" (assignment_expression "gcd[0]._mp_alloc = iVar4" (field_expression "gcd[0]._mp_alloc" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "tmp[0]._mp_alloc = iVar4;" (assignment_expression "tmp[0]._mp_alloc = iVar4" (field_expression "tmp[0]._mp_alloc" (subscript_expression "tmp[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (uVar23 < 0x7f01) {\n    uVar23 = uVar23 + 7 & 0xfffffff8;\n    iVar9 = uVar23 * -2;\n    puVar37 = auStack_68 + iVar9;\n    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));\n    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);\n  }\n  else {\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }" if (parenthesized_expression "(uVar23 < 0x7f01)" ( (binary_expression "uVar23 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    uVar23 = uVar23 + 7 & 0xfffffff8;\n    iVar9 = uVar23 * -2;\n    puVar37 = auStack_68 + iVar9;\n    gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));\n    tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);\n  }" { (expression_statement "uVar23 = uVar23 + 7 & 0xfffffff8;" (assignment_expression "uVar23 = uVar23 + 7 & 0xfffffff8" identifier = (binary_expression "uVar23 + 7 & 0xfffffff8" (binary_expression "uVar23 + 7" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar9 = uVar23 * -2;" (assignment_expression "iVar9 = uVar23 * -2" identifier = (binary_expression "uVar23 * -2" identifier * number_literal)) ;) (expression_statement "puVar37 = auStack_68 + iVar9;" (assignment_expression "puVar37 = auStack_68 + iVar9" identifier = (binary_expression "auStack_68 + iVar9" identifier + identifier)) ;) (expression_statement "gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23));" (assignment_expression "gcd[0]._mp_d = (mp_limb_t *)((int)tmp + (-0x20 - uVar23))" (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)((int)tmp + (-0x20 - uVar23))" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)tmp + (-0x20 - uVar23))" ( (binary_expression "(int)tmp + (-0x20 - uVar23)" (cast_expression "(int)tmp" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-0x20 - uVar23)" ( (binary_expression "-0x20 - uVar23" number_literal - identifier) ))) )))) ;) (expression_statement "tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20);" (assignment_expression "tmp[0]._mp_d = (mp_limb_t *)((int)tmp + iVar9 + -0x20)" (field_expression "tmp[0]._mp_d" (subscript_expression "tmp[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)((int)tmp + iVar9 + -0x20)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)tmp + iVar9 + -0x20)" ( (binary_expression "(int)tmp + iVar9 + -0x20" (binary_expression "(int)tmp + iVar9" (cast_expression "(int)tmp" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }" else (compound_statement "{\n    unaff_s5 = &__tmp_marker;\n    gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n    tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);\n  }" { (expression_statement "unaff_s5 = &__tmp_marker;" (assignment_expression "unaff_s5 = &__tmp_marker" identifier = (pointer_expression "&__tmp_marker" & identifier)) ;) (expression_statement "gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);" (assignment_expression "gcd[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" (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 "(unaff_s5,uVar23)" ( identifier , identifier ))))) ;) (expression_statement "tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23);" (assignment_expression "tmp[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" (field_expression "tmp[0]._mp_d" (subscript_expression "tmp[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar23)" (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 "(unaff_s5,uVar23)" ( identifier , identifier ))))) ;) }))) (expression_statement "p_Var17 = (mpz_srcptr)0x0;" (assignment_expression "p_Var17 = (mpz_srcptr)0x0" identifier = (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) ;) (expression_statement "*(mpz_srcptr *)(puVar37 + 0x10) = n;" (assignment_expression "*(mpz_srcptr *)(puVar37 + 0x10) = n" (pointer_expression "*(mpz_srcptr *)(puVar37 + 0x10)" * (cast_expression "(mpz_srcptr *)(puVar37 + 0x10)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + 0x10)" ( (binary_expression "puVar37 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var14 = tmp;" (assignment_expression "p_Var14 = tmp" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);" (call_expression "(*(code *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x)" (parenthesized_expression "(*(code *)PTR___gmpz_gcdext_000975a4)" ( (pointer_expression "*(code *)PTR___gmpz_gcdext_000975a4" * (cast_expression "(code *)PTR___gmpz_gcdext_000975a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(gcd,tmp,0,x)" ( identifier , identifier , number_literal , identifier ))) ;) (if_statement "if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {\n    if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }\n    iVar9 = 1;\n  }\n  else {\n    iVar9 = 0;\n  }" if (parenthesized_expression "((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1))" ( (binary_expression "(gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)" (parenthesized_expression "(gcd[0]._mp_size == 1)" ( (binary_expression "gcd[0]._mp_size == 1" (field_expression "gcd[0]._mp_size" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier) == number_literal) )) && (parenthesized_expression "(*gcd[0]._mp_d == 1)" ( (binary_expression "*gcd[0]._mp_d == 1" (pointer_expression "*gcd[0]._mp_d" * (field_expression "gcd[0]._mp_d" (subscript_expression "gcd[0]" identifier [ number_literal ]) . field_identifier)) == number_literal) ))) )) (compound_statement "{\n    if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }\n    iVar9 = 1;\n  }" { (if_statement "if (tmp[0]._mp_size < 0) {\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }\n    else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }" if (parenthesized_expression "(tmp[0]._mp_size < 0)" ( (binary_expression "tmp[0]._mp_size < 0" (field_expression "tmp[0]._mp_size" (subscript_expression "tmp[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n      pcVar35 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }\n      p_Var14 = tmp;\n      p_Var17 = n;\n      (*pcVar35)(inverse);\n    }" { (expression_statement "pcVar35 = (code *)PTR___gmpz_sub_0009752c;" (assignment_expression "pcVar35 = (code *)PTR___gmpz_sub_0009752c" identifier = (cast_expression "(code *)PTR___gmpz_sub_0009752c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (-1 < n->_mp_size) {\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }" if (parenthesized_expression "(-1 < n->_mp_size)" ( (binary_expression "-1 < n->_mp_size" number_literal < (field_expression "n->_mp_size" identifier -> field_identifier)) )) (compound_statement "{\n        pcVar35 = (code *)PTR___gmpz_add_000971f0;\n      }" { (expression_statement "pcVar35 = (code *)PTR___gmpz_add_000971f0;" (assignment_expression "pcVar35 = (code *)PTR___gmpz_add_000971f0" identifier = (cast_expression "(code *)PTR___gmpz_add_000971f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "p_Var14 = tmp;" (assignment_expression "p_Var14 = tmp" identifier = identifier) ;) (expression_statement "p_Var17 = n;" (assignment_expression "p_Var17 = n" identifier = identifier) ;) (expression_statement "(*pcVar35)(inverse);" (call_expression "(*pcVar35)(inverse)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(inverse)" ( identifier ))) ;) }) (else_clause "else {\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }" else (compound_statement "{\n      p_Var14 = tmp;\n      (*(code *)PTR___gmpz_set_000974b8)(inverse);\n    }" { (expression_statement "p_Var14 = tmp;" (assignment_expression "p_Var14 = tmp" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(inverse);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(inverse)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(inverse)" ( identifier ))) ;) }))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar9 = 0;\n  }" else (compound_statement "{\n    iVar9 = 0;\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) }))) (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 (puVar3 == *(uint **)puVar2) {\n    return iVar9;\n  }" if (parenthesized_expression "(puVar3 == *(uint **)puVar2)" ( (binary_expression "puVar3 == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar9;\n  }" { (return_statement "return iVar9;" return identifier ;) })) (expression_statement "uVar40 = 0x2aaec;" (assignment_expression "uVar40 = 0x2aaec" identifier = number_literal) ;) (expression_statement "puVar34 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar34 = 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 "puVar36 = puVar34 + 0x74550;" (assignment_expression "puVar36 = puVar34 + 0x74550" identifier = (binary_expression "puVar34 + 0x74550" identifier + number_literal)) ;) (expression_statement "puVar39 = puVar37 + -0x50;" (assignment_expression "puVar39 = puVar37 + -0x50" identifier = (binary_expression "puVar37 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar38 = puVar37 + -0x50;" (assignment_expression "puVar38 = puVar37 + -0x50" identifier = (binary_expression "puVar37 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar37 + -0x50;" (assignment_expression "puVar10 = puVar37 + -0x50" identifier = (binary_expression "puVar37 + -0x50" identifier + number_literal)) ;) (expression_statement "*(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5;" (assignment_expression "*(tmp_reentrant_t ***)(puVar37 + -0x14) = unaff_s5" (pointer_expression "*(tmp_reentrant_t ***)(puVar37 + -0x14)" * (cast_expression "(tmp_reentrant_t ***)(puVar37 + -0x14)" ( (type_descriptor "tmp_reentrant_t ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar37 + -0x14)" ( (binary_expression "puVar37 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar37 + -0x24) = iVar4;" (assignment_expression "*(int *)(puVar37 + -0x24) = iVar4" (pointer_expression "*(int *)(puVar37 + -0x24)" * (cast_expression "(int *)(puVar37 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x24)" ( (binary_expression "puVar37 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar31 = *(int **)(puVar34 + 0x6ca50);" (assignment_expression "piVar31 = *(int **)(puVar34 + 0x6ca50)" identifier = (pointer_expression "*(int **)(puVar34 + 0x6ca50)" * (cast_expression "(int **)(puVar34 + 0x6ca50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + 0x6ca50)" ( (binary_expression "puVar34 + 0x6ca50" identifier + number_literal) ))))) ;) (expression_statement "p_Var26 = (mpz_srcptr)p_Var14->_mp_size;" (assignment_expression "p_Var26 = (mpz_srcptr)p_Var14->_mp_size" identifier = (cast_expression "(mpz_srcptr)p_Var14->_mp_size" ( (type_descriptor "mpz_srcptr" type_identifier) ) (field_expression "p_Var14->_mp_size" identifier -> field_identifier))) ;) (expression_statement "*(undefined1 **)(puVar37 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar37 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar37 + -8)" * (cast_expression "(undefined1 **)(puVar37 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -8)" ( (binary_expression "puVar37 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xc) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar37 + -0xc) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar37 + -0xc)" * (cast_expression "(undefined4 *)(puVar37 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xc)" ( (binary_expression "puVar37 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x10) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar37 + -0x10) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar37 + -0x10)" * (cast_expression "(undefined4 *)(puVar37 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x10)" ( (binary_expression "puVar37 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar37 + -0x1c) = n;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x1c) = n" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x1c)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x1c)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x1c)" ( (binary_expression "puVar37 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_ptr *)(puVar37 + -0x20) = inverse;" (assignment_expression "*(mpz_ptr *)(puVar37 + -0x20) = inverse" (pointer_expression "*(mpz_ptr *)(puVar37 + -0x20)" * (cast_expression "(mpz_ptr *)(puVar37 + -0x20)" ( (type_descriptor "mpz_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x20)" ( (binary_expression "puVar37 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar37 + -0x28) = tmp;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x28) = tmp" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x28)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x28)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -4) = uVar40;" (assignment_expression "*(undefined4 *)(puVar37 + -4) = uVar40" (pointer_expression "*(undefined4 *)(puVar37 + -4)" * (cast_expression "(undefined4 *)(puVar37 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -4)" ( (binary_expression "puVar37 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar37 + -0x18) = puVar2;" (assignment_expression "*(undefined **)(puVar37 + -0x18) = puVar2" (pointer_expression "*(undefined **)(puVar37 + -0x18)" * (cast_expression "(undefined **)(puVar37 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x18)" ( (binary_expression "puVar37 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar37 + -0x40) = puVar36;" (assignment_expression "*(undefined **)(puVar37 + -0x40) = puVar36" (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0x30)" * (cast_expression "(undefined4 *)(puVar37 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var32 = (mpz_srcptr)p_Var17->_mp_size;" (assignment_expression "p_Var32 = (mpz_srcptr)p_Var17->_mp_size" identifier = (cast_expression "(mpz_srcptr)p_Var17->_mp_size" ( (type_descriptor "mpz_srcptr" type_identifier) ) (field_expression "p_Var17->_mp_size" identifier -> field_identifier))) ;) (expression_statement "pmVar28 = p_Var14->_mp_d;" (assignment_expression "pmVar28 = p_Var14->_mp_d" identifier = (field_expression "p_Var14->_mp_d" identifier -> field_identifier)) ;) (expression_statement "pmVar24 = p_Var17->_mp_d;" (assignment_expression "pmVar24 = p_Var17->_mp_d" identifier = (field_expression "p_Var17->_mp_d" identifier -> field_identifier)) ;) (expression_statement "pmVar30 = (mp_limb_t *)puVar3[2];" (assignment_expression "pmVar30 = (mp_limb_t *)puVar3[2]" identifier = (cast_expression "(mp_limb_t *)puVar3[2]" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar37 + -0x2c) = *piVar31;" (assignment_expression "*(int *)(puVar37 + -0x2c) = *piVar31" (pointer_expression "*(int *)(puVar37 + -0x2c)" * (cast_expression "(int *)(puVar37 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x2c)" ( (binary_expression "puVar37 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar31" * identifier)) ;) (if_statement "if ((int)p_Var26 < 0) {\n    p_Var20 = p_Var17;\n    pmVar19 = pmVar28;\n    p_Var27 = p_Var32;\n    pmVar29 = pmVar24;\n    p_Var33 = p_Var26;\n    if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" if (parenthesized_expression "((int)p_Var26 < 0)" ( (binary_expression "(int)p_Var26 < 0" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    p_Var20 = p_Var17;\n    pmVar19 = pmVar28;\n    p_Var27 = p_Var32;\n    pmVar29 = pmVar24;\n    p_Var33 = p_Var26;\n    if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }\n  }" { (expression_statement "p_Var20 = p_Var17;" (assignment_expression "p_Var20 = p_Var17" identifier = identifier) ;) (expression_statement "pmVar19 = pmVar28;" (assignment_expression "pmVar19 = pmVar28" identifier = identifier) ;) (expression_statement "p_Var27 = p_Var32;" (assignment_expression "p_Var27 = p_Var32" identifier = identifier) ;) (expression_statement "pmVar29 = pmVar24;" (assignment_expression "pmVar29 = pmVar24" identifier = identifier) ;) (expression_statement "p_Var33 = p_Var26;" (assignment_expression "p_Var33 = p_Var26" identifier = identifier) ;) (if_statement "if ((int)p_Var32 < 0) {\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }" if (parenthesized_expression "((int)p_Var32 < 0)" ( (binary_expression "(int)p_Var32 < 0" (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }\n      iVar9 = -(int)p_Var26;\n      p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);\n      if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }\n      mVar5 = *pmVar28;\n      mVar21 = *pmVar24;\n      pmVar29 = pmVar19 + -(int)p_Var26;\n      mVar22 = mVar21 - 1;\n      *pmVar19 = mVar5 - 1;\n      if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }\nLAB_0002b088:\n      uVar23 = ~(uint)p_Var26;\n      puVar13 = pmVar19 + uVar23;\n      pmVar6 = pmVar29 + uVar23;\nLAB_0002b098:\n      uVar25 = *puVar13;\n      puVar13 = puVar13 + -1;\n      if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;\n      pmVar24 = (mp_limb_t *)(uVar23 + 1);\n      pcVar35 = *(code **)(puVar36 + -0x7a84);\n      if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }\n      iVar9 = 0;\n      do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);\n      piVar7[(int)pmVar24] = 0;\n      piVar8 = piVar7;\n      do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);\n      p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);\n      p_Var32 = (mpz_srcptr)-(int)p_Var14;\n      goto LAB_0002b0c0;\n    }" { (if_statement "if ((int)p_Var26 < (int)p_Var32) {\n        p_Var26 = p_Var32;\n      }" if (parenthesized_expression "((int)p_Var26 < (int)p_Var32)" ( (binary_expression "(int)p_Var26 < (int)p_Var32" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        p_Var26 = p_Var32;\n      }" { (expression_statement "p_Var26 = p_Var32;" (assignment_expression "p_Var26 = p_Var32" identifier = identifier) ;) })) (expression_statement "iVar9 = -(int)p_Var26;" (assignment_expression "iVar9 = -(int)p_Var26" identifier = (unary_expression "-(int)p_Var26" - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var14 = (mpz_srcptr)((int)p_Var26 * -8);" (assignment_expression "p_Var14 = (mpz_srcptr)((int)p_Var26 * -8)" identifier = (call_expression "(mpz_srcptr)((int)p_Var26 * -8)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)p_Var26 * -8)" ( (binary_expression "(int)p_Var26 * -8" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (p_Var14 < (mpz_srcptr)0x7f01) {\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }\n      else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }" if (parenthesized_expression "(p_Var14 < (mpz_srcptr)0x7f01)" ( (binary_expression "p_Var14 < (mpz_srcptr)0x7f01" identifier < (cast_expression "(mpz_srcptr)0x7f01" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;\n        pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);\n      }" { (expression_statement "puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50;" (assignment_expression "puVar39 = puVar37 + (int)p_Var26 * 8 + -0x50" identifier = (binary_expression "puVar37 + (int)p_Var26 * 8 + -0x50" (binary_expression "puVar37 + (int)p_Var26 * 8" identifier + (binary_expression "(int)p_Var26 * 8" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40);" (assignment_expression "pmVar19 = (mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40)" identifier = (cast_expression "(mp_limb_t *)(puVar37 + (int)p_Var26 * 8 + -0x40)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + (int)p_Var26 * 8 + -0x40)" ( (binary_expression "puVar37 + (int)p_Var26 * 8 + -0x40" (binary_expression "puVar37 + (int)p_Var26 * 8" identifier + (binary_expression "(int)p_Var26 * 8" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) ;) }) (else_clause "else {\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }" else (compound_statement "{\n        pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n      }" { (expression_statement "pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30);" (assignment_expression "pmVar19 = (mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30)" identifier = (cast_expression "(mp_limb_t *)(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar34 + 0x6c800))(puVar37 + -0x30)" (parenthesized_expression "(**(code **)(puVar34 + 0x6c800))" ( (pointer_expression "**(code **)(puVar34 + 0x6c800)" * (pointer_expression "*(code **)(puVar34 + 0x6c800)" * (cast_expression "(code **)(puVar34 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + 0x6c800)" ( (binary_expression "puVar34 + 0x6c800" identifier + number_literal) ))))) )) (argument_list "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "mVar5 = *pmVar28;" (assignment_expression "mVar5 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "mVar21 = *pmVar24;" (assignment_expression "mVar21 = *pmVar24" identifier = (pointer_expression "*pmVar24" * identifier)) ;) (expression_statement "pmVar29 = pmVar19 + -(int)p_Var26;" (assignment_expression "pmVar29 = pmVar19 + -(int)p_Var26" identifier = (binary_expression "pmVar19 + -(int)p_Var26" identifier + (unary_expression "-(int)p_Var26" - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "mVar22 = mVar21 - 1;" (assignment_expression "mVar22 = mVar21 - 1" identifier = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "*pmVar19 = mVar5 - 1;" (assignment_expression "*pmVar19 = mVar5 - 1" (pointer_expression "*pmVar19" * identifier) = (binary_expression "mVar5 - 1" identifier - number_literal)) ;) (if_statement "if (mVar5 == 0) {\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }\n      else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }" if (parenthesized_expression "(mVar5 == 0)" ( (binary_expression "mVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }\n      }" { (if_statement "if (p_Var26 == (mpz_srcptr)0xffffffff) {\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }\n        else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }" if (parenthesized_expression "(p_Var26 == (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var26 == (mpz_srcptr)0xffffffff" identifier == (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0002b274:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b088;\n        }" { (labeled_statement "LAB_0002b274:\n          *pmVar29 = mVar22;" statement_identifier : (expression_statement "*pmVar29 = mVar22;" (assignment_expression "*pmVar29 = mVar22" (pointer_expression "*pmVar29" * identifier) = identifier) ;)) (if_statement "if (mVar21 == 0) goto LAB_0002b088;" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) }) (else_clause "else {\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }" else (compound_statement "{\n          mVar5 = pmVar28[1];\n          pmVar19[1] = mVar5 - 1;\n          if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }\n          if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }\nLAB_0002b038:\n          *pmVar29 = mVar22;\n          if (mVar21 == 0) goto LAB_0002b040;\n        }" { (expression_statement "mVar5 = pmVar28[1];" (assignment_expression "mVar5 = pmVar28[1]" identifier = (subscript_expression "pmVar28[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar19[1] = mVar5 - 1;" (assignment_expression "pmVar19[1] = mVar5 - 1" (subscript_expression "pmVar19[1]" identifier [ number_literal ]) = (binary_expression "mVar5 - 1" identifier - number_literal)) ;) (if_statement "if (mVar5 == 0) {\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }\n          else {\n            iVar4 = 2;\n          }" if (parenthesized_expression "(mVar5 == 0)" ( (binary_expression "mVar5 == 0" identifier == number_literal) )) (compound_statement "{\n            pmVar11 = pmVar28 + 2;\n            iVar4 = 2;\n            pmVar6 = pmVar19 + 2;\n            do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);\n          }" { (expression_statement "pmVar11 = pmVar28 + 2;" (assignment_expression "pmVar11 = pmVar28 + 2" identifier = (binary_expression "pmVar28 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "pmVar6 = pmVar19 + 2;" (assignment_expression "pmVar6 = pmVar19 + 2" identifier = (binary_expression "pmVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            } while (p_Var14 == (mpz_srcptr)0x0);" do (compound_statement "{\n              p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n              if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;\n              p_Var14 = (mpz_srcptr)*pmVar11;\n              iVar4 = iVar4 + 1;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n              pmVar6 = pmVar6 + 1;\n            }" { (expression_statement "p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);" (assignment_expression "p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9)" identifier = (call_expression "(mpz_srcptr)(uint)(iVar4 < iVar9)" (call_expression "(mpz_srcptr)(uint)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )))) ;) (if_statement "if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b038;" if (parenthesized_expression "(p_Var14 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var14 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;)) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar11;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar11" identifier = (binary_expression "(mpz_srcptr)*pmVar11" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);" (assignment_expression "*pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3)" (pointer_expression "*pmVar6" * identifier) = (call_expression "(mp_limb_t)((int)&p_Var14[-1]._mp_d + 3)" (parenthesized_expression "(mp_limb_t)" ( identifier )) (argument_list "((int)&p_Var14[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var14[-1]._mp_d + 3" (cast_expression "(int)&p_Var14[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var14[-1]._mp_d" & (field_expression "p_Var14[-1]._mp_d" (subscript_expression "p_Var14[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(p_Var14 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var14 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) ;) }) (else_clause "else {\n            iVar4 = 2;\n          }" else (compound_statement "{\n            iVar4 = 2;\n          }" { (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) }))) (if_statement "if ((pmVar19 != pmVar28) && (iVar4 < iVar9)) {\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }" if (parenthesized_expression "((pmVar19 != pmVar28) && (iVar4 < iVar9))" ( (binary_expression "(pmVar19 != pmVar28) && (iVar4 < iVar9)" (parenthesized_expression "(pmVar19 != pmVar28)" ( (binary_expression "pmVar19 != pmVar28" identifier != identifier) )) && (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) ))) )) (compound_statement "{\n            pmVar11 = pmVar28 + iVar4;\n            pmVar28 = pmVar28 + -(int)p_Var26;\n            pmVar6 = pmVar19 + iVar4;\n            do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);\n          }" { (expression_statement "pmVar11 = pmVar28 + iVar4;" (assignment_expression "pmVar11 = pmVar28 + iVar4" identifier = (binary_expression "pmVar28 + iVar4" identifier + identifier)) ;) (expression_statement "pmVar28 = pmVar28 + -(int)p_Var26;" (assignment_expression "pmVar28 = pmVar28 + -(int)p_Var26" identifier = (binary_expression "pmVar28 + -(int)p_Var26" identifier + (unary_expression "-(int)p_Var26" - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pmVar6 = pmVar19 + iVar4;" (assignment_expression "pmVar6 = pmVar19 + iVar4" identifier = (binary_expression "pmVar19 + iVar4" identifier + identifier)) ;) (do_statement "do {\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            } while (pmVar28 != pmVar11);" do (compound_statement "{\n              mVar5 = *pmVar11;\n              pmVar11 = pmVar11 + 1;\n              *pmVar6 = mVar5;\n              pmVar6 = pmVar6 + 1;\n            }" { (expression_statement "mVar5 = *pmVar11;" (assignment_expression "mVar5 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = mVar5;" (assignment_expression "*pmVar6 = mVar5" (pointer_expression "*pmVar6" * identifier) = identifier) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar28 != pmVar11)" ( (binary_expression "pmVar28 != pmVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b038:\n          *pmVar29 = mVar22;" statement_identifier : (expression_statement "*pmVar29 = mVar22;" (assignment_expression "*pmVar29 = mVar22" (pointer_expression "*pmVar29" * identifier) = identifier) ;)) (if_statement "if (mVar21 == 0) goto LAB_0002b040;" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b040;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002b27c:\n        if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }" statement_identifier : (if_statement "if ((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)) {\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }" if (parenthesized_expression "((pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff))" ( (binary_expression "(pmVar24 != pmVar29) && (p_Var26 != (mpz_srcptr)0xffffffff)" (parenthesized_expression "(pmVar24 != pmVar29)" ( (binary_expression "pmVar24 != pmVar29" identifier != identifier) )) && (parenthesized_expression "(p_Var26 != (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var26 != (mpz_srcptr)0xffffffff" identifier != (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) ))) )) (compound_statement "{\n          pmVar24 = pmVar24 + 1;\n          iVar4 = 1;\n          pmVar6 = pmVar29;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n        }" { (expression_statement "pmVar24 = pmVar24 + 1;" (assignment_expression "pmVar24 = pmVar24 + 1" identifier = (binary_expression "pmVar24 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "pmVar6 = pmVar29;" (assignment_expression "pmVar6 = pmVar29" identifier = identifier) ;) (do_statement "do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);" do (compound_statement "{\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar24;\n            iVar4 = iVar4 + 1;\n            pmVar24 = pmVar24 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          }" { (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar24;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar24" identifier = (binary_expression "(mpz_srcptr)*pmVar24" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pmVar24 = pmVar24 + 1;" (assignment_expression "pmVar24 = pmVar24 + 1" identifier = (binary_expression "pmVar24 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = (mp_limb_t)p_Var14;" (assignment_expression "*pmVar6 = (mp_limb_t)p_Var14" (pointer_expression "*pmVar6" * identifier) = (cast_expression "(mp_limb_t)p_Var14" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )) ;) }))) }) (else_clause "else {\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }" else (compound_statement "{\n        if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }\n        *pmVar29 = mVar22;\n        if (mVar21 != 0) goto LAB_0002b27c;\n        if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        mVar5 = pmVar24[1];\n        pmVar29[1] = mVar5 - 1;\n        if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }\n      }" { (if_statement "if (pmVar19 != pmVar28) {\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }" if (parenthesized_expression "(pmVar19 != pmVar28)" ( (binary_expression "pmVar19 != pmVar28" identifier != identifier) )) (compound_statement "{\n          pmVar28 = pmVar28 + 1;\n          if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;\n          iVar4 = 1;\n          pmVar6 = pmVar19;\n          do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);\n          goto LAB_0002b038;\n        }" { (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) (if_statement "if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b274;" if (parenthesized_expression "(p_Var26 == (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var26 == (mpz_srcptr)0xffffffff" identifier == (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002b274;" goto statement_identifier ;)) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "pmVar6 = pmVar19;" (assignment_expression "pmVar6 = pmVar19" identifier = identifier) ;) (do_statement "do {\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          } while (iVar4 < iVar9);" do (compound_statement "{\n            pmVar6 = pmVar6 + 1;\n            p_Var14 = (mpz_srcptr)*pmVar28;\n            iVar4 = iVar4 + 1;\n            pmVar28 = pmVar28 + 1;\n            *pmVar6 = (mp_limb_t)p_Var14;\n          }" { (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar28;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar28" identifier = (binary_expression "(mpz_srcptr)*pmVar28" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = (mp_limb_t)p_Var14;" (assignment_expression "*pmVar6 = (mp_limb_t)p_Var14" (pointer_expression "*pmVar6" * identifier) = (cast_expression "(mp_limb_t)p_Var14" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )) ;) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;) })) (expression_statement "*pmVar29 = mVar22;" (assignment_expression "*pmVar29 = mVar22" (pointer_expression "*pmVar29" * identifier) = identifier) ;) (if_statement "if (mVar21 != 0) goto LAB_0002b27c;" if (parenthesized_expression "(mVar21 != 0)" ( (binary_expression "mVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002b27c;" goto statement_identifier ;)) (if_statement "if (p_Var26 == (mpz_srcptr)0xffffffff) goto LAB_0002b088;" if (parenthesized_expression "(p_Var26 == (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var26 == (mpz_srcptr)0xffffffff" identifier == (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (labeled_statement "LAB_0002b040:\n        mVar5 = pmVar24[1];" statement_identifier : (expression_statement "mVar5 = pmVar24[1];" (assignment_expression "mVar5 = pmVar24[1]" identifier = (subscript_expression "pmVar24[1]" identifier [ number_literal ])) ;)) (expression_statement "pmVar29[1] = mVar5 - 1;" (assignment_expression "pmVar29[1] = mVar5 - 1" (subscript_expression "pmVar29[1]" identifier [ number_literal ]) = (binary_expression "mVar5 - 1" identifier - number_literal)) ;) (if_statement "if (mVar5 == 0) {\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(mVar5 == 0)" ( (binary_expression "mVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          pmVar11 = pmVar24 + 2;\n          iVar4 = 2;\n          pmVar6 = pmVar29 + 2;\n          do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);\n        }" { (expression_statement "pmVar11 = pmVar24 + 2;" (assignment_expression "pmVar11 = pmVar24 + 2" identifier = (binary_expression "pmVar24 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "pmVar6 = pmVar29 + 2;" (assignment_expression "pmVar6 = pmVar29 + 2" identifier = (binary_expression "pmVar29 + 2" identifier + number_literal)) ;) (do_statement "do {\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          } while (p_Var14 == (mpz_srcptr)0x0);" do (compound_statement "{\n            p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);\n            if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;\n            p_Var14 = (mpz_srcptr)*pmVar11;\n            iVar4 = iVar4 + 1;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);\n            pmVar6 = pmVar6 + 1;\n          }" { (expression_statement "p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9);" (assignment_expression "p_Var14 = (mpz_srcptr)(uint)(iVar4 < iVar9)" identifier = (call_expression "(mpz_srcptr)(uint)(iVar4 < iVar9)" (call_expression "(mpz_srcptr)(uint)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) )))) ;) (if_statement "if (p_Var14 == (mpz_srcptr)0x0) goto LAB_0002b088;" if (parenthesized_expression "(p_Var14 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var14 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar11;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar11" identifier = (binary_expression "(mpz_srcptr)*pmVar11" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3);" (assignment_expression "*pmVar6 = (mp_limb_t)((int)&p_Var14[-1]._mp_d + 3)" (pointer_expression "*pmVar6" * identifier) = (call_expression "(mp_limb_t)((int)&p_Var14[-1]._mp_d + 3)" (parenthesized_expression "(mp_limb_t)" ( identifier )) (argument_list "((int)&p_Var14[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var14[-1]._mp_d + 3" (cast_expression "(int)&p_Var14[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var14[-1]._mp_d" & (field_expression "p_Var14[-1]._mp_d" (subscript_expression "p_Var14[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(p_Var14 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var14 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) ;) }) (else_clause "else {\n          iVar4 = 2;\n        }" else (compound_statement "{\n          iVar4 = 2;\n        }" { (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) }))) (if_statement "if ((pmVar24 != pmVar29) && (iVar4 < iVar9)) {\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }" if (parenthesized_expression "((pmVar24 != pmVar29) && (iVar4 < iVar9))" ( (binary_expression "(pmVar24 != pmVar29) && (iVar4 < iVar9)" (parenthesized_expression "(pmVar24 != pmVar29)" ( (binary_expression "pmVar24 != pmVar29" identifier != identifier) )) && (parenthesized_expression "(iVar4 < iVar9)" ( (binary_expression "iVar4 < iVar9" identifier < identifier) ))) )) (compound_statement "{\n          pmVar11 = pmVar24 + iVar4;\n          pmVar24 = pmVar24 + -(int)p_Var26;\n          pmVar6 = pmVar29 + iVar4;\n          do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);\n        }" { (expression_statement "pmVar11 = pmVar24 + iVar4;" (assignment_expression "pmVar11 = pmVar24 + iVar4" identifier = (binary_expression "pmVar24 + iVar4" identifier + identifier)) ;) (expression_statement "pmVar24 = pmVar24 + -(int)p_Var26;" (assignment_expression "pmVar24 = pmVar24 + -(int)p_Var26" identifier = (binary_expression "pmVar24 + -(int)p_Var26" identifier + (unary_expression "-(int)p_Var26" - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "pmVar6 = pmVar29 + iVar4;" (assignment_expression "pmVar6 = pmVar29 + iVar4" identifier = (binary_expression "pmVar29 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          } while (pmVar24 != pmVar11);" do (compound_statement "{\n            mVar5 = *pmVar11;\n            pmVar11 = pmVar11 + 1;\n            *pmVar6 = mVar5;\n            pmVar6 = pmVar6 + 1;\n          }" { (expression_statement "mVar5 = *pmVar11;" (assignment_expression "mVar5 = *pmVar11" identifier = (pointer_expression "*pmVar11" * identifier)) ;) (expression_statement "pmVar11 = pmVar11 + 1;" (assignment_expression "pmVar11 = pmVar11 + 1" identifier = (binary_expression "pmVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar6 = mVar5;" (assignment_expression "*pmVar6 = mVar5" (pointer_expression "*pmVar6" * identifier) = identifier) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar24 != pmVar11)" ( (binary_expression "pmVar24 != pmVar11" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_0002b088:\n      uVar23 = ~(uint)p_Var26;" statement_identifier : (expression_statement "uVar23 = ~(uint)p_Var26;" (assignment_expression "uVar23 = ~(uint)p_Var26" identifier = (unary_expression "~(uint)p_Var26" ~ (cast_expression "(uint)p_Var26" ( (type_descriptor "uint" type_identifier) ) identifier))) ;)) (expression_statement "puVar13 = pmVar19 + uVar23;" (assignment_expression "puVar13 = pmVar19 + uVar23" identifier = (binary_expression "pmVar19 + uVar23" identifier + identifier)) ;) (expression_statement "pmVar6 = pmVar29 + uVar23;" (assignment_expression "pmVar6 = pmVar29 + uVar23" identifier = (binary_expression "pmVar29 + uVar23" identifier + identifier)) ;) (labeled_statement "LAB_0002b098:\n      uVar25 = *puVar13;" statement_identifier : (expression_statement "uVar25 = *puVar13;" (assignment_expression "uVar25 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;)) (expression_statement "puVar13 = puVar13 + -1;" (assignment_expression "puVar13 = puVar13 + -1" identifier = (binary_expression "puVar13 + -1" identifier + number_literal)) ;) (if_statement "if ((uVar25 & *pmVar6) == 0) goto code_r0x0002b0ac;" if (parenthesized_expression "((uVar25 & *pmVar6) == 0)" ( (binary_expression "(uVar25 & *pmVar6) == 0" (parenthesized_expression "(uVar25 & *pmVar6)" ( (binary_expression "uVar25 & *pmVar6" identifier & (pointer_expression "*pmVar6" * identifier)) )) == number_literal) )) (goto_statement "goto code_r0x0002b0ac;" goto statement_identifier ;)) (expression_statement "pmVar24 = (mp_limb_t *)(uVar23 + 1);" (assignment_expression "pmVar24 = (mp_limb_t *)(uVar23 + 1)" identifier = (cast_expression "(mp_limb_t *)(uVar23 + 1)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar23 + 1)" ( (binary_expression "uVar23 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar35 = *(code **)(puVar36 + -0x7a84);" (assignment_expression "pcVar35 = *(code **)(puVar36 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar36 + -0x7a84)" * (cast_expression "(code **)(puVar36 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x7a84)" ( (binary_expression "puVar36 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if ((int)pmVar24 < (int)*puVar3) {\n        piVar7 = (int *)puVar3[2];\n      }\n      else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }" if (parenthesized_expression "((int)pmVar24 < (int)*puVar3)" ( (binary_expression "(int)pmVar24 < (int)*puVar3" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*puVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar3" * identifier))) )) (compound_statement "{\n        piVar7 = (int *)puVar3[2];\n      }" { (expression_statement "piVar7 = (int *)puVar3[2];" (assignment_expression "piVar7 = (int *)puVar3[2]" identifier = (cast_expression "(int *)puVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }" else (compound_statement "{\n        *(mp_limb_t **)(puVar37 + -0x34) = pmVar19;\n        piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);\n        puVar36 = *(undefined **)(puVar37 + -0x40);\n        pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);\n      }" { (expression_statement "*(mp_limb_t **)(puVar37 + -0x34) = pmVar19;" (assignment_expression "*(mp_limb_t **)(puVar37 + -0x34) = pmVar19" (pointer_expression "*(mp_limb_t **)(puVar37 + -0x34)" * (cast_expression "(mp_limb_t **)(puVar37 + -0x34)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2);" (assignment_expression "piVar7 = (int *)(*pcVar35)(puVar3,uVar23 + 2)" identifier = (cast_expression "(int *)(*pcVar35)(puVar3,uVar23 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(puVar3,uVar23 + 2)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(puVar3,uVar23 + 2)" ( identifier , (binary_expression "uVar23 + 2" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pmVar19 = *(mp_limb_t **)(puVar37 + -0x34);" (assignment_expression "pmVar19 = *(mp_limb_t **)(puVar37 + -0x34)" identifier = (pointer_expression "*(mp_limb_t **)(puVar37 + -0x34)" * (cast_expression "(mp_limb_t **)(puVar37 + -0x34)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      } while ((int)pmVar24 * 4 != iVar9);" do (compound_statement "{\n        puVar13 = (uint *)((int)pmVar19 + iVar9);\n        puVar18 = (uint *)((int)pmVar29 + iVar9);\n        puVar15 = (uint *)((int)piVar7 + iVar9);\n        iVar9 = iVar9 + 4;\n        *puVar15 = *puVar13 & *puVar18;\n      }" { (expression_statement "puVar13 = (uint *)((int)pmVar19 + iVar9);" (assignment_expression "puVar13 = (uint *)((int)pmVar19 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar19 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar19 + iVar9)" ( (binary_expression "(int)pmVar19 + iVar9" (cast_expression "(int)pmVar19" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar18 = (uint *)((int)pmVar29 + iVar9);" (assignment_expression "puVar18 = (uint *)((int)pmVar29 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar29 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar29 + iVar9)" ( (binary_expression "(int)pmVar29 + iVar9" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar15 = (uint *)((int)piVar7 + iVar9);" (assignment_expression "puVar15 = (uint *)((int)piVar7 + iVar9)" identifier = (cast_expression "(uint *)((int)piVar7 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar7 + iVar9)" ( (binary_expression "(int)piVar7 + iVar9" (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) (expression_statement "*puVar15 = *puVar13 & *puVar18;" (assignment_expression "*puVar15 = *puVar13 & *puVar18" (pointer_expression "*puVar15" * identifier) = (binary_expression "*puVar13 & *puVar18" (pointer_expression "*puVar13" * identifier) & (pointer_expression "*puVar18" * identifier))) ;) }) while (parenthesized_expression "((int)pmVar24 * 4 != iVar9)" ( (binary_expression "(int)pmVar24 * 4 != iVar9" (binary_expression "(int)pmVar24 * 4" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) != identifier) )) ;) (expression_statement "piVar7[(int)pmVar24] = 0;" (assignment_expression "piVar7[(int)pmVar24] = 0" (subscript_expression "piVar7[(int)pmVar24]" identifier [ (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "piVar8 = piVar7;" (assignment_expression "piVar8 = piVar7" identifier = identifier) ;) (do_statement "do {\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      } while (iVar9 + 1 == 0);" do (compound_statement "{\n        iVar9 = *piVar8;\n        *piVar8 = iVar9 + 1;\n        piVar8 = piVar8 + 1;\n      }" { (expression_statement "iVar9 = *piVar8;" (assignment_expression "iVar9 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "*piVar8 = iVar9 + 1;" (assignment_expression "*piVar8 = iVar9 + 1" (pointer_expression "*piVar8" * identifier) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar8 + 1;" (assignment_expression "piVar8 = piVar8 + 1" identifier = (binary_expression "piVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 + 1 == 0)" ( (binary_expression "iVar9 + 1 == 0" (binary_expression "iVar9 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24]);" (assignment_expression "p_Var14 = (mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24])" identifier = (call_expression "(mpz_srcptr)((int)pmVar24 + piVar7[(int)pmVar24])" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)pmVar24 + piVar7[(int)pmVar24])" ( (binary_expression "(int)pmVar24 + piVar7[(int)pmVar24]" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "piVar7[(int)pmVar24]" identifier [ (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "p_Var32 = (mpz_srcptr)-(int)p_Var14;" (assignment_expression "p_Var32 = (mpz_srcptr)-(int)p_Var14" identifier = (binary_expression "(mpz_srcptr)-(int)p_Var14" (parenthesized_expression "(mpz_srcptr)" ( identifier )) - (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_0002b0c0;" goto statement_identifier ;) })) }) (else_clause "else {\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" else (compound_statement "{\n    p_Var20 = p_Var14;\n    pmVar19 = pmVar24;\n    p_Var27 = p_Var26;\n    pmVar29 = pmVar28;\n    p_Var33 = p_Var32;\n    if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" { (expression_statement "p_Var20 = p_Var14;" (assignment_expression "p_Var20 = p_Var14" identifier = identifier) ;) (expression_statement "pmVar19 = pmVar24;" (assignment_expression "pmVar19 = pmVar24" identifier = identifier) ;) (expression_statement "p_Var27 = p_Var26;" (assignment_expression "p_Var27 = p_Var26" identifier = identifier) ;) (expression_statement "pmVar29 = pmVar28;" (assignment_expression "pmVar29 = pmVar28" identifier = identifier) ;) (expression_statement "p_Var33 = p_Var32;" (assignment_expression "p_Var33 = p_Var32" identifier = identifier) ;) (if_statement "if (-1 < (int)p_Var32) {\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" if (parenthesized_expression "(-1 < (int)p_Var32)" ( (binary_expression "-1 < (int)p_Var32" number_literal < (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar13 = puVar3;\n      if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" { (expression_statement "puVar13 = puVar3;" (assignment_expression "puVar13 = puVar3" identifier = identifier) ;) (if_statement "if ((int)p_Var26 < (int)p_Var32) {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }\n      else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }" if (parenthesized_expression "((int)p_Var26 < (int)p_Var32)" ( (binary_expression "(int)p_Var26 < (int)p_Var32" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }\n        puVar3[1] = (uint)p_Var32;\n      }" { (expression_statement "pcVar35 = *(code **)(puVar34 + 0x6cacc);" (assignment_expression "pcVar35 = *(code **)(puVar34 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar34 + 0x6cacc)" * (cast_expression "(code **)(puVar34 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + 0x6cacc)" ( (binary_expression "puVar34 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar3 < (int)p_Var32) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar3 < (int)p_Var32)" ( (binary_expression "(int)*puVar3 < (int)p_Var32" (cast_expression "(int)*puVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar3" * identifier)) < (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;\n          p_Var14 = p_Var32;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }" { (expression_statement "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var14;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var14" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var14 = p_Var32;" (assignment_expression "p_Var14 = p_Var32" identifier = identifier) ;) (expression_statement "pmVar30 = (mp_limb_t *)(*pcVar35)();" (assignment_expression "pmVar30 = (mp_limb_t *)(*pcVar35)()" identifier = (cast_expression "(mp_limb_t *)(*pcVar35)()" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);" (assignment_expression "pmVar28 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" identifier = (pointer_expression "*(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" * (cast_expression "(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar37 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar37 + -0x34) + 8" (pointer_expression "*(int *)(puVar37 + -0x34)" * (cast_expression "(int *)(puVar37 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (pmVar30 != pmVar24) {\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }" if (parenthesized_expression "(pmVar30 != pmVar24)" ( (binary_expression "pmVar30 != pmVar24" identifier != identifier) )) (compound_statement "{\n          pmVar19 = pmVar24 + (int)p_Var26;\n          puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));\n          puVar18 = pmVar30 + (int)p_Var26;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }\n          *puVar18 = (uint)p_Var14;\n        }" { (expression_statement "pmVar19 = pmVar24 + (int)p_Var26;" (assignment_expression "pmVar19 = pmVar24 + (int)p_Var26" identifier = (binary_expression "pmVar24 + (int)p_Var26" identifier + (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26));" (assignment_expression "puVar10 = (undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26))" identifier = (cast_expression "(undefined1 *)((int)p_Var32 + (-1 - (int)p_Var26))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var32 + (-1 - (int)p_Var26))" ( (binary_expression "(int)p_Var32 + (-1 - (int)p_Var26)" (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var26)" ( (binary_expression "-1 - (int)p_Var26" number_literal - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar18 = pmVar30 + (int)p_Var26;" (assignment_expression "puVar18 = pmVar30 + (int)p_Var26" identifier = (binary_expression "pmVar30 + (int)p_Var26" identifier + (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar19;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar19" identifier = (binary_expression "(mpz_srcptr)*pmVar19" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar15 = puVar18;" (assignment_expression "puVar15 = puVar18" identifier = identifier) ;) (if_statement "if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }" if (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));\n          }" { (do_statement "do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);" do (compound_statement "{\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            }" { (expression_statement "pmVar19 = pmVar19 + 1;" (assignment_expression "pmVar19 = pmVar19 + 1" identifier = (binary_expression "pmVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar15 + 1;" (assignment_expression "puVar13 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = (uint)p_Var14;" (assignment_expression "*puVar15 = (uint)p_Var14" (pointer_expression "*puVar15" * identifier) = (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar19;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar19" identifier = (binary_expression "(mpz_srcptr)*pmVar19" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26));" (assignment_expression "puVar18 = puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26))" identifier = (binary_expression "puVar18 + (int)((int)p_Var32 + (-1 - (int)p_Var26))" identifier + (cast_expression "(int)((int)p_Var32 + (-1 - (int)p_Var26))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)p_Var32 + (-1 - (int)p_Var26))" ( (binary_expression "(int)p_Var32 + (-1 - (int)p_Var26)" (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var26)" ( (binary_expression "-1 - (int)p_Var26" number_literal - (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar18 = (uint)p_Var14;" (assignment_expression "*puVar18 = (uint)p_Var14" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (p_Var26 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }" if (parenthesized_expression "(p_Var26 != (mpz_srcptr)0x0)" ( (binary_expression "p_Var26 != (mpz_srcptr)0x0" identifier != (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);\n        }" { (do_statement "do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while ((int)p_Var26 << 2 != iVar9);" do (compound_statement "{\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          }" { (expression_statement "puVar15 = (uint *)((int)pmVar28 + iVar9);" (assignment_expression "puVar15 = (uint *)((int)pmVar28 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar28 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar28 + iVar9)" ( (binary_expression "(int)pmVar28 + iVar9" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar16 = (undefined4 *)((int)pmVar24 + iVar9);" (assignment_expression "puVar16 = (undefined4 *)((int)pmVar24 + iVar9)" identifier = (cast_expression "(undefined4 *)((int)pmVar24 + iVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 + iVar9)" ( (binary_expression "(int)pmVar24 + iVar9" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar13 = (uint *)((int)pmVar30 + iVar9);" (assignment_expression "puVar13 = (uint *)((int)pmVar30 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar30 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar30 + iVar9)" ( (binary_expression "(int)pmVar30 + iVar9" (cast_expression "(int)pmVar30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*puVar16;" (assignment_expression "p_Var14 = (mpz_srcptr)*puVar16" identifier = (binary_expression "(mpz_srcptr)*puVar16" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "*puVar13 = *puVar15 | (uint)p_Var14;" (assignment_expression "*puVar13 = *puVar15 | (uint)p_Var14" (pointer_expression "*puVar13" * identifier) = (binary_expression "*puVar15 | (uint)p_Var14" (pointer_expression "*puVar15" * identifier) | (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)p_Var26 << 2 != iVar9)" ( (binary_expression "(int)p_Var26 << 2 != iVar9" (binary_expression "(int)p_Var26 << 2" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (expression_statement "puVar3[1] = (uint)p_Var32;" (assignment_expression "puVar3[1] = (uint)p_Var32" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(uint)p_Var32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }" else (compound_statement "{\n        pcVar35 = *(code **)(puVar34 + 0x6cacc);\n        if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }\n        if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }\n        iVar9 = 0;\n        if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }\n        puVar3[1] = (uint)p_Var26;\n        p_Var32 = p_Var26;\n        puVar38 = puVar37 + -0x50;\n      }" { (expression_statement "pcVar35 = *(code **)(puVar34 + 0x6cacc);" (assignment_expression "pcVar35 = *(code **)(puVar34 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar34 + 0x6cacc)" * (cast_expression "(code **)(puVar34 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + 0x6cacc)" ( (binary_expression "puVar34 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar3 < (int)p_Var26) {\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar3 < (int)p_Var26)" ( (binary_expression "(int)*puVar3 < (int)p_Var26" (cast_expression "(int)*puVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar3" * identifier)) < (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;\n          p_Var14 = p_Var26;\n          pmVar30 = (mp_limb_t *)(*pcVar35)();\n          puVar36 = *(undefined **)(puVar37 + -0x40);\n          pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n        }" { (expression_statement "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var17;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var17" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var14 = p_Var26;" (assignment_expression "p_Var14 = p_Var26" identifier = identifier) ;) (expression_statement "pmVar30 = (mp_limb_t *)(*pcVar35)();" (assignment_expression "pmVar30 = (mp_limb_t *)(*pcVar35)()" identifier = (cast_expression "(mp_limb_t *)(*pcVar35)()" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);" (assignment_expression "pmVar24 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" identifier = (pointer_expression "*(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" * (cast_expression "(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar37 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar37 + -0x34) + 8" (pointer_expression "*(int *)(puVar37 + -0x34)" * (cast_expression "(int *)(puVar37 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((pmVar30 != pmVar28) && (p_Var26 != p_Var32)) {\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }" if (parenthesized_expression "((pmVar30 != pmVar28) && (p_Var26 != p_Var32))" ( (binary_expression "(pmVar30 != pmVar28) && (p_Var26 != p_Var32)" (parenthesized_expression "(pmVar30 != pmVar28)" ( (binary_expression "pmVar30 != pmVar28" identifier != identifier) )) && (parenthesized_expression "(p_Var26 != p_Var32)" ( (binary_expression "p_Var26 != p_Var32" identifier != identifier) ))) )) (compound_statement "{\n          pmVar19 = pmVar28 + (int)p_Var32;\n          puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));\n          puVar18 = pmVar30 + (int)p_Var32;\n          p_Var14 = (mpz_srcptr)*pmVar19;\n          puVar15 = puVar18;\n          if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }\n          *puVar18 = (uint)p_Var14;\n        }" { (expression_statement "pmVar19 = pmVar28 + (int)p_Var32;" (assignment_expression "pmVar19 = pmVar28 + (int)p_Var32" identifier = (binary_expression "pmVar28 + (int)p_Var32" identifier + (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32));" (assignment_expression "puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32))" identifier = (cast_expression "(undefined1 *)((int)p_Var26 + (-1 - (int)p_Var32))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var26 + (-1 - (int)p_Var32))" ( (binary_expression "(int)p_Var26 + (-1 - (int)p_Var32)" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var32)" ( (binary_expression "-1 - (int)p_Var32" number_literal - (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar18 = pmVar30 + (int)p_Var32;" (assignment_expression "puVar18 = pmVar30 + (int)p_Var32" identifier = (binary_expression "pmVar30 + (int)p_Var32" identifier + (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar19;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar19" identifier = (binary_expression "(mpz_srcptr)*pmVar19" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar15 = puVar18;" (assignment_expression "puVar15 = puVar18" identifier = identifier) ;) (if_statement "if (puVar10 != (undefined1 *)0x0) {\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }" if (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);\n            puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));\n          }" { (do_statement "do {\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            } while (puVar10 != (undefined1 *)0x0);" do (compound_statement "{\n              pmVar19 = pmVar19 + 1;\n              puVar13 = puVar15 + 1;\n              *puVar15 = (uint)p_Var14;\n              puVar10 = puVar10 + -1;\n              p_Var14 = (mpz_srcptr)*pmVar19;\n              puVar15 = puVar13;\n            }" { (expression_statement "pmVar19 = pmVar19 + 1;" (assignment_expression "pmVar19 = pmVar19 + 1" identifier = (binary_expression "pmVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar15 + 1;" (assignment_expression "puVar13 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = (uint)p_Var14;" (assignment_expression "*puVar15 = (uint)p_Var14" (pointer_expression "*puVar15" * identifier) = (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*pmVar19;" (assignment_expression "p_Var14 = (mpz_srcptr)*pmVar19" identifier = (binary_expression "(mpz_srcptr)*pmVar19" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32));" (assignment_expression "puVar18 = puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32))" identifier = (binary_expression "puVar18 + (int)((int)p_Var26 + (-1 - (int)p_Var32))" identifier + (cast_expression "(int)((int)p_Var26 + (-1 - (int)p_Var32))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)p_Var26 + (-1 - (int)p_Var32))" ( (binary_expression "(int)p_Var26 + (-1 - (int)p_Var32)" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var32)" ( (binary_expression "-1 - (int)p_Var32" number_literal - (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar18 = (uint)p_Var14;" (assignment_expression "*puVar18 = (uint)p_Var14" (pointer_expression "*puVar18" * identifier) = (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (p_Var32 != (mpz_srcptr)0x0) {\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }" if (parenthesized_expression "(p_Var32 != (mpz_srcptr)0x0)" ( (binary_expression "p_Var32 != (mpz_srcptr)0x0" identifier != (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);\n        }" { (do_statement "do {\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          } while (iVar9 != (int)p_Var32 << 2);" do (compound_statement "{\n            puVar15 = (uint *)((int)pmVar28 + iVar9);\n            puVar16 = (undefined4 *)((int)pmVar24 + iVar9);\n            puVar13 = (uint *)((int)pmVar30 + iVar9);\n            iVar9 = iVar9 + 4;\n            p_Var14 = (mpz_srcptr)*puVar16;\n            *puVar13 = *puVar15 | (uint)p_Var14;\n          }" { (expression_statement "puVar15 = (uint *)((int)pmVar28 + iVar9);" (assignment_expression "puVar15 = (uint *)((int)pmVar28 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar28 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar28 + iVar9)" ( (binary_expression "(int)pmVar28 + iVar9" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar16 = (undefined4 *)((int)pmVar24 + iVar9);" (assignment_expression "puVar16 = (undefined4 *)((int)pmVar24 + iVar9)" identifier = (cast_expression "(undefined4 *)((int)pmVar24 + iVar9)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 + iVar9)" ( (binary_expression "(int)pmVar24 + iVar9" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar13 = (uint *)((int)pmVar30 + iVar9);" (assignment_expression "puVar13 = (uint *)((int)pmVar30 + iVar9)" identifier = (cast_expression "(uint *)((int)pmVar30 + iVar9)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar30 + iVar9)" ( (binary_expression "(int)pmVar30 + iVar9" (cast_expression "(int)pmVar30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar9 = iVar9 + 4;" (assignment_expression "iVar9 = iVar9 + 4" identifier = (binary_expression "iVar9 + 4" identifier + number_literal)) ;) (expression_statement "p_Var14 = (mpz_srcptr)*puVar16;" (assignment_expression "p_Var14 = (mpz_srcptr)*puVar16" identifier = (binary_expression "(mpz_srcptr)*puVar16" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "*puVar13 = *puVar15 | (uint)p_Var14;" (assignment_expression "*puVar13 = *puVar15 | (uint)p_Var14" (pointer_expression "*puVar13" * identifier) = (binary_expression "*puVar15 | (uint)p_Var14" (pointer_expression "*puVar15" * identifier) | (cast_expression "(uint)p_Var14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar9 != (int)p_Var32 << 2)" ( (binary_expression "iVar9 != (int)p_Var32 << 2" identifier != (binary_expression "(int)p_Var32 << 2" (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )) ;) })) (expression_statement "puVar3[1] = (uint)p_Var26;" (assignment_expression "puVar3[1] = (uint)p_Var26" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(uint)p_Var26" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "p_Var32 = p_Var26;" (assignment_expression "p_Var32 = p_Var26" identifier = identifier) ;) (expression_statement "puVar38 = puVar37 + -0x50;" (assignment_expression "puVar38 = puVar37 + -0x50" identifier = (binary_expression "puVar37 + -0x50" identifier + number_literal)) ;) }))) (goto_statement "goto LAB_0002ac9c;" goto statement_identifier ;) })) }))) (expression_statement "p_Var14 = (mpz_srcptr)-(int)p_Var33;" (assignment_expression "p_Var14 = (mpz_srcptr)-(int)p_Var33" identifier = (binary_expression "(mpz_srcptr)-(int)p_Var33" (parenthesized_expression "(mpz_srcptr)" ( identifier )) - (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var17 = (mpz_srcptr)((int)p_Var33 * -4);" (assignment_expression "p_Var17 = (mpz_srcptr)((int)p_Var33 * -4)" identifier = (call_expression "(mpz_srcptr)((int)p_Var33 * -4)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)p_Var33 * -4)" ( (binary_expression "(int)p_Var33 * -4" (cast_expression "(int)p_Var33" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "pcVar35 = *(code **)(puVar34 + 0x6c800);" (assignment_expression "pcVar35 = *(code **)(puVar34 + 0x6c800)" identifier = (pointer_expression "*(code **)(puVar34 + 0x6c800)" * (cast_expression "(code **)(puVar34 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + 0x6c800)" ( (binary_expression "puVar34 + 0x6c800" identifier + number_literal) ))))) ;) (if_statement "if (p_Var17 < (mpz_srcptr)0x7f01) {\n    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);\n    puVar10 = puVar37 + -(int)p_Var17 + -0x50;\n    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);\n  }\n  else {\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }" if (parenthesized_expression "(p_Var17 < (mpz_srcptr)0x7f01)" ( (binary_expression "p_Var17 < (mpz_srcptr)0x7f01" identifier < (cast_expression "(mpz_srcptr)0x7f01" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);\n    puVar10 = puVar37 + -(int)p_Var17 + -0x50;\n    pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);\n  }" { (expression_statement "p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8);" (assignment_expression "p_Var17 = (mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8)" identifier = (call_expression "(mpz_srcptr)((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8)" ( (binary_expression "(uint)((int)&p_Var17->_mp_size + 3U) & 0xfffffff8" (call_expression "(uint)((int)&p_Var17->_mp_size + 3U)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)&p_Var17->_mp_size + 3U)" ( (binary_expression "(int)&p_Var17->_mp_size + 3U" (cast_expression "(int)&p_Var17->_mp_size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var17->_mp_size" & (field_expression "p_Var17->_mp_size" identifier -> field_identifier))) + number_literal) ))) & number_literal) )))) ;) (expression_statement "puVar10 = puVar37 + -(int)p_Var17 + -0x50;" (assignment_expression "puVar10 = puVar37 + -(int)p_Var17 + -0x50" identifier = (binary_expression "puVar37 + -(int)p_Var17 + -0x50" (binary_expression "puVar37 + -(int)p_Var17" identifier + (unary_expression "-(int)p_Var17" - (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40);" (assignment_expression "pmVar24 = (mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40)" identifier = (cast_expression "(mp_limb_t *)(puVar37 + -(int)p_Var17 + -0x40)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -(int)p_Var17 + -0x40)" ( (binary_expression "puVar37 + -(int)p_Var17 + -0x40" (binary_expression "puVar37 + -(int)p_Var17" identifier + (unary_expression "-(int)p_Var17" - (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal) )))) ;) }) (else_clause "else {\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }" else (compound_statement "{\n    *(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);\n    p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);\n  }" { (expression_statement "*(mpz_srcptr *)(puVar37 + -0x38) = p_Var14;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x38) = p_Var14" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x38)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x38)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x38)" ( (binary_expression "puVar37 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var20" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30);" (assignment_expression "pmVar24 = (mp_limb_t *)(*pcVar35)(puVar37 + -0x30)" identifier = (cast_expression "(mp_limb_t *)(*pcVar35)(puVar37 + -0x30)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(puVar37 + -0x30)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38);" (assignment_expression "p_Var14 = *(mpz_srcptr *)(puVar37 + -0x38)" identifier = (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x38)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x38)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x38)" ( (binary_expression "puVar37 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34);" (assignment_expression "p_Var20 = *(mpz_srcptr *)(puVar37 + -0x34)" identifier = (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "mVar5 = *pmVar19;" (assignment_expression "mVar5 = *pmVar19" identifier = (pointer_expression "*pmVar19" * identifier)) ;) (expression_statement "*pmVar24 = mVar5 - 1;" (assignment_expression "*pmVar24 = mVar5 - 1" (pointer_expression "*pmVar24" * identifier) = (binary_expression "mVar5 - 1" identifier - number_literal)) ;) (if_statement "if (mVar5 == 0) {\n    if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }\nLAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    (*pcVar35)(puVar3);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    pmVar30 = (mp_limb_t *)puVar3[2];\n    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;\nLAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);\n    if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }\n    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }\n    iVar9 = (int)p_Var26 << 2;\n  }\n  else {\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }" if (parenthesized_expression "(mVar5 == 0)" ( (binary_expression "mVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }\nLAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);\n    *(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;\n    (*pcVar35)(puVar3);\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n    pmVar30 = (mp_limb_t *)puVar3[2];\n    pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);\n    if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;\nLAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);\n    if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }\n    if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }\n    iVar9 = (int)p_Var26 << 2;\n  }" { (if_statement "if (p_Var33 != (mpz_srcptr)0xffffffff) {\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }" if (parenthesized_expression "(p_Var33 != (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var33 != (mpz_srcptr)0xffffffff" identifier != (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      mVar5 = pmVar19[1];\n      pmVar24[1] = mVar5 - 1;\n      if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }\n      if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }\n    }" { (expression_statement "mVar5 = pmVar19[1];" (assignment_expression "mVar5 = pmVar19[1]" identifier = (subscript_expression "pmVar19[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar24[1] = mVar5 - 1;" (assignment_expression "pmVar24[1] = mVar5 - 1" (subscript_expression "pmVar24[1]" identifier [ number_literal ]) = (binary_expression "mVar5 - 1" identifier - number_literal)) ;) (if_statement "if (mVar5 == 0) {\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }\n      else {\n        iVar9 = 2;\n      }" if (parenthesized_expression "(mVar5 == 0)" ( (binary_expression "mVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        pmVar6 = pmVar19 + 2;\n        iVar9 = 2;\n        pmVar28 = pmVar24 + 2;\n        do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);\n      }" { (expression_statement "pmVar6 = pmVar19 + 2;" (assignment_expression "pmVar6 = pmVar19 + 2" identifier = (binary_expression "pmVar19 + 2" identifier + number_literal)) ;) (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) (expression_statement "pmVar28 = pmVar24 + 2;" (assignment_expression "pmVar28 = pmVar24 + 2" identifier = (binary_expression "pmVar24 + 2" identifier + number_literal)) ;) (do_statement "do {\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        } while (p_Var17 == (mpz_srcptr)0x0);" do (compound_statement "{\n          p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);\n          iVar9 = iVar9 + 1;\n          if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;\n          p_Var17 = (mpz_srcptr)*pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);\n          pmVar28 = pmVar28 + 1;\n        }" { (expression_statement "p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14);" (assignment_expression "p_Var17 = (mpz_srcptr)(uint)(iVar9 < (int)p_Var14)" identifier = (call_expression "(mpz_srcptr)(uint)(iVar9 < (int)p_Var14)" (call_expression "(mpz_srcptr)(uint)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(iVar9 < (int)p_Var14)" ( (binary_expression "iVar9 < (int)p_Var14" identifier < (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (p_Var17 == (mpz_srcptr)0x0) goto LAB_0002abf4;" if (parenthesized_expression "(p_Var17 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var17 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (expression_statement "p_Var17 = (mpz_srcptr)*pmVar6;" (assignment_expression "p_Var17 = (mpz_srcptr)*pmVar6" identifier = (binary_expression "(mpz_srcptr)*pmVar6" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3);" (assignment_expression "*pmVar28 = (mp_limb_t)((int)&p_Var17[-1]._mp_d + 3)" (pointer_expression "*pmVar28" * identifier) = (call_expression "(mp_limb_t)((int)&p_Var17[-1]._mp_d + 3)" (parenthesized_expression "(mp_limb_t)" ( identifier )) (argument_list "((int)&p_Var17[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var17[-1]._mp_d + 3" (cast_expression "(int)&p_Var17[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var17[-1]._mp_d" & (field_expression "p_Var17[-1]._mp_d" (subscript_expression "p_Var17[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(p_Var17 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var17 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) ;) }) (else_clause "else {\n        iVar9 = 2;\n      }" else (compound_statement "{\n        iVar9 = 2;\n      }" { (expression_statement "iVar9 = 2;" (assignment_expression "iVar9 = 2" identifier = number_literal) ;) }))) (if_statement "if ((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)) {\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }" if (parenthesized_expression "((pmVar19 != pmVar24) && (iVar9 < (int)p_Var14))" ( (binary_expression "(pmVar19 != pmVar24) && (iVar9 < (int)p_Var14)" (parenthesized_expression "(pmVar19 != pmVar24)" ( (binary_expression "pmVar19 != pmVar24" identifier != identifier) )) && (parenthesized_expression "(iVar9 < (int)p_Var14)" ( (binary_expression "iVar9 < (int)p_Var14" identifier < (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        pmVar6 = pmVar19 + iVar9;\n        pmVar28 = pmVar24 + iVar9;\n        do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);\n      }" { (expression_statement "pmVar6 = pmVar19 + iVar9;" (assignment_expression "pmVar6 = pmVar19 + iVar9" identifier = (binary_expression "pmVar19 + iVar9" identifier + identifier)) ;) (expression_statement "pmVar28 = pmVar24 + iVar9;" (assignment_expression "pmVar28 = pmVar24 + iVar9" identifier = (binary_expression "pmVar24 + iVar9" identifier + identifier)) ;) (do_statement "do {\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        } while (pmVar19 + (int)p_Var14 != pmVar6);" do (compound_statement "{\n          mVar5 = *pmVar6;\n          pmVar6 = pmVar6 + 1;\n          *pmVar28 = mVar5;\n          pmVar28 = pmVar28 + 1;\n        }" { (expression_statement "mVar5 = *pmVar6;" (assignment_expression "mVar5 = *pmVar6" identifier = (pointer_expression "*pmVar6" * identifier)) ;) (expression_statement "pmVar6 = pmVar6 + 1;" (assignment_expression "pmVar6 = pmVar6 + 1" identifier = (binary_expression "pmVar6 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar28 = mVar5;" (assignment_expression "*pmVar28 = mVar5" (pointer_expression "*pmVar28" * identifier) = identifier) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar19 + (int)p_Var14 != pmVar6)" ( (binary_expression "pmVar19 + (int)p_Var14 != pmVar6" (binary_expression "pmVar19 + (int)p_Var14" identifier + (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) (labeled_statement "LAB_0002abf4:\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));" statement_identifier : (expression_statement "p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));" (assignment_expression "p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" identifier = (call_expression "(mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" ( (binary_expression "(int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0)" (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(pmVar24[~(uint)p_Var33] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pmVar24[~(uint)p_Var33] == 0)" ( (binary_expression "pmVar24[~(uint)p_Var33] == 0" (subscript_expression "pmVar24[~(uint)p_Var33]" identifier [ (unary_expression "~(uint)p_Var33" ~ (cast_expression "(uint)p_Var33" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;)) (if_statement "if ((int)p_Var14 <= (int)*puVar3) goto LAB_0002ac14;" if (parenthesized_expression "((int)p_Var14 <= (int)*puVar3)" ( (binary_expression "(int)p_Var14 <= (int)*puVar3" (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)*puVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar3" * identifier))) )) (goto_statement "goto LAB_0002ac14;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad34:\n    pcVar35 = *(code **)(puVar36 + -0x7a84);" statement_identifier : (expression_statement "pcVar35 = *(code **)(puVar36 + -0x7a84);" (assignment_expression "pcVar35 = *(code **)(puVar36 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar36 + -0x7a84)" * (cast_expression "(code **)(puVar36 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x7a84)" ( (binary_expression "puVar36 + -0x7a84" identifier + number_literal) ))))) ;)) (expression_statement "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var20;" (assignment_expression "*(mpz_srcptr *)(puVar37 + -0x34) = p_Var20" (pointer_expression "*(mpz_srcptr *)(puVar37 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar37 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar35)(puVar3);" (call_expression "(*pcVar35)(puVar3)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(puVar3)" ( identifier ))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "pmVar30 = (mp_limb_t *)puVar3[2];" (assignment_expression "pmVar30 = (mp_limb_t *)puVar3[2]" identifier = (cast_expression "(mp_limb_t *)puVar3[2]" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ]))) ;) (expression_statement "pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8);" (assignment_expression "pmVar29 = *(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" identifier = (pointer_expression "*(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" * (cast_expression "(mp_limb_t **)(*(int *)(puVar37 + -0x34) + 8)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar37 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar37 + -0x34) + 8" (pointer_expression "*(int *)(puVar37 + -0x34)" * (cast_expression "(int *)(puVar37 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((int)p_Var27 < (int)p_Var26) goto LAB_0002ad60;" if (parenthesized_expression "((int)p_Var27 < (int)p_Var26)" ( (binary_expression "(int)p_Var27 < (int)p_Var26" (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac20:\n    p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);" statement_identifier : (expression_statement "p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3);" (assignment_expression "p_Var32 = (mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3)" identifier = (call_expression "(mpz_srcptr)((int)&p_Var26[-1]._mp_d + 3)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)&p_Var26[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var26[-1]._mp_d + 3" (cast_expression "(int)&p_Var26[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var26[-1]._mp_d" & (field_expression "p_Var26[-1]._mp_d" (subscript_expression "p_Var26[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;)) (if_statement "if (p_Var26 == (mpz_srcptr)0x0) {\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }" if (parenthesized_expression "(p_Var26 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var26 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;\n      *pmVar30 = 1;\n      puVar13 = *(uint **)(puVar37 + -0x30);\n      puVar3[1] = 0xffffffff;\n      pmVar28 = pmVar29;\n      goto joined_r0x0002b0c4;\n    }" { (labeled_statement "LAB_0002ac84:\n      pmVar24 = (mp_limb_t *)0xffffffff;" statement_identifier : (expression_statement "pmVar24 = (mp_limb_t *)0xffffffff;" (assignment_expression "pmVar24 = (mp_limb_t *)0xffffffff" identifier = (cast_expression "(mp_limb_t *)0xffffffff" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "*pmVar30 = 1;" (assignment_expression "*pmVar30 = 1" (pointer_expression "*pmVar30" * identifier) = number_literal) ;) (expression_statement "puVar13 = *(uint **)(puVar37 + -0x30);" (assignment_expression "puVar13 = *(uint **)(puVar37 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar37 + -0x30)" * (cast_expression "(uint **)(puVar37 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar3[1] = 0xffffffff;" (assignment_expression "puVar3[1] = 0xffffffff" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pmVar28 = pmVar29;" (assignment_expression "pmVar28 = pmVar29" identifier = identifier) ;) (goto_statement "goto joined_r0x0002b0c4;" goto statement_identifier ;) })) (if_statement "if ((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0) {\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }" if (parenthesized_expression "((~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0)" ( (binary_expression "(~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]) == 0" (parenthesized_expression "(~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32])" ( (binary_expression "~pmVar29[(int)p_Var32] & pmVar24[(int)p_Var32]" (unary_expression "~pmVar29[(int)p_Var32]" ~ (subscript_expression "pmVar29[(int)p_Var32]" identifier [ (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) ])) & (subscript_expression "pmVar24[(int)p_Var32]" identifier [ (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier) ])) )) == number_literal) )) (compound_statement "{\n      pmVar19 = pmVar29 + (int)p_Var26;\n      pmVar28 = pmVar24 + (int)p_Var26;\n      p_Var14 = p_Var32;\n      do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);\n    }" { (expression_statement "pmVar19 = pmVar29 + (int)p_Var26;" (assignment_expression "pmVar19 = pmVar29 + (int)p_Var26" identifier = (binary_expression "pmVar29 + (int)p_Var26" identifier + (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar28 = pmVar24 + (int)p_Var26;" (assignment_expression "pmVar28 = pmVar24 + (int)p_Var26" identifier = (binary_expression "pmVar24 + (int)p_Var26" identifier + (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var14 = p_Var32;" (assignment_expression "p_Var14 = p_Var32" identifier = identifier) ;) (do_statement "do {\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      } while ((~*puVar13 & *pmVar6) == 0);" do (compound_statement "{\n        p_Var32 = p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);\n        if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;\n        puVar13 = pmVar19 + -2;\n        pmVar6 = pmVar28 + -2;\n        pmVar19 = pmVar19 + -1;\n        pmVar28 = pmVar28 + -1;\n        p_Var26 = p_Var32;\n      }" { (expression_statement "p_Var32 = p_Var14;" (assignment_expression "p_Var32 = p_Var14" identifier = identifier) ;) (expression_statement "p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3);" (assignment_expression "p_Var14 = (mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3)" identifier = (call_expression "(mpz_srcptr)((int)&p_Var32[-1]._mp_d + 3)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)&p_Var32[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var32[-1]._mp_d + 3" (cast_expression "(int)&p_Var32[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var32[-1]._mp_d" & (field_expression "p_Var32[-1]._mp_d" (subscript_expression "p_Var32[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (p_Var14 == (mpz_srcptr)0xffffffff) goto LAB_0002ac84;" if (parenthesized_expression "(p_Var14 == (mpz_srcptr)0xffffffff)" ( (binary_expression "p_Var14 == (mpz_srcptr)0xffffffff" identifier == (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002ac84;" goto statement_identifier ;)) (expression_statement "puVar13 = pmVar19 + -2;" (assignment_expression "puVar13 = pmVar19 + -2" identifier = (binary_expression "pmVar19 + -2" identifier + number_literal)) ;) (expression_statement "pmVar6 = pmVar28 + -2;" (assignment_expression "pmVar6 = pmVar28 + -2" identifier = (binary_expression "pmVar28 + -2" identifier + number_literal)) ;) (expression_statement "pmVar19 = pmVar19 + -1;" (assignment_expression "pmVar19 = pmVar19 + -1" identifier = (binary_expression "pmVar19 + -1" identifier + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + -1;" (assignment_expression "pmVar28 = pmVar28 + -1" identifier = (binary_expression "pmVar28 + -1" identifier + number_literal)) ;) (expression_statement "p_Var26 = p_Var32;" (assignment_expression "p_Var26 = p_Var32" identifier = identifier) ;) }) while (parenthesized_expression "((~*puVar13 & *pmVar6) == 0)" ( (binary_expression "(~*puVar13 & *pmVar6) == 0" (parenthesized_expression "(~*puVar13 & *pmVar6)" ( (binary_expression "~*puVar13 & *pmVar6" (unary_expression "~*puVar13" ~ (pointer_expression "*puVar13" * identifier)) & (pointer_expression "*pmVar6" * identifier)) )) == number_literal) )) ;) })) (expression_statement "iVar9 = (int)p_Var26 << 2;" (assignment_expression "iVar9 = (int)p_Var26 << 2" identifier = (binary_expression "(int)p_Var26 << 2" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) }) (else_clause "else {\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }" else (compound_statement "{\n    if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);\n    p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));\n    if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;\nLAB_0002ac14:\n    p_Var14 = p_Var17;\n    if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;\n    pmVar19 = pmVar24 + (int)p_Var27;\n    puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));\n    pmVar6 = pmVar30 + (int)p_Var27;\n    mVar5 = *pmVar19;\n    pmVar28 = pmVar6;\n    if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }\n    *pmVar6 = mVar5;\n    if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;\n  }" { (if_statement "if ((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))\n    goto LAB_0002abf4;" if (parenthesized_expression "((pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff))" ( (binary_expression "(pmVar19 == pmVar24) || (iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff)" (parenthesized_expression "(pmVar19 == pmVar24)" ( (binary_expression "pmVar19 == pmVar24" identifier == identifier) )) || (parenthesized_expression "(iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff)" ( (comma_expression "iVar9 = 1, pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff" (assignment_expression "iVar9 = 1" identifier = number_literal) , (comma_expression "pmVar28 = pmVar24, p_Var33 == (mpz_srcptr)0xffffffff" (assignment_expression "pmVar28 = pmVar24" identifier = identifier) , (binary_expression "p_Var33 == (mpz_srcptr)0xffffffff" identifier == (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)))) ))) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (do_statement "do {\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    } while (iVar9 < (int)p_Var14);" do (compound_statement "{\n      pmVar19 = pmVar19 + 1;\n      p_Var17 = (mpz_srcptr)*pmVar19;\n      iVar9 = iVar9 + 1;\n      pmVar28[1] = (mp_limb_t)p_Var17;\n      pmVar28 = pmVar28 + 1;\n    }" { (expression_statement "pmVar19 = pmVar19 + 1;" (assignment_expression "pmVar19 = pmVar19 + 1" identifier = (binary_expression "pmVar19 + 1" identifier + number_literal)) ;) (expression_statement "p_Var17 = (mpz_srcptr)*pmVar19;" (assignment_expression "p_Var17 = (mpz_srcptr)*pmVar19" identifier = (binary_expression "(mpz_srcptr)*pmVar19" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28[1] = (mp_limb_t)p_Var17;" (assignment_expression "pmVar28[1] = (mp_limb_t)p_Var17" (subscript_expression "pmVar28[1]" identifier [ number_literal ]) = (cast_expression "(mp_limb_t)p_Var17" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 < (int)p_Var14)" ( (binary_expression "iVar9 < (int)p_Var14" identifier < (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0));" (assignment_expression "p_Var26 = (mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" identifier = (call_expression "(mpz_srcptr)((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0))" ( (binary_expression "(int)p_Var14 - (uint)(pmVar24[~(uint)p_Var33] == 0)" (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(pmVar24[~(uint)p_Var33] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pmVar24[~(uint)p_Var33] == 0)" ( (binary_expression "pmVar24[~(uint)p_Var33] == 0" (subscript_expression "pmVar24[~(uint)p_Var33]" identifier [ (unary_expression "~(uint)p_Var33" ~ (cast_expression "(uint)p_Var33" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;) (if_statement "if ((int)*puVar3 < (int)p_Var14) goto LAB_0002ad34;" if (parenthesized_expression "((int)*puVar3 < (int)p_Var14)" ( (binary_expression "(int)*puVar3 < (int)p_Var14" (cast_expression "(int)*puVar3" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar3" * identifier)) < (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad34;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac14:\n    p_Var14 = p_Var17;" statement_identifier : (expression_statement "p_Var14 = p_Var17;" (assignment_expression "p_Var14 = p_Var17" identifier = identifier) ;)) (if_statement "if ((int)p_Var26 <= (int)p_Var27) goto LAB_0002ac20;" if (parenthesized_expression "((int)p_Var26 <= (int)p_Var27)" ( (binary_expression "(int)p_Var26 <= (int)p_Var27" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ac20;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad60:\n    iVar9 = (int)p_Var27 * 4;" statement_identifier : (expression_statement "iVar9 = (int)p_Var27 * 4;" (assignment_expression "iVar9 = (int)p_Var27 * 4" identifier = (binary_expression "(int)p_Var27 * 4" (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;)) (expression_statement "pmVar19 = pmVar24 + (int)p_Var27;" (assignment_expression "pmVar19 = pmVar24 + (int)p_Var27" identifier = (binary_expression "pmVar24 + (int)p_Var27" identifier + (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27));" (assignment_expression "puVar10 = (undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27))" identifier = (cast_expression "(undefined1 *)((int)p_Var26 + (-1 - (int)p_Var27))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var26 + (-1 - (int)p_Var27))" ( (binary_expression "(int)p_Var26 + (-1 - (int)p_Var27)" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var27)" ( (binary_expression "-1 - (int)p_Var27" number_literal - (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "pmVar6 = pmVar30 + (int)p_Var27;" (assignment_expression "pmVar6 = pmVar30 + (int)p_Var27" identifier = (binary_expression "pmVar30 + (int)p_Var27" identifier + (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "mVar5 = *pmVar19;" (assignment_expression "mVar5 = *pmVar19" identifier = (pointer_expression "*pmVar19" * identifier)) ;) (expression_statement "pmVar28 = pmVar6;" (assignment_expression "pmVar28 = pmVar6" identifier = identifier) ;) (if_statement "if (puVar10 != (undefined1 *)0x0) {\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }" if (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);\n      pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));\n    }" { (do_statement "do {\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      } while (puVar10 != (undefined1 *)0x0);" do (compound_statement "{\n        pmVar19 = pmVar19 + 1;\n        *pmVar28 = mVar5;\n        puVar10 = puVar10 + -1;\n        mVar5 = *pmVar19;\n        pmVar28 = pmVar28 + 1;\n      }" { (expression_statement "pmVar19 = pmVar19 + 1;" (assignment_expression "pmVar19 = pmVar19 + 1" identifier = (binary_expression "pmVar19 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar28 = mVar5;" (assignment_expression "*pmVar28 = mVar5" (pointer_expression "*pmVar28" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "mVar5 = *pmVar19;" (assignment_expression "mVar5 = *pmVar19" identifier = (pointer_expression "*pmVar19" * identifier)) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar10 != (undefined1 *)0x0)" ( (binary_expression "puVar10 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27));" (assignment_expression "pmVar6 = pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27))" identifier = (binary_expression "pmVar6 + (int)((int)p_Var26 + (-1 - (int)p_Var27))" identifier + (cast_expression "(int)((int)p_Var26 + (-1 - (int)p_Var27))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)p_Var26 + (-1 - (int)p_Var27))" ( (binary_expression "(int)p_Var26 + (-1 - (int)p_Var27)" (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)p_Var27)" ( (binary_expression "-1 - (int)p_Var27" number_literal - (cast_expression "(int)p_Var27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*pmVar6 = mVar5;" (assignment_expression "*pmVar6 = mVar5" (pointer_expression "*pmVar6" * identifier) = identifier) ;) (if_statement "if (p_Var27 == (mpz_srcptr)0x0) goto LAB_0002addc;" if (parenthesized_expression "(p_Var27 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var27 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0002addc;" goto statement_identifier ;)) }))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n    puVar3 = (uint *)((int)pmVar29 + iVar4);\n    puVar15 = (uint *)((int)pmVar24 + iVar4);\n    puVar13 = (uint *)((int)pmVar30 + iVar4);\n    iVar4 = iVar4 + 4;\n    *puVar13 = ~*puVar3 & *puVar15;\n  } while (iVar9 != iVar4);" do (compound_statement "{\n    puVar3 = (uint *)((int)pmVar29 + iVar4);\n    puVar15 = (uint *)((int)pmVar24 + iVar4);\n    puVar13 = (uint *)((int)pmVar30 + iVar4);\n    iVar4 = iVar4 + 4;\n    *puVar13 = ~*puVar3 & *puVar15;\n  }" { (expression_statement "puVar3 = (uint *)((int)pmVar29 + iVar4);" (assignment_expression "puVar3 = (uint *)((int)pmVar29 + iVar4)" identifier = (cast_expression "(uint *)((int)pmVar29 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar29 + iVar4)" ( (binary_expression "(int)pmVar29 + iVar4" (cast_expression "(int)pmVar29" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar15 = (uint *)((int)pmVar24 + iVar4);" (assignment_expression "puVar15 = (uint *)((int)pmVar24 + iVar4)" identifier = (cast_expression "(uint *)((int)pmVar24 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 + iVar4)" ( (binary_expression "(int)pmVar24 + iVar4" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar13 = (uint *)((int)pmVar30 + iVar4);" (assignment_expression "puVar13 = (uint *)((int)pmVar30 + iVar4)" identifier = (cast_expression "(uint *)((int)pmVar30 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar30 + iVar4)" ( (binary_expression "(int)pmVar30 + iVar4" (cast_expression "(int)pmVar30" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar4 = iVar4 + 4;" (assignment_expression "iVar4 = iVar4 + 4" identifier = (binary_expression "iVar4 + 4" identifier + number_literal)) ;) (expression_statement "*puVar13 = ~*puVar3 & *puVar15;" (assignment_expression "*puVar13 = ~*puVar3 & *puVar15" (pointer_expression "*puVar13" * identifier) = (binary_expression "~*puVar3 & *puVar15" (unary_expression "~*puVar3" ~ (pointer_expression "*puVar3" * identifier)) & (pointer_expression "*puVar15" * identifier))) ;) }) while (parenthesized_expression "(iVar9 != iVar4)" ( (binary_expression "iVar9 != iVar4" identifier != identifier) )) ;) (labeled_statement "LAB_0002addc:\n  mVar5 = *pmVar30;" statement_identifier : (expression_statement "mVar5 = *pmVar30;" (assignment_expression "mVar5 = *pmVar30" identifier = (pointer_expression "*pmVar30" * identifier)) ;)) (expression_statement "*pmVar30 = mVar5 + 1;" (assignment_expression "*pmVar30 = mVar5 + 1" (pointer_expression "*pmVar30" * identifier) = (binary_expression "mVar5 + 1" identifier + number_literal)) ;) (if_statement "if (mVar5 + 1 == 0) {\n    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }\n    mVar5 = pmVar30[1];\n    pmVar30[1] = mVar5 + 1;\n    if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }\n  }" if (parenthesized_expression "(mVar5 + 1 == 0)" ( (binary_expression "mVar5 + 1 == 0" (binary_expression "mVar5 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n    if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }\n    mVar5 = pmVar30[1];\n    pmVar30[1] = mVar5 + 1;\n    if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }\n  }" { (if_statement "if (p_Var26 == (mpz_srcptr)&DAT_00000001) {\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }" if (parenthesized_expression "(p_Var26 == (mpz_srcptr)&DAT_00000001)" ( (binary_expression "p_Var26 == (mpz_srcptr)&DAT_00000001" (binary_expression "p_Var26 == (mpz_srcptr)" identifier == (parenthesized_expression "(mpz_srcptr)" ( identifier ))) & identifier) )) (compound_statement "{\nLAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;\n      iVar9 = FUN_0002ac90();\n      return iVar9;\n    }" { (labeled_statement "LAB_0002ae34:\n      pmVar30[(int)p_Var26] = 1;" statement_identifier : (expression_statement "pmVar30[(int)p_Var26] = 1;" (assignment_expression "pmVar30[(int)p_Var26] = 1" (subscript_expression "pmVar30[(int)p_Var26]" identifier [ (cast_expression "(int)p_Var26" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;)) (expression_statement "iVar9 = FUN_0002ac90();" (assignment_expression "iVar9 = FUN_0002ac90()" identifier = (call_expression "FUN_0002ac90()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar9;" return identifier ;) })) (expression_statement "mVar5 = pmVar30[1];" (assignment_expression "mVar5 = pmVar30[1]" identifier = (subscript_expression "pmVar30[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar30[1] = mVar5 + 1;" (assignment_expression "pmVar30[1] = mVar5 + 1" (subscript_expression "pmVar30[1]" identifier [ number_literal ]) = (binary_expression "mVar5 + 1" identifier + number_literal)) ;) (if_statement "if (mVar5 + 1 == 0) {\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }" if (parenthesized_expression "(mVar5 + 1 == 0)" ( (binary_expression "mVar5 + 1 == 0" (binary_expression "mVar5 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      p_Var14 = (mpz_srcptr)0x2;\n      pmVar24 = pmVar30 + 2;\n      do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);\n    }" { (expression_statement "p_Var14 = (mpz_srcptr)0x2;" (assignment_expression "p_Var14 = (mpz_srcptr)0x2" identifier = (cast_expression "(mpz_srcptr)0x2" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) ;) (expression_statement "pmVar24 = pmVar30 + 2;" (assignment_expression "pmVar24 = pmVar30 + 2" identifier = (binary_expression "pmVar30 + 2" identifier + number_literal)) ;) (do_statement "do {\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      } while (mVar5 + 1 == 0);" do (compound_statement "{\n        bVar1 = p_Var26 == p_Var14;\n        p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);\n        if (bVar1) goto LAB_0002ae34;\n        mVar5 = *pmVar24;\n        *pmVar24 = mVar5 + 1;\n        pmVar24 = pmVar24 + 1;\n      }" { (expression_statement "bVar1 = p_Var26 == p_Var14;" (assignment_expression "bVar1 = p_Var26 == p_Var14" identifier = (binary_expression "p_Var26 == p_Var14" identifier == identifier)) ;) (expression_statement "p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1);" (assignment_expression "p_Var14 = (mpz_srcptr)((int)&p_Var14->_mp_alloc + 1)" identifier = (call_expression "(mpz_srcptr)((int)&p_Var14->_mp_alloc + 1)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)&p_Var14->_mp_alloc + 1)" ( (binary_expression "(int)&p_Var14->_mp_alloc + 1" (cast_expression "(int)&p_Var14->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var14->_mp_alloc" & (field_expression "p_Var14->_mp_alloc" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0002ae34;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0002ae34;" goto statement_identifier ;)) (expression_statement "mVar5 = *pmVar24;" (assignment_expression "mVar5 = *pmVar24" identifier = (pointer_expression "*pmVar24" * identifier)) ;) (expression_statement "*pmVar24 = mVar5 + 1;" (assignment_expression "*pmVar24 = mVar5 + 1" (pointer_expression "*pmVar24" * identifier) = (binary_expression "mVar5 + 1" identifier + number_literal)) ;) (expression_statement "pmVar24 = pmVar24 + 1;" (assignment_expression "pmVar24 = pmVar24 + 1" identifier = (binary_expression "pmVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar5 + 1 == 0)" ( (binary_expression "mVar5 + 1 == 0" (binary_expression "mVar5 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (expression_statement "iVar9 = FUN_0002ac90();" (assignment_expression "iVar9 = FUN_0002ac90()" identifier = (call_expression "FUN_0002ac90()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar9;" return identifier ;) (labeled_statement "code_r0x0002b0ac:\n  uVar23 = uVar23 - 1;" statement_identifier : (expression_statement "uVar23 = uVar23 - 1;" (assignment_expression "uVar23 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;)) (expression_statement "pmVar6 = pmVar6 + -1;" (assignment_expression "pmVar6 = pmVar6 + -1" identifier = (binary_expression "pmVar6 + -1" identifier + number_literal)) ;) (if_statement "if (uVar23 == 0xffffffff) goto code_r0x0002b0b8;" if (parenthesized_expression "(uVar23 == 0xffffffff)" ( (binary_expression "uVar23 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto code_r0x0002b0b8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002b098;" goto statement_identifier ;) (labeled_statement "code_r0x0002b0b8:\n  *pmVar30 = 1;" statement_identifier : (expression_statement "*pmVar30 = 1;" (assignment_expression "*pmVar30 = 1" (pointer_expression "*pmVar30" * identifier) = number_literal) ;)) (expression_statement "p_Var32 = (mpz_srcptr)0xffffffff;" (assignment_expression "p_Var32 = (mpz_srcptr)0xffffffff" identifier = (cast_expression "(mpz_srcptr)0xffffffff" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) ;) (labeled_statement "LAB_0002b0c0:\n  puVar13 = *(uint **)(puVar37 + -0x30);" statement_identifier : (expression_statement "puVar13 = *(uint **)(puVar37 + -0x30);" (assignment_expression "puVar13 = *(uint **)(puVar37 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar37 + -0x30)" * (cast_expression "(uint **)(puVar37 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar3[1] = (uint)p_Var32;" (assignment_expression "puVar3[1] = (uint)p_Var32" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = (cast_expression "(uint)p_Var32" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar10 = puVar39;" (assignment_expression "puVar10 = puVar39" identifier = identifier) ;) (labeled_statement "joined_r0x0002b0c4:\n  puVar38 = puVar10;" statement_identifier : (expression_statement "puVar38 = puVar10;" (assignment_expression "puVar38 = puVar10" identifier = identifier) ;)) (if_statement "if (puVar13 != (uint *)0x0) {\n    (**(code **)(puVar36 + -0x7a2c))();\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n  }" if (parenthesized_expression "(puVar13 != (uint *)0x0)" ( (binary_expression "puVar13 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar36 + -0x7a2c))();\n    puVar36 = *(undefined **)(puVar37 + -0x40);\n  }" { (expression_statement "(**(code **)(puVar36 + -0x7a2c))();" (call_expression "(**(code **)(puVar36 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar36 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar36 + -0x7a2c)" * (pointer_expression "*(code **)(puVar36 + -0x7a2c)" * (cast_expression "(code **)(puVar36 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x7a2c)" ( (binary_expression "puVar36 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar36 = *(undefined **)(puVar37 + -0x40);" (assignment_expression "puVar36 = *(undefined **)(puVar37 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar37 + -0x40)" * (cast_expression "(undefined **)(puVar37 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_0002ac9c:\n  iVar9 = *piVar31;" statement_identifier : (expression_statement "iVar9 = *piVar31;" (assignment_expression "iVar9 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;)) (if_statement "if (*(int *)(puVar37 + -0x2c) == iVar9) {\n    return iVar9;\n  }" if (parenthesized_expression "(*(int *)(puVar37 + -0x2c) == iVar9)" ( (binary_expression "*(int *)(puVar37 + -0x2c) == iVar9" (pointer_expression "*(int *)(puVar37 + -0x2c)" * (cast_expression "(int *)(puVar37 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x2c)" ( (binary_expression "puVar37 + -0x2c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return iVar9;\n  }" { (return_statement "return iVar9;" return identifier ;) })) (expression_statement "pcVar35 = *(code **)(puVar36 + -0x7b70);" (assignment_expression "pcVar35 = *(code **)(puVar36 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar36 + -0x7b70)" * (cast_expression "(code **)(puVar36 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x7b70)" ( (binary_expression "puVar36 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar40 = 0x2b384;" (assignment_expression "uVar40 = 0x2b384" identifier = number_literal) ;) (expression_statement "(*pcVar35)();" (call_expression "(*pcVar35)()" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(mp_limb_t **)(puVar38 + -0x14) = pmVar24;" (assignment_expression "*(mp_limb_t **)(puVar38 + -0x14) = pmVar24" (pointer_expression "*(mp_limb_t **)(puVar38 + -0x14)" * (cast_expression "(mp_limb_t **)(puVar38 + -0x14)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x14)" ( (binary_expression "puVar38 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0;" (assignment_expression "*(code **)(puVar38 + -0x20) = pcVar35 + 0x73cb0" (pointer_expression "*(code **)(puVar38 + -0x20)" * (cast_expression "(code **)(puVar38 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x20)" ( (binary_expression "puVar38 + -0x20" identifier + number_literal) )))) = (binary_expression "pcVar35 + 0x73cb0" identifier + number_literal)) ;) (expression_statement "*(mp_limb_t **)(puVar38 + -8) = pmVar30;" (assignment_expression "*(mp_limb_t **)(puVar38 + -8) = pmVar30" (pointer_expression "*(mp_limb_t **)(puVar38 + -8)" * (cast_expression "(mp_limb_t **)(puVar38 + -8)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -8)" ( (binary_expression "puVar38 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(puVar38 + -0xc) = pmVar28;" (assignment_expression "*(mp_limb_t **)(puVar38 + -0xc) = pmVar28" (pointer_expression "*(mp_limb_t **)(puVar38 + -0xc)" * (cast_expression "(mp_limb_t **)(puVar38 + -0xc)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc)" ( (binary_expression "puVar38 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + -4) = uVar40;" (assignment_expression "*(undefined4 *)(puVar38 + -4) = uVar40" (pointer_expression "*(undefined4 *)(puVar38 + -4)" * (cast_expression "(undefined4 *)(puVar38 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -4)" ( (binary_expression "puVar38 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar38 + -0x10) = p_Var32;" (assignment_expression "*(mpz_srcptr *)(puVar38 + -0x10) = p_Var32" (pointer_expression "*(mpz_srcptr *)(puVar38 + -0x10)" * (cast_expression "(mpz_srcptr *)(puVar38 + -0x10)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x10)" ( (binary_expression "puVar38 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar25 = p_Var14->_mp_size;" (assignment_expression "uVar25 = p_Var14->_mp_size" identifier = (field_expression "p_Var14->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar23 = uVar25;" (assignment_expression "uVar23 = uVar25" identifier = identifier) ;) (if_statement "if ((int)uVar25 < 0) {\n    uVar23 = -uVar25;\n  }" if (parenthesized_expression "((int)uVar25 < 0)" ( (binary_expression "(int)uVar25 < 0" (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar23 = -uVar25;\n  }" { (expression_statement "uVar23 = -uVar25;" (assignment_expression "uVar23 = -uVar25" identifier = (unary_expression "-uVar25" - identifier)) ;) })) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar23) {\n    uVar12 = uVar23;\n  }" if (parenthesized_expression "(0 < (int)uVar23)" ( (binary_expression "0 < (int)uVar23" number_literal < (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar12 = uVar23;\n  }" { (expression_statement "uVar12 = uVar23;" (assignment_expression "uVar12 = uVar23" identifier = identifier) ;) })) (expression_statement "pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c);" (assignment_expression "pcVar35 = (code *)**(undefined4 **)(pcVar35 + 0x6c17c)" identifier = (cast_expression "(code *)**(undefined4 **)(pcVar35 + 0x6c17c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar35 + 0x6c17c)" * (pointer_expression "*(undefined4 **)(pcVar35 + 0x6c17c)" * (cast_expression "(undefined4 **)(pcVar35 + 0x6c17c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar35 + 0x6c17c)" ( (binary_expression "pcVar35 + 0x6c17c" identifier + number_literal) ))))))) ;) (expression_statement "*puVar13 = uVar12;" (assignment_expression "*puVar13 = uVar12" (pointer_expression "*puVar13" * identifier) = identifier) ;) (expression_statement "pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2);" (assignment_expression "pmVar30 = (mp_limb_t *)(*pcVar35)(uVar12 << 2)" identifier = (cast_expression "(mp_limb_t *)(*pcVar35)(uVar12 << 2)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar35)(uVar12 << 2)" (parenthesized_expression "(*pcVar35)" ( (pointer_expression "*pcVar35" * identifier) )) (argument_list "(uVar12 << 2)" ( (binary_expression "uVar12 << 2" identifier << number_literal) ))))) ;) (expression_statement "puVar13[2] = (uint)pmVar30;" (assignment_expression "puVar13[2] = (uint)pmVar30" (subscript_expression "puVar13[2]" identifier [ number_literal ]) = (cast_expression "(uint)pmVar30" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar25 != 0) {\n    pmVar28 = p_Var14->_mp_d;\n    iVar9 = uVar23 - 1;\n    mVar5 = *pmVar28;\n    pmVar24 = pmVar30;\n    if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }\n    *pmVar30 = mVar5;\n  }" if (parenthesized_expression "(uVar25 != 0)" ( (binary_expression "uVar25 != 0" identifier != number_literal) )) (compound_statement "{\n    pmVar28 = p_Var14->_mp_d;\n    iVar9 = uVar23 - 1;\n    mVar5 = *pmVar28;\n    pmVar24 = pmVar30;\n    if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }\n    *pmVar30 = mVar5;\n  }" { (expression_statement "pmVar28 = p_Var14->_mp_d;" (assignment_expression "pmVar28 = p_Var14->_mp_d" identifier = (field_expression "p_Var14->_mp_d" identifier -> field_identifier)) ;) (expression_statement "iVar9 = uVar23 - 1;" (assignment_expression "iVar9 = uVar23 - 1" identifier = (binary_expression "uVar23 - 1" identifier - number_literal)) ;) (expression_statement "mVar5 = *pmVar28;" (assignment_expression "mVar5 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "pmVar24 = pmVar30;" (assignment_expression "pmVar24 = pmVar30" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);\n      pmVar30 = pmVar30 + (uVar23 - 1);\n    }" { (do_statement "do {\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      } while (iVar9 != 0);" do (compound_statement "{\n        pmVar28 = pmVar28 + 1;\n        *pmVar24 = mVar5;\n        iVar9 = iVar9 + -1;\n        mVar5 = *pmVar28;\n        pmVar24 = pmVar24 + 1;\n      }" { (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar24 = mVar5;" (assignment_expression "*pmVar24 = mVar5" (pointer_expression "*pmVar24" * identifier) = identifier) ;) (expression_statement "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "mVar5 = *pmVar28;" (assignment_expression "mVar5 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "pmVar24 = pmVar24 + 1;" (assignment_expression "pmVar24 = pmVar24 + 1" identifier = (binary_expression "pmVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar30 = pmVar30 + (uVar23 - 1);" (assignment_expression "pmVar30 = pmVar30 + (uVar23 - 1)" identifier = (binary_expression "pmVar30 + (uVar23 - 1)" identifier + (parenthesized_expression "(uVar23 - 1)" ( (binary_expression "uVar23 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*pmVar30 = mVar5;" (assignment_expression "*pmVar30 = mVar5" (pointer_expression "*pmVar30" * identifier) = identifier) ;) })) (expression_statement "puVar13[1] = uVar25;" (assignment_expression "puVar13[1] = uVar25" (subscript_expression "puVar13[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return (int)pmVar30;" return (cast_expression "(int)pmVar30" ( (type_descriptor "int" primitive_type) ) identifier) ;) })))
(translation_unit "undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}\n\n" (function_definition "undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" type_identifier (pointer_declarator "* __gmpz_invert(undefined4 param_1,int param_2,int *param_3)" * (function_declarator "__gmpz_invert(undefined4 param_1,int param_2,int *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,int *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int *unaff_s5;" primitive_type (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "undefined1 *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "undefined1 *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "undefined4 uVar35;" type_identifier identifier ;) (declaration "undefined1 auStack_68 [24];" type_identifier (array_declarator "auStack_68 [24]" identifier [ number_literal ]) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined1 *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar31 = auStack_68;" (assignment_expression "puVar31 = auStack_68" identifier = identifier) ;) (expression_statement "iVar5 = *(int *)(param_2 + 4);" (assignment_expression "iVar5 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "local_24 = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_24 = *(uint **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" * (cast_expression "(uint **)PTR___stack_chk_guard_00097540" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }" if (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar5 = -iVar5;\n  }" { (expression_statement "iVar5 = -iVar5;" (assignment_expression "iVar5 = -iVar5" identifier = (unary_expression "-iVar5" - identifier)) ;) })) (expression_statement "iVar3 = param_3[1];" (assignment_expression "iVar3 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar3 = -iVar3;\n  }" { (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) })) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }" if (parenthesized_expression "(iVar3 <= iVar5)" ( (binary_expression "iVar3 <= iVar5" identifier <= identifier) )) (compound_statement "{\n    iVar3 = iVar5;\n  }" { (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" identifier = identifier) ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = iVar3 * 4;" (assignment_expression "uVar17 = iVar3 * 4" identifier = (binary_expression "iVar3 * 4" identifier * number_literal)) ;) (expression_statement "local_3c = iVar3;" (assignment_expression "local_3c = iVar3" identifier = identifier) ;) (expression_statement "local_30 = iVar3;" (assignment_expression "local_30 = iVar3" identifier = identifier) ;) (if_statement "if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" if (parenthesized_expression "(uVar17 < 0x7f01)" ( (binary_expression "uVar17 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }" { (expression_statement "uVar17 = uVar17 + 7 & 0xfffffff8;" (assignment_expression "uVar17 = uVar17 + 7 & 0xfffffff8" identifier = (binary_expression "uVar17 + 7 & 0xfffffff8" (binary_expression "uVar17 + 7" identifier + number_literal) & number_literal)) ;) (expression_statement "iVar5 = uVar17 * -2;" (assignment_expression "iVar5 = uVar17 * -2" identifier = (binary_expression "uVar17 * -2" identifier * number_literal)) ;) (expression_statement "puVar31 = auStack_68 + iVar5;" (assignment_expression "puVar31 = auStack_68 + iVar5" identifier = (binary_expression "auStack_68 + iVar5" identifier + identifier)) ;) (expression_statement "local_34 = (int *)(&stack0xffffffb0 + -uVar17);" (assignment_expression "local_34 = (int *)(&stack0xffffffb0 + -uVar17)" identifier = (cast_expression "(int *)(&stack0xffffffb0 + -uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb0 + -uVar17)" ( (binary_expression "&stack0xffffffb0 + -uVar17" (pointer_expression "&stack0xffffffb0" & identifier) + (unary_expression "-uVar17" - identifier)) )))) ;) (expression_statement "local_28 = &stack0xffffffb0 + iVar5;" (assignment_expression "local_28 = &stack0xffffffb0 + iVar5" identifier = (binary_expression "&stack0xffffffb0 + iVar5" (pointer_expression "&stack0xffffffb0" & identifier) + identifier)) ;) }) (else_clause "else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" else (compound_statement "{\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" { (expression_statement "unaff_s5 = &local_40;" (assignment_expression "unaff_s5 = &local_40" identifier = (pointer_expression "&local_40" & identifier)) ;) (expression_statement "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" ( identifier , identifier ))))) ;) }))) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int **)(puVar31 + 0x10) = param_3;" (assignment_expression "*(int **)(puVar31 + 0x10) = param_3" (pointer_expression "*(int **)(puVar31 + 0x10)" * (cast_expression "(int **)(puVar31 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);" (call_expression "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2)" (parenthesized_expression "(*(code *)PTR___gmpz_gcdext_000975a4)" ( (pointer_expression "*(code *)PTR___gmpz_gcdext_000975a4" * (cast_expression "(code *)PTR___gmpz_gcdext_000975a4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_3c,&local_30,0,param_2)" ( (pointer_expression "&local_3c" & identifier) , (pointer_expression "&local_30" & identifier) , number_literal , identifier ))) ;) (if_statement "if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "((local_38 == 1) && (*local_34 == 1))" ( (binary_expression "(local_38 == 1) && (*local_34 == 1)" (parenthesized_expression "(local_38 == 1)" ( (binary_expression "local_38 == 1" identifier == number_literal) )) && (parenthesized_expression "(*local_34 == 1)" ( (binary_expression "*local_34 == 1" (pointer_expression "*local_34" * identifier) == number_literal) ))) )) (compound_statement "{\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }" { (if_statement "if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" if (parenthesized_expression "(local_2c < 0)" ( (binary_expression "local_2c < 0" identifier < number_literal) )) (compound_statement "{\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }" { (expression_statement "pcVar29 = (code *)PTR___gmpz_sub_0009752c;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_sub_0009752c" identifier = (cast_expression "(code *)PTR___gmpz_sub_0009752c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" if (parenthesized_expression "(-1 < param_3[1])" ( (binary_expression "-1 < param_3[1]" number_literal < (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" { (expression_statement "pcVar29 = (code *)PTR___gmpz_add_000971f0;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_add_000971f0" identifier = (cast_expression "(code *)PTR___gmpz_add_000971f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "piVar13 = param_3;" (assignment_expression "piVar13 = param_3" identifier = identifier) ;) (expression_statement "(*pcVar29)(param_1);" (call_expression "(*pcVar29)(param_1)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" else (compound_statement "{\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" { (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" ( (pointer_expression "*(code *)PTR___gmpz_set_000974b8" * (cast_expression "(code *)PTR___gmpz_set_000974b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" identifier = (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" else (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != 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_24 == *(uint **)puVar2) {\n    return puVar4;\n  }" if (parenthesized_expression "(local_24 == *(uint **)puVar2)" ( (binary_expression "local_24 == *(uint **)puVar2" identifier == (pointer_expression "*(uint **)puVar2" * (cast_expression "(uint **)puVar2" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "uVar35 = 0x2aaec;" (assignment_expression "uVar35 = 0x2aaec" identifier = number_literal) ;) (expression_statement "puVar7 = local_24;" (assignment_expression "puVar7 = local_24" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = 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 "puVar30 = puVar28 + 0x74550;" (assignment_expression "puVar30 = puVar28 + 0x74550" identifier = (binary_expression "puVar28 + 0x74550" identifier + number_literal)) ;) (expression_statement "puVar34 = puVar31 + -0x50;" (assignment_expression "puVar34 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "puVar32 = puVar31 + -0x50;" (assignment_expression "puVar32 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" * (cast_expression "(int **)(puVar31 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar31 + -0x24) = iVar3;" (assignment_expression "*(int *)(puVar31 + -0x24) = iVar3" (pointer_expression "*(int *)(puVar31 + -0x24)" * (cast_expression "(int *)(puVar31 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar25 = *(int **)(puVar28 + 0x6ca50);" (assignment_expression "piVar25 = *(int **)(puVar28 + 0x6ca50)" identifier = (pointer_expression "*(int **)(puVar28 + 0x6ca50)" * (cast_expression "(int **)(puVar28 + 0x6ca50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6ca50)" ( (binary_expression "puVar28 + 0x6ca50" identifier + number_literal) ))))) ;) (expression_statement "piVar20 = (int *)piVar9[1];" (assignment_expression "piVar20 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0xc) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar31 + -0xc) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar31 + -0xc)" * (cast_expression "(undefined4 *)(puVar31 + -0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar31 + -0x10)" * (cast_expression "(undefined4 *)(puVar31 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar31 + -0x1c)" * (cast_expression "(int **)(puVar31 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x20) = param_1;" (assignment_expression "*(undefined4 *)(puVar31 + -0x20) = param_1" (pointer_expression "*(undefined4 *)(puVar31 + -0x20)" * (cast_expression "(undefined4 *)(puVar31 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x28) = &local_30;" (assignment_expression "*(int **)(puVar31 + -0x28) = &local_30" (pointer_expression "*(int **)(puVar31 + -0x28)" * (cast_expression "(int **)(puVar31 + -0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar31 + -4)" * (cast_expression "(undefined4 *)(puVar31 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x18) = puVar2;" (assignment_expression "*(undefined **)(puVar31 + -0x18) = puVar2" (pointer_expression "*(undefined **)(puVar31 + -0x18)" * (cast_expression "(undefined **)(puVar31 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x40) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x40) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" * (cast_expression "(undefined4 *)(puVar31 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar26 = (int *)piVar13[1];" (assignment_expression "piVar26 = (int *)piVar13[1]" identifier = (cast_expression "(int *)piVar13[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar22 = (uint *)piVar9[2];" (assignment_expression "puVar22 = (uint *)piVar9[2]" identifier = (cast_expression "(uint *)piVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar18 = (uint *)piVar13[2];" (assignment_expression "puVar18 = (uint *)piVar13[2]" identifier = (cast_expression "(uint *)piVar13[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar13[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" identifier = (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar31 + -0x2c) = *piVar25;" (assignment_expression "*(int *)(puVar31 + -0x2c) = *piVar25" (pointer_expression "*(int *)(puVar31 + -0x2c)" * (cast_expression "(int *)(puVar31 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar25" * identifier)) ;) (if_statement "if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" if (parenthesized_expression "((int)piVar20 < 0)" ( (binary_expression "(int)piVar20 < 0" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }" { (expression_statement "piVar15 = piVar13;" (assignment_expression "piVar15 = piVar13" identifier = identifier) ;) (expression_statement "puVar8 = puVar22;" (assignment_expression "puVar8 = puVar22" identifier = identifier) ;) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" identifier = identifier) ;) (expression_statement "puVar23 = puVar18;" (assignment_expression "puVar23 = puVar18" identifier = identifier) ;) (expression_statement "piVar27 = piVar20;" (assignment_expression "piVar27 = piVar20" identifier = identifier) ;) (if_statement "if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" if (parenthesized_expression "((int)piVar26 < 0)" ( (binary_expression "(int)piVar26 < 0" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" { (if_statement "if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }" if (parenthesized_expression "((int)piVar20 < (int)piVar26)" ( (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        piVar20 = piVar26;\n      }" { (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" identifier = identifier) ;) })) (expression_statement "iVar5 = -(int)piVar20;" (assignment_expression "iVar5 = -(int)piVar20" identifier = (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)((int)piVar20 * -8);" (assignment_expression "piVar9 = (int *)((int)piVar20 * -8)" identifier = (cast_expression "(int *)((int)piVar20 * -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 * -8)" ( (binary_expression "(int)piVar20 * -8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" if (parenthesized_expression "(piVar9 < (int *)0x7f01)" ( (binary_expression "piVar9 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }" { (expression_statement "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;" (assignment_expression "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50" identifier = (binary_expression "puVar31 + (int)piVar20 * 8 + -0x50" (binary_expression "puVar31 + (int)piVar20 * 8" identifier + (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);" (assignment_expression "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" identifier = (cast_expression "(uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + (int)piVar20 * 8 + -0x40)" ( (binary_expression "puVar31 + (int)piVar20 * 8 + -0x40" (binary_expression "puVar31 + (int)piVar20 * 8" identifier + (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) ;) }) (else_clause "else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" else (compound_statement "{\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" { (expression_statement "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);" (assignment_expression "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" identifier = (cast_expression "(uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" (parenthesized_expression "(**(code **)(puVar28 + 0x6c800))" ( (pointer_expression "**(code **)(puVar28 + 0x6c800)" * (pointer_expression "*(code **)(puVar28 + 0x6c800)" * (cast_expression "(code **)(puVar28 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6c800)" ( (binary_expression "puVar28 + 0x6c800" identifier + number_literal) ))))) )) (argument_list "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar17 = *puVar22;" (assignment_expression "uVar17 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "uVar19 = *puVar18;" (assignment_expression "uVar19 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar23 = puVar8 + -(int)piVar20;" (assignment_expression "puVar23 = puVar8 + -(int)piVar20" identifier = (binary_expression "puVar8 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "uVar16 = uVar19 - 1;" (assignment_expression "uVar16 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (expression_statement "*puVar8 = uVar17 - 1;" (assignment_expression "*puVar8 = uVar17 - 1" (pointer_expression "*puVar8" * identifier) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }" { (if_statement "if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }" { (labeled_statement "LAB_0002b274:\n          *puVar23 = uVar16;" statement_identifier : (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;)) (if_statement "if (uVar19 == 0) goto LAB_0002b088;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) }) (else_clause "else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" else (compound_statement "{\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" { (expression_statement "uVar17 = puVar22[1];" (assignment_expression "uVar17 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar8[1] = uVar17 - 1;" (assignment_expression "puVar8[1] = uVar17 - 1" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }" { (expression_statement "puVar11 = puVar22 + 2;" (assignment_expression "puVar11 = puVar22 + 2" identifier = (binary_expression "puVar22 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (do_statement "do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);" do (compound_statement "{\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            }" { (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b038;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;)) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" identifier = (cast_expression "(int *)*puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n            iVar3 = 2;\n          }" else (compound_statement "{\n            iVar3 = 2;\n          }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" if (parenthesized_expression "((puVar8 != puVar22) && (iVar3 < iVar5))" ( (binary_expression "(puVar8 != puVar22) && (iVar3 < iVar5)" (parenthesized_expression "(puVar8 != puVar22)" ( (binary_expression "puVar8 != puVar22" identifier != identifier) )) && (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))) )) (compound_statement "{\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" { (expression_statement "puVar11 = puVar22 + iVar3;" (assignment_expression "puVar11 = puVar22 + iVar3" identifier = (binary_expression "puVar22 + iVar3" identifier + identifier)) ;) (expression_statement "puVar22 = puVar22 + -(int)piVar20;" (assignment_expression "puVar22 = puVar22 + -(int)piVar20" identifier = (binary_expression "puVar22 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar10 = puVar8 + iVar3;" (assignment_expression "puVar10 = puVar8 + iVar3" identifier = (binary_expression "puVar8 + iVar3" identifier + identifier)) ;) (do_statement "do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);" do (compound_statement "{\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            }" { (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar11)" ( (binary_expression "puVar22 != puVar11" identifier != identifier) )) ;) })) (labeled_statement "LAB_0002b038:\n          *puVar23 = uVar16;" statement_identifier : (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;)) (if_statement "if (uVar19 == 0) goto LAB_0002b040;" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b040;" goto statement_identifier ;)) }))) (labeled_statement "LAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" statement_identifier : (if_statement "if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" if (parenthesized_expression "((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff))" ( (binary_expression "(puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)" (parenthesized_expression "(puVar18 != puVar23)" ( (binary_expression "puVar18 != puVar23" identifier != identifier) )) && (parenthesized_expression "(piVar20 != (int *)0xffffffff)" ( (binary_expression "piVar20 != (int *)0xffffffff" identifier != (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "puVar10 = puVar23;" (assignment_expression "puVar10 = puVar23" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" do (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar18;" (assignment_expression "piVar9 = (int *)*puVar18" identifier = (cast_expression "(int *)*puVar18" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) )) ;) }))) }) (else_clause "else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" else (compound_statement "{\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" { (if_statement "if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" if (parenthesized_expression "(puVar8 != puVar22)" ( (binary_expression "puVar8 != puVar22" identifier != identifier) )) (compound_statement "{\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" { (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b274;" goto statement_identifier ;)) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" do (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar22;" (assignment_expression "piVar9 = (int *)*puVar22" identifier = (cast_expression "(int *)*puVar22" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) )) ;) (goto_statement "goto LAB_0002b038;" goto statement_identifier ;) })) (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" * identifier) = identifier) ;) (if_statement "if (uVar19 != 0) goto LAB_0002b27c;" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002b27c;" goto statement_identifier ;)) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;" if (parenthesized_expression "(piVar20 == (int *)0xffffffff)" ( (binary_expression "piVar20 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (labeled_statement "LAB_0002b040:\n        uVar17 = puVar18[1];" statement_identifier : (expression_statement "uVar17 = puVar18[1];" (assignment_expression "uVar17 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;)) (expression_statement "puVar23[1] = uVar17 - 1;" (assignment_expression "puVar23[1] = uVar17 - 1" (subscript_expression "puVar23[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }" { (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "puVar10 = puVar23 + 2;" (assignment_expression "puVar10 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) (do_statement "do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);" do (compound_statement "{\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" identifier = (cast_expression "(int *)(uint)(iVar3 < iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b088;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b088;" goto statement_identifier ;)) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" identifier = (cast_expression "(int *)*puVar11" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n          iVar3 = 2;\n        }" else (compound_statement "{\n          iVar3 = 2;\n        }" { (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" if (parenthesized_expression "((puVar18 != puVar23) && (iVar3 < iVar5))" ( (binary_expression "(puVar18 != puVar23) && (iVar3 < iVar5)" (parenthesized_expression "(puVar18 != puVar23)" ( (binary_expression "puVar18 != puVar23" identifier != identifier) )) && (parenthesized_expression "(iVar3 < iVar5)" ( (binary_expression "iVar3 < iVar5" identifier < identifier) ))) )) (compound_statement "{\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" { (expression_statement "puVar11 = puVar18 + iVar3;" (assignment_expression "puVar11 = puVar18 + iVar3" identifier = (binary_expression "puVar18 + iVar3" identifier + identifier)) ;) (expression_statement "puVar18 = puVar18 + -(int)piVar20;" (assignment_expression "puVar18 = puVar18 + -(int)piVar20" identifier = (binary_expression "puVar18 + -(int)piVar20" identifier + (unary_expression "-(int)piVar20" - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "puVar10 = puVar23 + iVar3;" (assignment_expression "puVar10 = puVar23 + iVar3" identifier = (binary_expression "puVar23 + iVar3" identifier + identifier)) ;) (do_statement "do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);" do (compound_statement "{\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          }" { (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" * identifier) = identifier) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar18 != puVar11)" ( (binary_expression "puVar18 != puVar11" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_0002b088:\n      uVar17 = ~(uint)piVar20;" statement_identifier : (expression_statement "uVar17 = ~(uint)piVar20;" (assignment_expression "uVar17 = ~(uint)piVar20" identifier = (unary_expression "~(uint)piVar20" ~ (cast_expression "(uint)piVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;)) (expression_statement "puVar11 = puVar8 + uVar17;" (assignment_expression "puVar11 = puVar8 + uVar17" identifier = (binary_expression "puVar8 + uVar17" identifier + identifier)) ;) (expression_statement "puVar10 = puVar23 + uVar17;" (assignment_expression "puVar10 = puVar23 + uVar17" identifier = (binary_expression "puVar23 + uVar17" identifier + identifier)) ;) (labeled_statement "LAB_0002b098:\n      uVar19 = *puVar11;" statement_identifier : (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;)) (expression_statement "puVar11 = puVar11 + -1;" (assignment_expression "puVar11 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (if_statement "if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;" if (parenthesized_expression "((uVar19 & *puVar10) == 0)" ( (binary_expression "(uVar19 & *puVar10) == 0" (parenthesized_expression "(uVar19 & *puVar10)" ( (binary_expression "uVar19 & *puVar10" identifier & (pointer_expression "*puVar10" * identifier)) )) == number_literal) )) (goto_statement "goto code_r0x0002b0ac;" goto statement_identifier ;)) (expression_statement "puVar18 = (uint *)(uVar17 + 1);" (assignment_expression "puVar18 = (uint *)(uVar17 + 1)" identifier = (cast_expression "(uint *)(uVar17 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 + 1)" ( (binary_expression "uVar17 + 1" identifier + number_literal) )))) ;) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7a84)" * (cast_expression "(code **)(puVar30 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a84)" ( (binary_expression "puVar30 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" if (parenthesized_expression "((int)puVar18 < (int)*puVar7)" ( (binary_expression "(int)puVar18 < (int)*puVar7" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier))) )) (compound_statement "{\n        piVar9 = (int *)puVar7[2];\n      }" { (expression_statement "piVar9 = (int *)puVar7[2];" (assignment_expression "piVar9 = (int *)puVar7[2]" identifier = (cast_expression "(int *)puVar7[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" else (compound_statement "{\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" { (expression_statement "*(uint **)(puVar31 + -0x34) = puVar8;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar8" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);" (assignment_expression "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2)" identifier = (cast_expression "(int *)(*pcVar29)(puVar7,uVar17 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(puVar7,uVar17 + 2)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar7,uVar17 + 2)" ( identifier , (binary_expression "uVar17 + 2" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = *(uint **)(puVar31 + -0x34);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);" do (compound_statement "{\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      }" { (expression_statement "puVar10 = (uint *)((int)puVar8 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar8 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar8 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar8 + iVar5)" ( (binary_expression "(int)puVar8 + iVar5" (cast_expression "(int)puVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar14 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar14 = (uint *)((int)puVar23 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar23 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + iVar5)" ( (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar11 = (uint *)((int)piVar9 + iVar5);" (assignment_expression "puVar11 = (uint *)((int)piVar9 + iVar5)" identifier = (cast_expression "(uint *)((int)piVar9 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + iVar5)" ( (binary_expression "(int)piVar9 + iVar5" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "*puVar11 = *puVar10 & *puVar14;" (assignment_expression "*puVar11 = *puVar10 & *puVar14" (pointer_expression "*puVar11" * identifier) = (binary_expression "*puVar10 & *puVar14" (pointer_expression "*puVar10" * identifier) & (pointer_expression "*puVar14" * identifier))) ;) }) while (parenthesized_expression "((int)puVar18 * 4 != iVar5)" ( (binary_expression "(int)puVar18 * 4 != iVar5" (binary_expression "(int)puVar18 * 4" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) != identifier) )) ;) (expression_statement "piVar9[(int)puVar18] = 0;" (assignment_expression "piVar9[(int)puVar18] = 0" (subscript_expression "piVar9[(int)puVar18]" identifier [ (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) ]) = number_literal) ;) (expression_statement "piVar13 = piVar9;" (assignment_expression "piVar13 = piVar9" identifier = identifier) ;) (do_statement "do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);" do (compound_statement "{\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      }" { (expression_statement "iVar5 = *piVar13;" (assignment_expression "iVar5 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "*piVar13 = iVar5 + 1;" (assignment_expression "*piVar13 = iVar5 + 1" (pointer_expression "*piVar13" * identifier) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 + 1 == 0)" ( (binary_expression "iVar5 + 1 == 0" (binary_expression "iVar5 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);" (assignment_expression "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18])" identifier = (cast_expression "(int *)((int)puVar18 + piVar9[(int)puVar18])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + piVar9[(int)puVar18])" ( (binary_expression "(int)puVar18 + piVar9[(int)puVar18]" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "piVar9[(int)puVar18]" identifier [ (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) ])) )))) ;) (expression_statement "piVar21 = (int *)-(int)piVar9;" (assignment_expression "piVar21 = (int *)-(int)piVar9" identifier = (cast_expression "(int *)-(int)piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar9" - (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (goto_statement "goto LAB_0002b0c0;" goto statement_identifier ;) })) }) (else_clause "else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" else (compound_statement "{\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" { (expression_statement "piVar15 = piVar9;" (assignment_expression "piVar15 = piVar9" identifier = identifier) ;) (expression_statement "puVar8 = puVar18;" (assignment_expression "puVar8 = puVar18" identifier = identifier) ;) (expression_statement "piVar21 = piVar20;" (assignment_expression "piVar21 = piVar20" identifier = identifier) ;) (expression_statement "puVar23 = puVar22;" (assignment_expression "puVar23 = puVar22" identifier = identifier) ;) (expression_statement "piVar27 = piVar26;" (assignment_expression "piVar27 = piVar26" identifier = identifier) ;) (if_statement "if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" if (parenthesized_expression "(-1 < (int)piVar26)" ( (binary_expression "-1 < (int)piVar26" number_literal < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" { (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (if_statement "if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" if (parenthesized_expression "((int)piVar20 < (int)piVar26)" ( (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }" { (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6cacc)" * (cast_expression "(code **)(puVar28 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6cacc)" ( (binary_expression "puVar28 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar7 < (int)piVar26)" ( (binary_expression "(int)*puVar7 < (int)piVar26" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" { (expression_statement "*(int **)(puVar31 + -0x34) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = piVar26;" (assignment_expression "piVar9 = piVar26" identifier = identifier) ;) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" identifier = (cast_expression "(uint *)(*pcVar29)()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" if (parenthesized_expression "(puVar24 != puVar18)" ( (binary_expression "puVar24 != puVar18" identifier != identifier) )) (compound_statement "{\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" { (expression_statement "puVar10 = puVar18 + (int)piVar20;" (assignment_expression "puVar10 = puVar18 + (int)piVar20" identifier = (binary_expression "puVar18 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar20)" identifier = (binary_expression "(int)piVar26 + (-1 - (int)piVar20)" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar20)" ( (binary_expression "-1 - (int)piVar20" number_literal - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar11 = puVar24 + (int)piVar20;" (assignment_expression "puVar11 = puVar24 + (int)piVar20" identifier = (binary_expression "puVar24 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" { (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" do (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20)" identifier = (binary_expression "puVar11 + (int)piVar26 + (-1 - (int)piVar20)" (binary_expression "puVar11 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar20)" ( (binary_expression "-1 - (int)piVar20" number_literal - (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" if (parenthesized_expression "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" { (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);" do (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" { (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar22 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + iVar5)" ( (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" * identifier) | (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)piVar20 << 2 != iVar5)" ( (binary_expression "(int)piVar20 << 2 != iVar5" (binary_expression "(int)piVar20 << 2" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (expression_statement "puVar7[1] = (uint)piVar26;" (assignment_expression "puVar7[1] = (uint)piVar26" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar26" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" else (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" { (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6cacc)" * (cast_expression "(code **)(puVar28 + 0x6cacc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6cacc)" ( (binary_expression "puVar28 + 0x6cacc" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar7 < (int)piVar20)" ( (binary_expression "(int)*puVar7 < (int)piVar20" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" { (expression_statement "*(int **)(puVar31 + -0x34) = piVar13;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar13" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar9 = piVar20;" (assignment_expression "piVar9 = piVar20" identifier = identifier) ;) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" identifier = (cast_expression "(uint *)(*pcVar29)()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" if (parenthesized_expression "((puVar24 != puVar22) && (piVar20 != piVar26))" ( (binary_expression "(puVar24 != puVar22) && (piVar20 != piVar26)" (parenthesized_expression "(puVar24 != puVar22)" ( (binary_expression "puVar24 != puVar22" identifier != identifier) )) && (parenthesized_expression "(piVar20 != piVar26)" ( (binary_expression "piVar20 != piVar26" identifier != identifier) ))) )) (compound_statement "{\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" { (expression_statement "puVar10 = puVar22 + (int)piVar26;" (assignment_expression "puVar10 = puVar22 + (int)piVar26" identifier = (binary_expression "puVar22 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "iVar5 = (int)piVar20 + (-1 - (int)piVar26)" identifier = (binary_expression "(int)piVar20 + (-1 - (int)piVar26)" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar26)" ( (binary_expression "-1 - (int)piVar26" number_literal - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar11 = puVar24 + (int)piVar26;" (assignment_expression "puVar11 = puVar24 + (int)piVar26" identifier = (binary_expression "puVar24 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" { (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" do (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" { (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26)" identifier = (binary_expression "puVar11 + (int)piVar20 + (-1 - (int)piVar26)" (binary_expression "puVar11 + (int)piVar20" identifier + (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar26)" ( (binary_expression "-1 - (int)piVar26" number_literal - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" if (parenthesized_expression "(piVar26 != (int *)0x0)" ( (binary_expression "piVar26 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" { (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);" do (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" { (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar22 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + iVar5)" ( (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" * identifier) | (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar5 != (int)piVar26 << 2)" ( (binary_expression "iVar5 != (int)piVar26 << 2" identifier != (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) )) ;) })) (expression_statement "puVar7[1] = (uint)piVar20;" (assignment_expression "puVar7[1] = (uint)piVar20" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar20" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "piVar26 = piVar20;" (assignment_expression "piVar26 = piVar20" identifier = identifier) ;) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" identifier = (binary_expression "puVar31 + -0x50" identifier + number_literal)) ;) }))) (goto_statement "goto LAB_0002ac9c;" goto statement_identifier ;) })) }))) (expression_statement "piVar9 = (int *)-(int)piVar27;" (assignment_expression "piVar9 = (int *)-(int)piVar27" identifier = (cast_expression "(int *)-(int)piVar27" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar27" - (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar13 = (int *)((int)piVar27 * -4);" (assignment_expression "piVar13 = (int *)((int)piVar27 * -4)" identifier = (cast_expression "(int *)((int)piVar27 * -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 * -4)" ( (binary_expression "(int)piVar27 * -4" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6c800);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6c800)" identifier = (pointer_expression "*(code **)(puVar28 + 0x6c800)" * (cast_expression "(code **)(puVar28 + 0x6c800)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x6c800)" ( (binary_expression "puVar28 + 0x6c800" identifier + number_literal) ))))) ;) (if_statement "if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" if (parenthesized_expression "(piVar13 < (int *)0x7f01)" ( (binary_expression "piVar13 < (int *)0x7f01" identifier < (cast_expression "(int *)0x7f01" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }" { (expression_statement "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8)" identifier = (cast_expression "(int *)((int)piVar13 + 7U & 0xfffffff8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar13 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 + 7U" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + -(int)piVar13 + -0x50;" (assignment_expression "puVar32 = puVar31 + -(int)piVar13 + -0x50" identifier = (binary_expression "puVar31 + -(int)piVar13 + -0x50" (binary_expression "puVar31 + -(int)piVar13" identifier + (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal)) ;) (expression_statement "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);" (assignment_expression "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40)" identifier = (cast_expression "(uint *)(puVar31 + -(int)piVar13 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -(int)piVar13 + -0x40)" ( (binary_expression "puVar31 + -(int)piVar13 + -0x40" (binary_expression "puVar31 + -(int)piVar13" identifier + (unary_expression "-(int)piVar13" - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier))) + number_literal) )))) ;) }) (else_clause "else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" else (compound_statement "{\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" { (expression_statement "*(int **)(puVar31 + -0x38) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x38) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x38)" * (cast_expression "(int **)(puVar31 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);" (assignment_expression "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar29)(puVar31 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(puVar31 + -0x30)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = *(int **)(puVar31 + -0x38);" (assignment_expression "piVar9 = *(int **)(puVar31 + -0x38)" identifier = (pointer_expression "*(int **)(puVar31 + -0x38)" * (cast_expression "(int **)(puVar31 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = *(int **)(puVar31 + -0x34);" (assignment_expression "piVar15 = *(int **)(puVar31 + -0x34)" identifier = (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar17 = *puVar8;" (assignment_expression "uVar17 = *puVar8" identifier = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "*puVar18 = uVar17 - 1;" (assignment_expression "*puVar18 = uVar17 - 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }" { (if_statement "if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" if (parenthesized_expression "(piVar27 != (int *)0xffffffff)" ( (binary_expression "piVar27 != (int *)0xffffffff" identifier != (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" { (expression_statement "uVar17 = puVar8[1];" (assignment_expression "uVar17 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[1] = uVar17 - 1;" (assignment_expression "puVar18[1] = uVar17 - 1" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }" { (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" identifier = (binary_expression "puVar8 + 2" identifier + number_literal)) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "puVar22 = puVar18 + 2;" (assignment_expression "puVar22 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (do_statement "do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);" do (compound_statement "{\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        }" { (expression_statement "piVar13 = (int *)(uint)(iVar5 < (int)piVar9);" (assignment_expression "piVar13 = (int *)(uint)(iVar5 < (int)piVar9)" identifier = (cast_expression "(int *)(uint)(iVar5 < (int)piVar9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar5 < (int)piVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (piVar13 == (int *)0x0) goto LAB_0002abf4;" if (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (expression_statement "piVar13 = (int *)*puVar10;" (assignment_expression "piVar13 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = (int)piVar13 - 1;" (assignment_expression "*puVar22 = (int)piVar13 - 1" (pointer_expression "*puVar22" * identifier) = (binary_expression "(int)piVar13 - 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n        iVar5 = 2;\n      }" else (compound_statement "{\n        iVar5 = 2;\n      }" { (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" if (parenthesized_expression "((puVar8 != puVar18) && (iVar5 < (int)piVar9))" ( (binary_expression "(puVar8 != puVar18) && (iVar5 < (int)piVar9)" (parenthesized_expression "(puVar8 != puVar18)" ( (binary_expression "puVar8 != puVar18" identifier != identifier) )) && (parenthesized_expression "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" { (expression_statement "puVar10 = puVar8 + iVar5;" (assignment_expression "puVar10 = puVar8 + iVar5" identifier = (binary_expression "puVar8 + iVar5" identifier + identifier)) ;) (expression_statement "puVar22 = puVar18 + iVar5;" (assignment_expression "puVar22 = puVar18 + iVar5" identifier = (binary_expression "puVar18 + iVar5" identifier + identifier)) ;) (do_statement "do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);" do (compound_statement "{\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        }" { (expression_statement "uVar17 = *puVar10;" (assignment_expression "uVar17 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = uVar17;" (assignment_expression "*puVar22 = uVar17" (pointer_expression "*puVar22" * identifier) = identifier) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 + (int)piVar9 != puVar10)" ( (binary_expression "puVar8 + (int)piVar9 != puVar10" (binary_expression "puVar8 + (int)piVar9" identifier + (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) (labeled_statement "LAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" statement_identifier : (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" identifier = (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[~(uint)piVar27] == 0)" ( (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" identifier [ (unary_expression "~(uint)piVar27" ~ (cast_expression "(uint)piVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;)) (if_statement "if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;" if (parenthesized_expression "((int)piVar9 <= (int)*puVar7)" ( (binary_expression "(int)piVar9 <= (int)*puVar7" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier))) )) (goto_statement "goto LAB_0002ac14;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);" statement_identifier : (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7a84)" * (cast_expression "(code **)(puVar30 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a84)" ( (binary_expression "puVar30 + -0x7a84" identifier + number_literal) ))))) ;)) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" * (cast_expression "(int **)(puVar31 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar29)(puVar7);" (call_expression "(*pcVar29)(puVar7)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" identifier = (cast_expression "(uint *)puVar7[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;" if (parenthesized_expression "((int)piVar21 < (int)piVar26)" ( (binary_expression "(int)piVar21 < (int)piVar26" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);" statement_identifier : (expression_statement "piVar21 = (int *)((int)piVar26 - 1);" (assignment_expression "piVar21 = (int *)((int)piVar26 - 1)" identifier = (cast_expression "(int *)((int)piVar26 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar26 - 1)" ( (binary_expression "(int)piVar26 - 1" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;)) (if_statement "if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" if (parenthesized_expression "(piVar26 != (int *)0x0)" ( (binary_expression "piVar26 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" { (if_statement "if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" if (parenthesized_expression "((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0)" ( (binary_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0" (parenthesized_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21])" ( (binary_expression "~puVar23[(int)piVar21] & puVar18[(int)piVar21]" (unary_expression "~puVar23[(int)piVar21]" ~ (subscript_expression "puVar23[(int)piVar21]" identifier [ (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) ])) & (subscript_expression "puVar18[(int)piVar21]" identifier [ (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) ])) )) == number_literal) )) (compound_statement "{\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" { (expression_statement "puVar8 = puVar23 + (int)piVar26;" (assignment_expression "puVar8 = puVar23 + (int)piVar26" identifier = (binary_expression "puVar23 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar22 = puVar18 + (int)piVar26;" (assignment_expression "puVar22 = puVar18 + (int)piVar26" identifier = (binary_expression "puVar18 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = piVar21;" (assignment_expression "piVar9 = piVar21" identifier = identifier) ;) (do_statement "do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);" do (compound_statement "{\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        }" { (expression_statement "piVar21 = piVar9;" (assignment_expression "piVar21 = piVar9" identifier = identifier) ;) (expression_statement "piVar9 = (int *)((int)piVar21 - 1);" (assignment_expression "piVar9 = (int *)((int)piVar21 - 1)" identifier = (cast_expression "(int *)((int)piVar21 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 - 1)" ( (binary_expression "(int)piVar21 - 1" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (if_statement "if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;" if (parenthesized_expression "(piVar9 == (int *)0xffffffff)" ( (binary_expression "piVar9 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ac84;" goto statement_identifier ;)) (expression_statement "puVar10 = puVar8 + -2;" (assignment_expression "puVar10 = puVar8 + -2" identifier = (binary_expression "puVar8 + -2" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar22 + -2;" (assignment_expression "puVar11 = puVar22 + -2" identifier = (binary_expression "puVar22 + -2" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + -1;" (assignment_expression "puVar22 = puVar22 + -1" identifier = (binary_expression "puVar22 + -1" identifier + number_literal)) ;) (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" identifier = identifier) ;) }) while (parenthesized_expression "((~*puVar10 & *puVar11) == 0)" ( (binary_expression "(~*puVar10 & *puVar11) == 0" (parenthesized_expression "(~*puVar10 & *puVar11)" ( (binary_expression "~*puVar10 & *puVar11" (unary_expression "~*puVar10" ~ (pointer_expression "*puVar10" * identifier)) & (pointer_expression "*puVar11" * identifier)) )) == number_literal) )) ;) })) (expression_statement "iVar3 = (int)piVar26 << 2;" (assignment_expression "iVar3 = (int)piVar26 << 2" identifier = (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" identifier = identifier) ;) (labeled_statement "LAB_0002adb0:\n      iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (do_statement "do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);" do (compound_statement "{\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      }" { (expression_statement "puVar22 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar22 = (uint *)((int)puVar23 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar23 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + iVar5)" ( (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar5)" ( (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar5)" ( (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" identifier = (binary_expression "iVar5 + 4" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" identifier = (cast_expression "(int *)*puVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (expression_statement "*puVar8 = ~*puVar22 & (uint)piVar9;" (assignment_expression "*puVar8 = ~*puVar22 & (uint)piVar9" (pointer_expression "*puVar8" * identifier) = (binary_expression "~*puVar22 & (uint)piVar9" (unary_expression "~*puVar22" ~ (pointer_expression "*puVar22" * identifier)) & (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(iVar3 != iVar5)" ( (binary_expression "iVar3 != iVar5" identifier != identifier) )) ;) (goto_statement "goto LAB_0002addc;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;" statement_identifier : (expression_statement "puVar18 = (uint *)0xffffffff;" (assignment_expression "puVar18 = (uint *)0xffffffff" identifier = (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;) }) (else_clause "else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" else (compound_statement "{\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" { (if_statement "if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;" if (parenthesized_expression "((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))" ( (binary_expression "(puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" (parenthesized_expression "(puVar8 == puVar18)" ( (binary_expression "puVar8 == puVar18" identifier == identifier) )) || (parenthesized_expression "(iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" ( (comma_expression "iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "iVar5 = 1" identifier = number_literal) , (comma_expression "puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "puVar22 = puVar18" identifier = identifier) , (binary_expression "piVar27 == (int *)0xffffffff" identifier == (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_0002abf4;" goto statement_identifier ;)) (do_statement "do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);" do (compound_statement "{\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    }" { (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)*puVar8;" (assignment_expression "piVar13 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "puVar22[1] = (uint)piVar13;" (assignment_expression "puVar22[1] = (uint)piVar13" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 < (int)piVar9)" ( (binary_expression "iVar5 < (int)piVar9" identifier < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" identifier = (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" ( (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[~(uint)piVar27] == 0)" ( (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" identifier [ (unary_expression "~(uint)piVar27" ~ (cast_expression "(uint)piVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) == number_literal) )))) )))) ;) (if_statement "if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;" if (parenthesized_expression "((int)*puVar7 < (int)piVar9)" ( (binary_expression "(int)*puVar7 < (int)piVar9" (cast_expression "(int)*puVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar7" * identifier)) < (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ad34;" goto statement_identifier ;)) (labeled_statement "LAB_0002ac14:\n    piVar9 = piVar13;" statement_identifier : (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" identifier = identifier) ;)) (if_statement "if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;" if (parenthesized_expression "((int)piVar26 <= (int)piVar21)" ( (binary_expression "(int)piVar26 <= (int)piVar21" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002ac20;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;" statement_identifier : (expression_statement "iVar3 = (int)piVar21 * 4;" (assignment_expression "iVar3 = (int)piVar21 * 4" identifier = (binary_expression "(int)piVar21 * 4" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;)) (expression_statement "puVar8 = puVar18 + (int)piVar21;" (assignment_expression "puVar8 = puVar18 + (int)piVar21" identifier = (binary_expression "puVar18 + (int)piVar21" identifier + (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar21)" identifier = (binary_expression "(int)piVar26 + (-1 - (int)piVar21)" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)piVar21)" ( (binary_expression "-1 - (int)piVar21" number_literal - (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = puVar24 + (int)piVar21;" (assignment_expression "puVar10 = puVar24 + (int)piVar21" identifier = (binary_expression "puVar24 + (int)piVar21" identifier + (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar22 = puVar10;" (assignment_expression "puVar22 = puVar10" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" { (do_statement "do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      }" { (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = (uint)piVar9;" (assignment_expression "*puVar22 = (uint)piVar9" (pointer_expression "*puVar22" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" identifier = (cast_expression "(int *)*puVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21)" identifier = (binary_expression "puVar10 + (int)piVar26 + (-1 - (int)piVar21)" (binary_expression "puVar10 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)) + (parenthesized_expression "(-1 - (int)piVar21)" ( (binary_expression "-1 - (int)piVar21" number_literal - (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" * identifier) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (piVar21 != (int *)0x0) goto LAB_0002adb0;" if (parenthesized_expression "(piVar21 != (int *)0x0)" ( (binary_expression "piVar21 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002adb0;" goto statement_identifier ;)) (labeled_statement "LAB_0002addc:\n    uVar17 = *puVar24;" statement_identifier : (expression_statement "uVar17 = *puVar24;" (assignment_expression "uVar17 = *puVar24" identifier = (pointer_expression "*puVar24" * identifier)) ;)) (expression_statement "*puVar24 = uVar17 + 1;" (assignment_expression "*puVar24 = uVar17 + 1" (pointer_expression "*puVar24" * identifier) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" if (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" { (if_statement "if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" if (parenthesized_expression "(piVar26 == (int *)0x1)" ( (binary_expression "piVar26 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" { (labeled_statement "LAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;" statement_identifier : (expression_statement "puVar18 = (uint *)~(uint)piVar26;" (assignment_expression "puVar18 = (uint *)~(uint)piVar26" identifier = (cast_expression "(uint *)~(uint)piVar26" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "~(uint)piVar26" ~ (cast_expression "(uint)piVar26" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;)) (expression_statement "puVar24 = puVar24 + (int)piVar26;" (assignment_expression "puVar24 = puVar24 + (int)piVar26" identifier = (binary_expression "puVar24 + (int)piVar26" identifier + (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;) (goto_statement "goto LAB_0002ac90;" goto statement_identifier ;) })) (expression_statement "uVar17 = puVar24[1];" (assignment_expression "uVar17 = puVar24[1]" identifier = (subscript_expression "puVar24[1]" identifier [ number_literal ])) ;) (expression_statement "puVar24[1] = uVar17 + 1;" (assignment_expression "puVar24[1] = uVar17 + 1" (subscript_expression "puVar24[1]" identifier [ number_literal ]) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (if_statement "if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" if (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" { (expression_statement "piVar13 = (int *)0x2;" (assignment_expression "piVar13 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar18 = puVar24 + 2;" (assignment_expression "puVar18 = puVar24 + 2" identifier = (binary_expression "puVar24 + 2" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);" do (compound_statement "{\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        }" { (expression_statement "bVar1 = piVar26 == piVar13;" (assignment_expression "bVar1 = piVar26 == piVar13" identifier = (binary_expression "piVar26 == piVar13" identifier == identifier)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" identifier = (cast_expression "(int *)((int)piVar13 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + 1)" ( (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) goto LAB_0002ae34;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_0002ae34;" goto statement_identifier ;)) (expression_statement "uVar17 = *puVar18;" (assignment_expression "uVar17 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar18 = uVar17 + 1;" (assignment_expression "*puVar18 = uVar17 + 1" (pointer_expression "*puVar18" * identifier) = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar17 + 1 == 0)" ( (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" identifier + number_literal) == number_literal) )) ;) })) })) (expression_statement "puVar18 = (uint *)-(int)piVar26;" (assignment_expression "puVar18 = (uint *)-(int)piVar26" identifier = (cast_expression "(uint *)-(int)piVar26" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar26" - (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }))) (labeled_statement "LAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);" statement_identifier : (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x30)" * (cast_expression "(uint **)(puVar31 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar7[1] = (uint)puVar18;" (assignment_expression "puVar7[1] = (uint)puVar18" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" identifier = identifier) ;) (goto_statement "goto joined_r0x0002b0c4;" goto statement_identifier ;) (labeled_statement "code_r0x0002b0ac:\n  uVar17 = uVar17 - 1;" statement_identifier : (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;)) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (if_statement "if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;" if (parenthesized_expression "(uVar17 == 0xffffffff)" ( (binary_expression "uVar17 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto code_r0x0002b0b8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002b098;" goto statement_identifier ;) (labeled_statement "code_r0x0002b0b8:\n  *puVar24 = 1;" statement_identifier : (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" * identifier) = number_literal) ;)) (expression_statement "piVar21 = (int *)0xffffffff;" (assignment_expression "piVar21 = (int *)0xffffffff" identifier = (cast_expression "(int *)0xffffffff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);" statement_identifier : (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x30)" * (cast_expression "(uint **)(puVar31 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar7[1] = (uint)piVar21;" (assignment_expression "puVar7[1] = (uint)piVar21" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (cast_expression "(uint)piVar21" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar32 = puVar34;" (assignment_expression "puVar32 = puVar34" identifier = identifier) ;) (labeled_statement "joined_r0x0002b0c4:\n  piVar26 = piVar21;" statement_identifier : (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" identifier = identifier) ;)) (expression_statement "puVar33 = puVar32;" (assignment_expression "puVar33 = puVar32" identifier = identifier) ;) (if_statement "if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" if (parenthesized_expression "(puVar8 != (uint *)0x0)" ( (binary_expression "puVar8 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" { (expression_statement "(**(code **)(puVar30 + -0x7a2c))();" (call_expression "(**(code **)(puVar30 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar30 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar30 + -0x7a2c)" * (pointer_expression "*(code **)(puVar30 + -0x7a2c)" * (cast_expression "(code **)(puVar30 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7a2c)" ( (binary_expression "puVar30 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x40)" * (cast_expression "(undefined **)(puVar31 + -0x40)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;" statement_identifier : (expression_statement "puVar4 = (undefined4 *)*piVar25;" (assignment_expression "puVar4 = (undefined4 *)*piVar25" identifier = (cast_expression "(undefined4 *)*piVar25" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar25" * identifier))) ;)) (if_statement "if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }" if (parenthesized_expression "(*(undefined4 **)(puVar31 + -0x2c) == puVar4)" ( (binary_expression "*(undefined4 **)(puVar31 + -0x2c) == puVar4" (pointer_expression "*(undefined4 **)(puVar31 + -0x2c)" * (cast_expression "(undefined4 **)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar35 = 0x2b384;" (assignment_expression "uVar35 = 0x2b384" identifier = number_literal) ;) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(uint **)(puVar33 + -0x14) = puVar18;" (assignment_expression "*(uint **)(puVar33 + -0x14) = puVar18" (pointer_expression "*(uint **)(puVar33 + -0x14)" * (cast_expression "(uint **)(puVar33 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x14)" ( (binary_expression "puVar33 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;" (assignment_expression "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0" (pointer_expression "*(code **)(puVar33 + -0x20)" * (cast_expression "(code **)(puVar33 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x20)" ( (binary_expression "puVar33 + -0x20" identifier + number_literal) )))) = (binary_expression "pcVar29 + 0x73cb0" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar33 + -8) = puVar24;" (assignment_expression "*(uint **)(puVar33 + -8) = puVar24" (pointer_expression "*(uint **)(puVar33 + -8)" * (cast_expression "(uint **)(puVar33 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -8)" ( (binary_expression "puVar33 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar33 + -0xc) = puVar22;" (assignment_expression "*(uint **)(puVar33 + -0xc) = puVar22" (pointer_expression "*(uint **)(puVar33 + -0xc)" * (cast_expression "(uint **)(puVar33 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0xc)" ( (binary_expression "puVar33 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar33 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar33 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar33 + -4)" * (cast_expression "(undefined4 *)(puVar33 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar33 + -4)" ( (binary_expression "puVar33 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar33 + -0x10) = piVar26;" (assignment_expression "*(int **)(puVar33 + -0x10) = piVar26" (pointer_expression "*(int **)(puVar33 + -0x10)" * (cast_expression "(int **)(puVar33 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + -0x10)" ( (binary_expression "puVar33 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar19 = piVar9[1];" (assignment_expression "uVar19 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" identifier = identifier) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar17 = -uVar19;\n  }" { (expression_statement "uVar17 = -uVar19;" (assignment_expression "uVar17 = -uVar19" identifier = (unary_expression "-uVar19" - identifier)) ;) })) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (if_statement "if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }" if (parenthesized_expression "(0 < (int)uVar17)" ( (binary_expression "0 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar16 = uVar17;\n  }" { (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) })) (expression_statement "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);" (assignment_expression "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c)" identifier = (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x6c17c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar29 + 0x6c17c)" * (pointer_expression "*(undefined4 **)(pcVar29 + 0x6c17c)" * (cast_expression "(undefined4 **)(pcVar29 + 0x6c17c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x6c17c)" ( (binary_expression "pcVar29 + 0x6c17c" identifier + number_literal) ))))))) ;) (expression_statement "*puVar8 = uVar16;" (assignment_expression "*puVar8 = uVar16" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);" (assignment_expression "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2)" identifier = (cast_expression "(undefined4 *)(*pcVar29)(uVar16 << 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar29)(uVar16 << 2)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(uVar16 << 2)" ( (binary_expression "uVar16 << 2" identifier << number_literal) ))))) ;) (expression_statement "puVar8[2] = (uint)puVar4;" (assignment_expression "puVar8[2] = (uint)puVar4" (subscript_expression "puVar8[2]" identifier [ number_literal ]) = (cast_expression "(uint)puVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" if (parenthesized_expression "(uVar19 != 0)" ( (binary_expression "uVar19 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" { (expression_statement "puVar6 = (undefined4 *)piVar9[2];" (assignment_expression "puVar6 = (undefined4 *)piVar9[2]" identifier = (cast_expression "(undefined4 *)piVar9[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar5 = uVar17 - 1;" (assignment_expression "iVar5 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar12 = puVar4;" (assignment_expression "puVar12 = puVar4" identifier = identifier) ;) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" { (do_statement "do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      }" { (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uVar35;" (assignment_expression "*puVar12 = uVar35" (pointer_expression "*puVar12" * identifier) = identifier) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar17 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar17 - 1)" identifier = (binary_expression "puVar4 + (uVar17 - 1)" identifier + (parenthesized_expression "(uVar17 - 1)" ( (binary_expression "uVar17 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar4 = uVar35;" (assignment_expression "*puVar4 = uVar35" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "puVar8[1] = uVar19;" (assignment_expression "puVar8[1] = uVar19" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (unary_expression - IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (unary_expression - (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) )))) ;) (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 (binary_expression IDENT + (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 (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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 IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (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 IDENT == LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) 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) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) 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) )) ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * IDENT)) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) 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 (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression 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 = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) != IDENT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression 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 = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << 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 = (binary_expression IDENT + LIT)) ;) }))) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (unary_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 (binary_expression IDENT + (unary_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 IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_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 *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) != IDENT) )) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]) == LIT) )))) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) & (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (pointer_expression * IDENT)) & (pointer_expression * IDENT)) )) == LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (unary_expression ~ (pointer_expression * IDENT)) & (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ))) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]) == LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (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 = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) 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 *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (expression_statement (assignment_expression (pointer_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)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) }))) (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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (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 ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT << LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 * __gmpz_invert(undefined4 param_1,int param_2,int *param_3)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" (type_identifier "undefined4") (pointer_declarator "* __gmpz_invert(undefined4 param_1,int param_2,int *param_3)" (* "*") (function_declarator "__gmpz_invert(undefined4 param_1,int param_2,int *param_3)" (identifier "__gmpz_invert") (parameter_list "(undefined4 param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  uint *puVar7;\n  uint *puVar8;\n  int *piVar9;\n  uint *puVar10;\n  uint *puVar11;\n  undefined4 *puVar12;\n  int *piVar13;\n  uint *puVar14;\n  int *piVar15;\n  uint uVar16;\n  uint uVar17;\n  uint *puVar18;\n  uint uVar19;\n  int *piVar20;\n  int *piVar21;\n  uint *puVar22;\n  uint *puVar23;\n  uint *puVar24;\n  int *unaff_s5;\n  int *piVar25;\n  undefined4 unaff_s6;\n  undefined4 unaff_s7;\n  int *piVar26;\n  int *piVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined4 uVar35;\n  undefined1 auStack_68 [24];\n  int local_40;\n  int local_3c;\n  int local_38;\n  int *local_34;\n  int local_30;\n  int local_2c;\n  undefined1 *local_28;\n  uint *local_24;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_68;\n  iVar5 = *(int *)(param_2 + 4);\n  local_24 = *(uint **)PTR___stack_chk_guard_00097540;\n  if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }\n  iVar3 = param_3[1];\n  if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }\n  local_40 = 0;\n  if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }\n  iVar3 = iVar3 + 1;\n  uVar17 = iVar3 * 4;\n  local_3c = iVar3;\n  local_30 = iVar3;\n  if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }\n  piVar13 = (int *)0x0;\n  *(int **)(puVar31 + 0x10) = param_3;\n  piVar9 = &local_30;\n  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);\n  if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }\n  if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_24 == *(uint **)puVar2) {\n    return puVar4;\n  }\n  uVar35 = 0x2aaec;\n  puVar7 = local_24;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x74550;\n  puVar34 = puVar31 + -0x50;\n  puVar33 = puVar31 + -0x50;\n  puVar32 = puVar31 + -0x50;\n  *(int **)(puVar31 + -0x14) = unaff_s5;\n  *(int *)(puVar31 + -0x24) = iVar3;\n  piVar25 = *(int **)(puVar28 + 0x6ca50);\n  piVar20 = (int *)piVar9[1];\n  *(undefined1 **)(puVar31 + -8) = auStack_68;\n  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;\n  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;\n  *(int **)(puVar31 + -0x1c) = param_3;\n  *(undefined4 *)(puVar31 + -0x20) = param_1;\n  *(int **)(puVar31 + -0x28) = &local_30;\n  *(undefined4 *)(puVar31 + -4) = uVar35;\n  *(undefined **)(puVar31 + -0x18) = puVar2;\n  *(undefined **)(puVar31 + -0x40) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  piVar26 = (int *)piVar13[1];\n  puVar22 = (uint *)piVar9[2];\n  puVar18 = (uint *)piVar13[2];\n  puVar24 = (uint *)puVar7[2];\n  *(int *)(puVar31 + -0x2c) = *piVar25;\n  if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }\n  piVar9 = (int *)-(int)piVar27;\n  piVar13 = (int *)((int)piVar27 * -4);\n  pcVar29 = *(code **)(puVar28 + 0x6c800);\n  if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }\n  uVar17 = *puVar8;\n  *puVar18 = uVar17 - 1;\n  if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }\nLAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)puVar18;\n  puVar22 = puVar23;\n  goto joined_r0x0002b0c4;\ncode_r0x0002b0ac:\n  uVar17 = uVar17 - 1;\n  puVar10 = puVar10 + -1;\n  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;\n  goto LAB_0002b098;\ncode_r0x0002b0b8:\n  *puVar24 = 1;\n  piVar21 = (int *)0xffffffff;\nLAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);\n  puVar7[1] = (uint)piVar21;\n  puVar32 = puVar34;\njoined_r0x0002b0c4:\n  piVar26 = piVar21;\n  puVar33 = puVar32;\n  if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }\nLAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;\n  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  uVar35 = 0x2b384;\n  (*pcVar29)();\n  *(uint **)(puVar33 + -0x14) = puVar18;\n  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;\n  *(uint **)(puVar33 + -8) = puVar24;\n  *(uint **)(puVar33 + -0xc) = puVar22;\n  *(undefined4 *)(puVar33 + -4) = uVar35;\n  *(int **)(puVar33 + -0x10) = piVar26;\n  uVar19 = piVar9[1];\n  uVar17 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }\n  uVar16 = 1;\n  if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }\n  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);\n  *puVar8 = uVar16;\n  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);\n  puVar8[2] = (uint)puVar4;\n  if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }\n  puVar8[1] = uVar19;\n  return puVar4;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "int *piVar20;" (primitive_type "int") (pointer_declarator "*piVar20" (* "*") (identifier "piVar20")) (; ";")) (declaration "int *piVar21;" (primitive_type "int") (pointer_declarator "*piVar21" (* "*") (identifier "piVar21")) (; ";")) (declaration "uint *puVar22;" (type_identifier "uint") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint *puVar23;" (type_identifier "uint") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "uint *puVar24;" (type_identifier "uint") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "int *unaff_s5;" (primitive_type "int") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "int *piVar25;" (primitive_type "int") (pointer_declarator "*piVar25" (* "*") (identifier "piVar25")) (; ";")) (declaration "undefined4 unaff_s6;" (type_identifier "undefined4") (identifier "unaff_s6") (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "int *piVar26;" (primitive_type "int") (pointer_declarator "*piVar26" (* "*") (identifier "piVar26")) (; ";")) (declaration "int *piVar27;" (primitive_type "int") (pointer_declarator "*piVar27" (* "*") (identifier "piVar27")) (; ";")) (declaration "undefined *puVar28;" (type_identifier "undefined") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "code *pcVar29;" (type_identifier "code") (pointer_declarator "*pcVar29" (* "*") (identifier "pcVar29")) (; ";")) (declaration "undefined *puVar30;" (type_identifier "undefined") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "undefined1 *puVar31;" (type_identifier "undefined1") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "undefined1 *puVar32;" (type_identifier "undefined1") (pointer_declarator "*puVar32" (* "*") (identifier "puVar32")) (; ";")) (declaration "undefined1 *puVar33;" (type_identifier "undefined1") (pointer_declarator "*puVar33" (* "*") (identifier "puVar33")) (; ";")) (declaration "undefined1 *puVar34;" (type_identifier "undefined1") (pointer_declarator "*puVar34" (* "*") (identifier "puVar34")) (; ";")) (declaration "undefined4 uVar35;" (type_identifier "undefined4") (identifier "uVar35") (; ";")) (declaration "undefined1 auStack_68 [24];" (type_identifier "undefined1") (array_declarator "auStack_68 [24]" (identifier "auStack_68") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "undefined1 *local_28;" (type_identifier "undefined1") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "uint *local_24;" (type_identifier "uint") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (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 "puVar31 = auStack_68;" (assignment_expression "puVar31 = auStack_68" (identifier "puVar31") (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "iVar5 = *(int *)(param_2 + 4);" (assignment_expression "iVar5 = *(int *)(param_2 + 4)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "local_24 = *(uint **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_24 = *(uint **)PTR___stack_chk_guard_00097540" (identifier "local_24") (= "=") (pointer_expression "*(uint **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(uint **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if (iVar5 < 0) {\n    iVar5 = -iVar5;\n  }" (if "if") (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar5 = -iVar5;\n  }" ({ "{") (expression_statement "iVar5 = -iVar5;" (assignment_expression "iVar5 = -iVar5" (identifier "iVar5") (= "=") (unary_expression "-iVar5" (- "-") (identifier "iVar5"))) (; ";")) (} "}"))) (expression_statement "iVar3 = param_3[1];" (assignment_expression "iVar3 = param_3[1]" (identifier "iVar3") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar3 < 0) {\n    iVar3 = -iVar3;\n  }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = -iVar3;\n  }" ({ "{") (expression_statement "iVar3 = -iVar3;" (assignment_expression "iVar3 = -iVar3" (identifier "iVar3") (= "=") (unary_expression "-iVar3" (- "-") (identifier "iVar3"))) (; ";")) (} "}"))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar3 <= iVar5) {\n    iVar3 = iVar5;\n  }" (if "if") (parenthesized_expression "(iVar3 <= iVar5)" (( "(") (binary_expression "iVar3 <= iVar5" (identifier "iVar3") (<= "<=") (identifier "iVar5")) () ")")) (compound_statement "{\n    iVar3 = iVar5;\n  }" ({ "{") (expression_statement "iVar3 = iVar5;" (assignment_expression "iVar3 = iVar5" (identifier "iVar3") (= "=") (identifier "iVar5")) (; ";")) (} "}"))) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar17 = iVar3 * 4;" (assignment_expression "uVar17 = iVar3 * 4" (identifier "uVar17") (= "=") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) (; ";")) (expression_statement "local_3c = iVar3;" (assignment_expression "local_3c = iVar3" (identifier "local_3c") (= "=") (identifier "iVar3")) (; ";")) (expression_statement "local_30 = iVar3;" (assignment_expression "local_30 = iVar3" (identifier "local_30") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (uVar17 < 0x7f01) {\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }\n  else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" (if "if") (parenthesized_expression "(uVar17 < 0x7f01)" (( "(") (binary_expression "uVar17 < 0x7f01" (identifier "uVar17") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    uVar17 = uVar17 + 7 & 0xfffffff8;\n    iVar5 = uVar17 * -2;\n    puVar31 = auStack_68 + iVar5;\n    local_34 = (int *)(&stack0xffffffb0 + -uVar17);\n    local_28 = &stack0xffffffb0 + iVar5;\n  }" ({ "{") (expression_statement "uVar17 = uVar17 + 7 & 0xfffffff8;" (assignment_expression "uVar17 = uVar17 + 7 & 0xfffffff8" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 7 & 0xfffffff8" (binary_expression "uVar17 + 7" (identifier "uVar17") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8"))) (; ";")) (expression_statement "iVar5 = uVar17 * -2;" (assignment_expression "iVar5 = uVar17 * -2" (identifier "iVar5") (= "=") (binary_expression "uVar17 * -2" (identifier "uVar17") (* "*") (number_literal "-2"))) (; ";")) (expression_statement "puVar31 = auStack_68 + iVar5;" (assignment_expression "puVar31 = auStack_68 + iVar5" (identifier "puVar31") (= "=") (binary_expression "auStack_68 + iVar5" (identifier "auStack_68") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "local_34 = (int *)(&stack0xffffffb0 + -uVar17);" (assignment_expression "local_34 = (int *)(&stack0xffffffb0 + -uVar17)" (identifier "local_34") (= "=") (cast_expression "(int *)(&stack0xffffffb0 + -uVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffb0 + -uVar17)" (( "(") (binary_expression "&stack0xffffffb0 + -uVar17" (pointer_expression "&stack0xffffffb0" (& "&") (identifier "stack0xffffffb0")) (+ "+") (unary_expression "-uVar17" (- "-") (identifier "uVar17"))) () ")")))) (; ";")) (expression_statement "local_28 = &stack0xffffffb0 + iVar5;" (assignment_expression "local_28 = &stack0xffffffb0 + iVar5" (identifier "local_28") (= "=") (binary_expression "&stack0xffffffb0 + iVar5" (pointer_expression "&stack0xffffffb0" (& "&") (identifier "stack0xffffffb0")) (+ "+") (identifier "iVar5"))) (; ";")) (} "}")) (else_clause "else {\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" (else "else") (compound_statement "{\n    unaff_s5 = &local_40;\n    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);\n  }" ({ "{") (expression_statement "unaff_s5 = &local_40;" (assignment_expression "unaff_s5 = &local_40" (identifier "unaff_s5") (= "=") (pointer_expression "&local_40" (& "&") (identifier "local_40"))) (; ";")) (expression_statement "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (identifier "local_34") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" (( "(") (identifier "unaff_s5") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (expression_statement "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);" (assignment_expression "local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (identifier "local_28") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17)" (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 "(unaff_s5,uVar17)" (( "(") (identifier "unaff_s5") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (} "}")))) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" (identifier "piVar13") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(int **)(puVar31 + 0x10) = param_3;" (assignment_expression "*(int **)(puVar31 + 0x10) = param_3" (pointer_expression "*(int **)(puVar31 + 0x10)" (* "*") (cast_expression "(int **)(puVar31 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + 0x10)" (( "(") (binary_expression "puVar31 + 0x10" (identifier "puVar31") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" (identifier "piVar9") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);" (call_expression "(*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2)" (parenthesized_expression "(*(code *)PTR___gmpz_gcdext_000975a4)" (( "(") (pointer_expression "*(code *)PTR___gmpz_gcdext_000975a4" (* "*") (cast_expression "(code *)PTR___gmpz_gcdext_000975a4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_gcdext_000975a4"))) () ")")) (argument_list "(&local_3c,&local_30,0,param_2)" (( "(") (pointer_expression "&local_3c" (& "&") (identifier "local_3c")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if ((local_38 == 1) && (*local_34 == 1)) {\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }\n  else {\n    puVar4 = (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "((local_38 == 1) && (*local_34 == 1))" (( "(") (binary_expression "(local_38 == 1) && (*local_34 == 1)" (parenthesized_expression "(local_38 == 1)" (( "(") (binary_expression "local_38 == 1" (identifier "local_38") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(*local_34 == 1)" (( "(") (binary_expression "*local_34 == 1" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n    if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }\n    puVar4 = (undefined4 *)0x1;\n  }" ({ "{") (if_statement "if (local_2c < 0) {\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }\n    else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" (if "if") (parenthesized_expression "(local_2c < 0)" (( "(") (binary_expression "local_2c < 0" (identifier "local_2c") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar29 = (code *)PTR___gmpz_sub_0009752c;\n      if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }\n      piVar9 = &local_30;\n      piVar13 = param_3;\n      (*pcVar29)(param_1);\n    }" ({ "{") (expression_statement "pcVar29 = (code *)PTR___gmpz_sub_0009752c;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_sub_0009752c" (identifier "pcVar29") (= "=") (cast_expression "(code *)PTR___gmpz_sub_0009752c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_sub_0009752c"))) (; ";")) (if_statement "if (-1 < param_3[1]) {\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" (if "if") (parenthesized_expression "(-1 < param_3[1])" (( "(") (binary_expression "-1 < param_3[1]" (number_literal "-1") (< "<") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n        pcVar29 = (code *)PTR___gmpz_add_000971f0;\n      }" ({ "{") (expression_statement "pcVar29 = (code *)PTR___gmpz_add_000971f0;" (assignment_expression "pcVar29 = (code *)PTR___gmpz_add_000971f0" (identifier "pcVar29") (= "=") (cast_expression "(code *)PTR___gmpz_add_000971f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_add_000971f0"))) (; ";")) (} "}"))) (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" (identifier "piVar9") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "piVar13 = param_3;" (assignment_expression "piVar13 = param_3" (identifier "piVar13") (= "=") (identifier "param_3")) (; ";")) (expression_statement "(*pcVar29)(param_1);" (call_expression "(*pcVar29)(param_1)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" (else "else") (compound_statement "{\n      piVar9 = &local_30;\n      (*(code *)PTR___gmpz_set_000974b8)(param_1);\n    }" ({ "{") (expression_statement "piVar9 = &local_30;" (assignment_expression "piVar9 = &local_30" (identifier "piVar9") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "(*(code *)PTR___gmpz_set_000974b8)(param_1);" (call_expression "(*(code *)PTR___gmpz_set_000974b8)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpz_set_000974b8)" (( "(") (pointer_expression "*(code *)PTR___gmpz_set_000974b8" (* "*") (cast_expression "(code *)PTR___gmpz_set_000974b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_set_000974b8"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar4 = (undefined4 *)0x1;" (assignment_expression "puVar4 = (undefined4 *)0x1" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}")) (else_clause "else {\n    puVar4 = (undefined4 *)0x0;\n  }" (else "else") (compound_statement "{\n    puVar4 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (if_statement "if (local_40 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (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_24 == *(uint **)puVar2) {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(local_24 == *(uint **)puVar2)" (( "(") (binary_expression "local_24 == *(uint **)puVar2" (identifier "local_24") (== "==") (pointer_expression "*(uint **)puVar2" (* "*") (cast_expression "(uint **)puVar2" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "uVar35 = 0x2aaec;" (assignment_expression "uVar35 = 0x2aaec" (identifier "uVar35") (= "=") (number_literal "0x2aaec")) (; ";")) (expression_statement "puVar7 = local_24;" (assignment_expression "puVar7 = local_24" (identifier "puVar7") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = PTR___stack_chk_fail_000974d0" (identifier "puVar28") (= "=") (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 "puVar30 = puVar28 + 0x74550;" (assignment_expression "puVar30 = puVar28 + 0x74550" (identifier "puVar30") (= "=") (binary_expression "puVar28 + 0x74550" (identifier "puVar28") (+ "+") (number_literal "0x74550"))) (; ";")) (expression_statement "puVar34 = puVar31 + -0x50;" (assignment_expression "puVar34 = puVar31 + -0x50" (identifier "puVar34") (= "=") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50"))) (; ";")) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" (identifier "puVar33") (= "=") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50"))) (; ";")) (expression_statement "puVar32 = puVar31 + -0x50;" (assignment_expression "puVar32 = puVar31 + -0x50" (identifier "puVar32") (= "=") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50"))) (; ";")) (expression_statement "*(int **)(puVar31 + -0x14) = unaff_s5;" (assignment_expression "*(int **)(puVar31 + -0x14) = unaff_s5" (pointer_expression "*(int **)(puVar31 + -0x14)" (* "*") (cast_expression "(int **)(puVar31 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x14)" (( "(") (binary_expression "puVar31 + -0x14" (identifier "puVar31") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int *)(puVar31 + -0x24) = iVar3;" (assignment_expression "*(int *)(puVar31 + -0x24) = iVar3" (pointer_expression "*(int *)(puVar31 + -0x24)" (* "*") (cast_expression "(int *)(puVar31 + -0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x24)" (( "(") (binary_expression "puVar31 + -0x24" (identifier "puVar31") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "piVar25 = *(int **)(puVar28 + 0x6ca50);" (assignment_expression "piVar25 = *(int **)(puVar28 + 0x6ca50)" (identifier "piVar25") (= "=") (pointer_expression "*(int **)(puVar28 + 0x6ca50)" (* "*") (cast_expression "(int **)(puVar28 + 0x6ca50)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x6ca50)" (( "(") (binary_expression "puVar28 + 0x6ca50" (identifier "puVar28") (+ "+") (number_literal "0x6ca50")) () ")"))))) (; ";")) (expression_statement "piVar20 = (int *)piVar9[1];" (assignment_expression "piVar20 = (int *)piVar9[1]" (identifier "piVar20") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_68;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_68" (pointer_expression "*(undefined1 **)(puVar31 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar31 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -8)" (( "(") (binary_expression "puVar31 + -8" (identifier "puVar31") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0xc) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar31 + -0xc) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar31 + -0xc)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0xc)" (( "(") (binary_expression "puVar31 + -0xc" (identifier "puVar31") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x10) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar31 + -0x10) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar31 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x10)" (( "(") (binary_expression "puVar31 + -0x10" (identifier "puVar31") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int **)(puVar31 + -0x1c) = param_3;" (assignment_expression "*(int **)(puVar31 + -0x1c) = param_3" (pointer_expression "*(int **)(puVar31 + -0x1c)" (* "*") (cast_expression "(int **)(puVar31 + -0x1c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1c)" (( "(") (binary_expression "puVar31 + -0x1c" (identifier "puVar31") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x20) = param_1;" (assignment_expression "*(undefined4 *)(puVar31 + -0x20) = param_1" (pointer_expression "*(undefined4 *)(puVar31 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x20)" (( "(") (binary_expression "puVar31 + -0x20" (identifier "puVar31") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(int **)(puVar31 + -0x28) = &local_30;" (assignment_expression "*(int **)(puVar31 + -0x28) = &local_30" (pointer_expression "*(int **)(puVar31 + -0x28)" (* "*") (cast_expression "(int **)(puVar31 + -0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x28)" (( "(") (binary_expression "puVar31 + -0x28" (identifier "puVar31") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar31 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -4)" (( "(") (binary_expression "puVar31 + -4" (identifier "puVar31") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "*(undefined **)(puVar31 + -0x18) = puVar2;" (assignment_expression "*(undefined **)(puVar31 + -0x18) = puVar2" (pointer_expression "*(undefined **)(puVar31 + -0x18)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x18)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x18)" (( "(") (binary_expression "puVar31 + -0x18" (identifier "puVar31") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "puVar2")) (; ";")) (expression_statement "*(undefined **)(puVar31 + -0x40) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x40) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar26 = (int *)piVar13[1];" (assignment_expression "piVar26 = (int *)piVar13[1]" (identifier "piVar26") (= "=") (cast_expression "(int *)piVar13[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar22 = (uint *)piVar9[2];" (assignment_expression "puVar22 = (uint *)piVar9[2]" (identifier "puVar22") (= "=") (cast_expression "(uint *)piVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar18 = (uint *)piVar13[2];" (assignment_expression "puVar18 = (uint *)piVar13[2]" (identifier "puVar18") (= "=") (cast_expression "(uint *)piVar13[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" (identifier "puVar24") (= "=") (cast_expression "(uint *)puVar7[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x2c) = *piVar25;" (assignment_expression "*(int *)(puVar31 + -0x2c) = *piVar25" (pointer_expression "*(int *)(puVar31 + -0x2c)" (* "*") (cast_expression "(int *)(puVar31 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*piVar25" (* "*") (identifier "piVar25"))) (; ";")) (if_statement "if ((int)piVar20 < 0) {\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }\n  else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" (if "if") (parenthesized_expression "((int)piVar20 < 0)" (( "(") (binary_expression "(int)piVar20 < 0" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    piVar15 = piVar13;\n    puVar8 = puVar22;\n    piVar21 = piVar26;\n    puVar23 = puVar18;\n    piVar27 = piVar20;\n    if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }\n  }" ({ "{") (expression_statement "piVar15 = piVar13;" (assignment_expression "piVar15 = piVar13" (identifier "piVar15") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "puVar8 = puVar22;" (assignment_expression "puVar8 = puVar22" (identifier "puVar8") (= "=") (identifier "puVar22")) (; ";")) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" (identifier "piVar21") (= "=") (identifier "piVar26")) (; ";")) (expression_statement "puVar23 = puVar18;" (assignment_expression "puVar23 = puVar18" (identifier "puVar23") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "piVar27 = piVar20;" (assignment_expression "piVar27 = piVar20" (identifier "piVar27") (= "=") (identifier "piVar20")) (; ";")) (if_statement "if ((int)piVar26 < 0) {\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" (if "if") (parenthesized_expression "((int)piVar26 < 0)" (( "(") (binary_expression "(int)piVar26 < 0" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }\n      iVar5 = -(int)piVar20;\n      piVar9 = (int *)((int)piVar20 * -8);\n      if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }\n      uVar17 = *puVar22;\n      uVar19 = *puVar18;\n      puVar23 = puVar8 + -(int)piVar20;\n      uVar16 = uVar19 - 1;\n      *puVar8 = uVar17 - 1;\n      if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }\nLAB_0002b088:\n      uVar17 = ~(uint)piVar20;\n      puVar11 = puVar8 + uVar17;\n      puVar10 = puVar23 + uVar17;\nLAB_0002b098:\n      uVar19 = *puVar11;\n      puVar11 = puVar11 + -1;\n      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;\n      puVar18 = (uint *)(uVar17 + 1);\n      pcVar29 = *(code **)(puVar30 + -0x7a84);\n      if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }\n      iVar5 = 0;\n      do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);\n      piVar9[(int)puVar18] = 0;\n      piVar13 = piVar9;\n      do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);\n      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);\n      piVar21 = (int *)-(int)piVar9;\n      goto LAB_0002b0c0;\n    }" ({ "{") (if_statement "if ((int)piVar20 < (int)piVar26) {\n        piVar20 = piVar26;\n      }" (if "if") (parenthesized_expression "((int)piVar20 < (int)piVar26)" (( "(") (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (< "<") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")) (compound_statement "{\n        piVar20 = piVar26;\n      }" ({ "{") (expression_statement "piVar20 = piVar26;" (assignment_expression "piVar20 = piVar26" (identifier "piVar20") (= "=") (identifier "piVar26")) (; ";")) (} "}"))) (expression_statement "iVar5 = -(int)piVar20;" (assignment_expression "iVar5 = -(int)piVar20" (identifier "iVar5") (= "=") (unary_expression "-(int)piVar20" (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")))) (; ";")) (expression_statement "piVar9 = (int *)((int)piVar20 * -8);" (assignment_expression "piVar9 = (int *)((int)piVar20 * -8)" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)piVar20 * -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar20 * -8)" (( "(") (binary_expression "(int)piVar20 * -8" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (* "*") (number_literal "-8")) () ")")))) (; ";")) (if_statement "if (piVar9 < (int *)0x7f01) {\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }\n      else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" (if "if") (parenthesized_expression "(piVar9 < (int *)0x7f01)" (( "(") (binary_expression "piVar9 < (int *)0x7f01" (identifier "piVar9") (< "<") (cast_expression "(int *)0x7f01" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7f01"))) () ")")) (compound_statement "{\n        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;\n        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);\n      }" ({ "{") (expression_statement "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;" (assignment_expression "puVar34 = puVar31 + (int)piVar20 * 8 + -0x50" (identifier "puVar34") (= "=") (binary_expression "puVar31 + (int)piVar20 * 8 + -0x50" (binary_expression "puVar31 + (int)piVar20 * 8" (identifier "puVar31") (+ "+") (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (* "*") (number_literal "8"))) (+ "+") (number_literal "-0x50"))) (; ";")) (expression_statement "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);" (assignment_expression "puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(puVar31 + (int)piVar20 * 8 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + (int)piVar20 * 8 + -0x40)" (( "(") (binary_expression "puVar31 + (int)piVar20 * 8 + -0x40" (binary_expression "puVar31 + (int)piVar20 * 8" (identifier "puVar31") (+ "+") (binary_expression "(int)piVar20 * 8" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (* "*") (number_literal "8"))) (+ "+") (number_literal "-0x40")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" (else "else") (compound_statement "{\n        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n      }" ({ "{") (expression_statement "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);" (assignment_expression "puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30)" (parenthesized_expression "(**(code **)(puVar28 + 0x6c800))" (( "(") (pointer_expression "**(code **)(puVar28 + 0x6c800)" (* "*") (pointer_expression "*(code **)(puVar28 + 0x6c800)" (* "*") (cast_expression "(code **)(puVar28 + 0x6c800)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x6c800)" (( "(") (binary_expression "puVar28 + 0x6c800" (identifier "puVar28") (+ "+") (number_literal "0x6c800")) () ")"))))) () ")")) (argument_list "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar17 = *puVar22;" (assignment_expression "uVar17 = *puVar22" (identifier "uVar17") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "uVar19 = *puVar18;" (assignment_expression "uVar19 = *puVar18" (identifier "uVar19") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar23 = puVar8 + -(int)piVar20;" (assignment_expression "puVar23 = puVar8 + -(int)piVar20" (identifier "puVar23") (= "=") (binary_expression "puVar8 + -(int)piVar20" (identifier "puVar8") (+ "+") (unary_expression "-(int)piVar20" (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))))) (; ";")) (expression_statement "uVar16 = uVar19 - 1;" (assignment_expression "uVar16 = uVar19 - 1" (identifier "uVar16") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*puVar8 = uVar17 - 1;" (assignment_expression "*puVar8 = uVar17 - 1" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) {\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }\n      else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }\nLAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }\n      }" ({ "{") (if_statement "if (piVar20 == (int *)0xffffffff) {\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }\n        else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" (if "if") (parenthesized_expression "(piVar20 == (int *)0xffffffff)" (( "(") (binary_expression "piVar20 == (int *)0xffffffff" (identifier "piVar20") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\nLAB_0002b274:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b088;\n        }" ({ "{") (labeled_statement "LAB_0002b274:\n          *puVar23 = uVar16;" (statement_identifier "LAB_0002b274") (: ":") (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (identifier "uVar16")) (; ";"))) (if_statement "if (uVar19 == 0) goto LAB_0002b088;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b088;" (goto "goto") (statement_identifier "LAB_0002b088") (; ";"))) (} "}")) (else_clause "else {\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" (else "else") (compound_statement "{\n          uVar17 = puVar22[1];\n          puVar8[1] = uVar17 - 1;\n          if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }\n          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }\nLAB_0002b038:\n          *puVar23 = uVar16;\n          if (uVar19 == 0) goto LAB_0002b040;\n        }" ({ "{") (expression_statement "uVar17 = puVar22[1];" (assignment_expression "uVar17 = puVar22[1]" (identifier "uVar17") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar8[1] = uVar17 - 1;" (assignment_expression "puVar8[1] = uVar17 - 1" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) {\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }\n          else {\n            iVar3 = 2;\n          }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            puVar11 = puVar22 + 2;\n            iVar3 = 2;\n            puVar10 = puVar8 + 2;\n            do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);\n          }" ({ "{") (expression_statement "puVar11 = puVar22 + 2;" (assignment_expression "puVar11 = puVar22 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar22 + 2" (identifier "puVar22") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" (identifier "puVar10") (= "=") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            } while (piVar9 == (int *)0x0);" (do "do") (compound_statement "{\n              piVar9 = (int *)(uint)(iVar3 < iVar5);\n              if (piVar9 == (int *)0x0) goto LAB_0002b038;\n              piVar9 = (int *)*puVar11;\n              iVar3 = iVar3 + 1;\n              puVar11 = puVar11 + 1;\n              *puVar10 = (int)piVar9 - 1;\n              puVar10 = puVar10 + 1;\n            }" ({ "{") (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" (identifier "piVar9") (= "=") (cast_expression "(int *)(uint)(iVar3 < iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")"))))) (; ";")) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b038;" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002b038;" (goto "goto") (statement_identifier "LAB_0002b038") (; ";"))) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n            iVar3 = 2;\n          }" (else "else") (compound_statement "{\n            iVar3 = 2;\n          }" ({ "{") (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar8 != puVar22) && (iVar3 < iVar5)) {\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" (if "if") (parenthesized_expression "((puVar8 != puVar22) && (iVar3 < iVar5))" (( "(") (binary_expression "(puVar8 != puVar22) && (iVar3 < iVar5)" (parenthesized_expression "(puVar8 != puVar22)" (( "(") (binary_expression "puVar8 != puVar22" (identifier "puVar8") (!= "!=") (identifier "puVar22")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")"))) () ")")) (compound_statement "{\n            puVar11 = puVar22 + iVar3;\n            puVar22 = puVar22 + -(int)piVar20;\n            puVar10 = puVar8 + iVar3;\n            do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);\n          }" ({ "{") (expression_statement "puVar11 = puVar22 + iVar3;" (assignment_expression "puVar11 = puVar22 + iVar3" (identifier "puVar11") (= "=") (binary_expression "puVar22 + iVar3" (identifier "puVar22") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "puVar22 = puVar22 + -(int)piVar20;" (assignment_expression "puVar22 = puVar22 + -(int)piVar20" (identifier "puVar22") (= "=") (binary_expression "puVar22 + -(int)piVar20" (identifier "puVar22") (+ "+") (unary_expression "-(int)piVar20" (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))))) (; ";")) (expression_statement "puVar10 = puVar8 + iVar3;" (assignment_expression "puVar10 = puVar8 + iVar3" (identifier "puVar10") (= "=") (binary_expression "puVar8 + iVar3" (identifier "puVar8") (+ "+") (identifier "iVar3"))) (; ";")) (do_statement "do {\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            } while (puVar22 != puVar11);" (do "do") (compound_statement "{\n              uVar17 = *puVar11;\n              puVar11 = puVar11 + 1;\n              *puVar10 = uVar17;\n              puVar10 = puVar10 + 1;\n            }" ({ "{") (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" (identifier "uVar17") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar22 != puVar11)" (( "(") (binary_expression "puVar22 != puVar11" (identifier "puVar22") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0002b038:\n          *puVar23 = uVar16;" (statement_identifier "LAB_0002b038") (: ":") (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (identifier "uVar16")) (; ";"))) (if_statement "if (uVar19 == 0) goto LAB_0002b040;" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b040;" (goto "goto") (statement_identifier "LAB_0002b040") (; ";"))) (} "}")))) (labeled_statement "LAB_0002b27c:\n        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" (statement_identifier "LAB_0002b27c") (: ":") (if_statement "if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" (if "if") (parenthesized_expression "((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff))" (( "(") (binary_expression "(puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)" (parenthesized_expression "(puVar18 != puVar23)" (( "(") (binary_expression "puVar18 != puVar23" (identifier "puVar18") (!= "!=") (identifier "puVar23")) () ")")) (&& "&&") (parenthesized_expression "(piVar20 != (int *)0xffffffff)" (( "(") (binary_expression "piVar20 != (int *)0xffffffff" (identifier "piVar20") (!= "!=") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")"))) () ")")) (compound_statement "{\n          puVar18 = puVar18 + 1;\n          iVar3 = 1;\n          puVar10 = puVar23;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n        }" ({ "{") (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar10 = puVar23;" (assignment_expression "puVar10 = puVar23" (identifier "puVar10") (= "=") (identifier "puVar23")) (; ";")) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" (do "do") (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar18;\n            iVar3 = iVar3 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar10 = (uint)piVar9;\n          }" ({ "{") (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar18;" (assignment_expression "piVar9 = (int *)*puVar18" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar18" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (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 "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" (else "else") (compound_statement "{\n        if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }\n        *puVar23 = uVar16;\n        if (uVar19 != 0) goto LAB_0002b27c;\n        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;\nLAB_0002b040:\n        uVar17 = puVar18[1];\n        puVar23[1] = uVar17 - 1;\n        if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }\n      }" ({ "{") (if_statement "if (puVar8 != puVar22) {\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" (if "if") (parenthesized_expression "(puVar8 != puVar22)" (( "(") (binary_expression "puVar8 != puVar22" (identifier "puVar8") (!= "!=") (identifier "puVar22")) () ")")) (compound_statement "{\n          puVar22 = puVar22 + 1;\n          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;\n          iVar3 = 1;\n          puVar10 = puVar8;\n          do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);\n          goto LAB_0002b038;\n        }" ({ "{") (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;" (if "if") (parenthesized_expression "(piVar20 == (int *)0xffffffff)" (( "(") (binary_expression "piVar20 == (int *)0xffffffff" (identifier "piVar20") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (goto_statement "goto LAB_0002b274;" (goto "goto") (statement_identifier "LAB_0002b274") (; ";"))) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" (identifier "iVar3") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" (identifier "puVar10") (= "=") (identifier "puVar8")) (; ";")) (do_statement "do {\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          } while (iVar3 < iVar5);" (do "do") (compound_statement "{\n            puVar10 = puVar10 + 1;\n            piVar9 = (int *)*puVar22;\n            iVar3 = iVar3 + 1;\n            puVar22 = puVar22 + 1;\n            *puVar10 = (uint)piVar9;\n          }" ({ "{") (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar22;" (assignment_expression "piVar9 = (int *)*puVar22" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar22" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")")) (; ";")) (goto_statement "goto LAB_0002b038;" (goto "goto") (statement_identifier "LAB_0002b038") (; ";")) (} "}"))) (expression_statement "*puVar23 = uVar16;" (assignment_expression "*puVar23 = uVar16" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (uVar19 != 0) goto LAB_0002b27c;" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b27c;" (goto "goto") (statement_identifier "LAB_0002b27c") (; ";"))) (if_statement "if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;" (if "if") (parenthesized_expression "(piVar20 == (int *)0xffffffff)" (( "(") (binary_expression "piVar20 == (int *)0xffffffff" (identifier "piVar20") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (goto_statement "goto LAB_0002b088;" (goto "goto") (statement_identifier "LAB_0002b088") (; ";"))) (labeled_statement "LAB_0002b040:\n        uVar17 = puVar18[1];" (statement_identifier "LAB_0002b040") (: ":") (expression_statement "uVar17 = puVar18[1];" (assignment_expression "uVar17 = puVar18[1]" (identifier "uVar17") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "puVar23[1] = uVar17 - 1;" (assignment_expression "puVar23[1] = uVar17 - 1" (subscript_expression "puVar23[1]" (identifier "puVar23") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) {\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar11 = puVar18 + 2;\n          iVar3 = 2;\n          puVar10 = puVar23 + 2;\n          do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);\n        }" ({ "{") (expression_statement "puVar11 = puVar18 + 2;" (assignment_expression "puVar11 = puVar18 + 2" (identifier "puVar11") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar10 = puVar23 + 2;" (assignment_expression "puVar10 = puVar23 + 2" (identifier "puVar10") (= "=") (binary_expression "puVar23 + 2" (identifier "puVar23") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          } while (piVar9 == (int *)0x0);" (do "do") (compound_statement "{\n            piVar9 = (int *)(uint)(iVar3 < iVar5);\n            if (piVar9 == (int *)0x0) goto LAB_0002b088;\n            piVar9 = (int *)*puVar11;\n            iVar3 = iVar3 + 1;\n            puVar11 = puVar11 + 1;\n            *puVar10 = (int)piVar9 - 1;\n            puVar10 = puVar10 + 1;\n          }" ({ "{") (expression_statement "piVar9 = (int *)(uint)(iVar3 < iVar5);" (assignment_expression "piVar9 = (int *)(uint)(iVar3 < iVar5)" (identifier "piVar9") (= "=") (cast_expression "(int *)(uint)(iVar3 < iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar3 < iVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")"))))) (; ";")) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0002b088;" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002b088;" (goto "goto") (statement_identifier "LAB_0002b088") (; ";"))) (expression_statement "piVar9 = (int *)*puVar11;" (assignment_expression "piVar9 = (int *)*puVar11" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar11" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = (int)piVar9 - 1;" (assignment_expression "*puVar10 = (int)piVar9 - 1" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (binary_expression "(int)piVar9 - 1" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar3 = 2;\n        }" (else "else") (compound_statement "{\n          iVar3 = 2;\n        }" ({ "{") (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" (identifier "iVar3") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar18 != puVar23) && (iVar3 < iVar5)) {\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" (if "if") (parenthesized_expression "((puVar18 != puVar23) && (iVar3 < iVar5))" (( "(") (binary_expression "(puVar18 != puVar23) && (iVar3 < iVar5)" (parenthesized_expression "(puVar18 != puVar23)" (( "(") (binary_expression "puVar18 != puVar23" (identifier "puVar18") (!= "!=") (identifier "puVar23")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 < iVar5)" (( "(") (binary_expression "iVar3 < iVar5" (identifier "iVar3") (< "<") (identifier "iVar5")) () ")"))) () ")")) (compound_statement "{\n          puVar11 = puVar18 + iVar3;\n          puVar18 = puVar18 + -(int)piVar20;\n          puVar10 = puVar23 + iVar3;\n          do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);\n        }" ({ "{") (expression_statement "puVar11 = puVar18 + iVar3;" (assignment_expression "puVar11 = puVar18 + iVar3" (identifier "puVar11") (= "=") (binary_expression "puVar18 + iVar3" (identifier "puVar18") (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "puVar18 = puVar18 + -(int)piVar20;" (assignment_expression "puVar18 = puVar18 + -(int)piVar20" (identifier "puVar18") (= "=") (binary_expression "puVar18 + -(int)piVar20" (identifier "puVar18") (+ "+") (unary_expression "-(int)piVar20" (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))))) (; ";")) (expression_statement "puVar10 = puVar23 + iVar3;" (assignment_expression "puVar10 = puVar23 + iVar3" (identifier "puVar10") (= "=") (binary_expression "puVar23 + iVar3" (identifier "puVar23") (+ "+") (identifier "iVar3"))) (; ";")) (do_statement "do {\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          } while (puVar18 != puVar11);" (do "do") (compound_statement "{\n            uVar17 = *puVar11;\n            puVar11 = puVar11 + 1;\n            *puVar10 = uVar17;\n            puVar10 = puVar10 + 1;\n          }" ({ "{") (expression_statement "uVar17 = *puVar11;" (assignment_expression "uVar17 = *puVar11" (identifier "uVar17") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar10 = uVar17;" (assignment_expression "*puVar10 = uVar17" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 != puVar11)" (( "(") (binary_expression "puVar18 != puVar11" (identifier "puVar18") (!= "!=") (identifier "puVar11")) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0002b088:\n      uVar17 = ~(uint)piVar20;" (statement_identifier "LAB_0002b088") (: ":") (expression_statement "uVar17 = ~(uint)piVar20;" (assignment_expression "uVar17 = ~(uint)piVar20" (identifier "uVar17") (= "=") (unary_expression "~(uint)piVar20" (~ "~") (cast_expression "(uint)piVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar20")))) (; ";"))) (expression_statement "puVar11 = puVar8 + uVar17;" (assignment_expression "puVar11 = puVar8 + uVar17" (identifier "puVar11") (= "=") (binary_expression "puVar8 + uVar17" (identifier "puVar8") (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "puVar10 = puVar23 + uVar17;" (assignment_expression "puVar10 = puVar23 + uVar17" (identifier "puVar10") (= "=") (binary_expression "puVar23 + uVar17" (identifier "puVar23") (+ "+") (identifier "uVar17"))) (; ";")) (labeled_statement "LAB_0002b098:\n      uVar19 = *puVar11;" (statement_identifier "LAB_0002b098") (: ":") (expression_statement "uVar19 = *puVar11;" (assignment_expression "uVar19 = *puVar11" (identifier "uVar19") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";"))) (expression_statement "puVar11 = puVar11 + -1;" (assignment_expression "puVar11 = puVar11 + -1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + -1" (identifier "puVar11") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;" (if "if") (parenthesized_expression "((uVar19 & *puVar10) == 0)" (( "(") (binary_expression "(uVar19 & *puVar10) == 0" (parenthesized_expression "(uVar19 & *puVar10)" (( "(") (binary_expression "uVar19 & *puVar10" (identifier "uVar19") (& "&") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x0002b0ac;" (goto "goto") (statement_identifier "code_r0x0002b0ac") (; ";"))) (expression_statement "puVar18 = (uint *)(uVar17 + 1);" (assignment_expression "puVar18 = (uint *)(uVar17 + 1)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uVar17 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar17 + 1)" (( "(") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar30 + -0x7a84)" (* "*") (cast_expression "(code **)(puVar30 + -0x7a84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7a84)" (( "(") (binary_expression "puVar30 + -0x7a84" (identifier "puVar30") (+ "+") (number_literal "-0x7a84")) () ")"))))) (; ";")) (if_statement "if ((int)puVar18 < (int)*puVar7) {\n        piVar9 = (int *)puVar7[2];\n      }\n      else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" (if "if") (parenthesized_expression "((int)puVar18 < (int)*puVar7)" (( "(") (binary_expression "(int)puVar18 < (int)*puVar7" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (< "<") (cast_expression "(int)*puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) () ")")) (compound_statement "{\n        piVar9 = (int *)puVar7[2];\n      }" ({ "{") (expression_statement "piVar9 = (int *)puVar7[2];" (assignment_expression "piVar9 = (int *)puVar7[2]" (identifier "piVar9") (= "=") (cast_expression "(int *)puVar7[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" (else "else") (compound_statement "{\n        *(uint **)(puVar31 + -0x34) = puVar8;\n        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);\n        puVar30 = *(undefined **)(puVar31 + -0x40);\n        puVar8 = *(uint **)(puVar31 + -0x34);\n      }" ({ "{") (expression_statement "*(uint **)(puVar31 + -0x34) = puVar8;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar8" (pointer_expression "*(uint **)(puVar31 + -0x34)" (* "*") (cast_expression "(uint **)(puVar31 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);" (assignment_expression "piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2)" (identifier "piVar9") (= "=") (cast_expression "(int *)(*pcVar29)(puVar7,uVar17 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar29)(puVar7,uVar17 + 2)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(puVar7,uVar17 + 2)" (( "(") (identifier "puVar7") (, ",") (binary_expression "uVar17 + 2" (identifier "uVar17") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "puVar8 = *(uint **)(puVar31 + -0x34);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x34)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(puVar31 + -0x34)" (* "*") (cast_expression "(uint **)(puVar31 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      } while ((int)puVar18 * 4 != iVar5);" (do "do") (compound_statement "{\n        puVar10 = (uint *)((int)puVar8 + iVar5);\n        puVar14 = (uint *)((int)puVar23 + iVar5);\n        puVar11 = (uint *)((int)piVar9 + iVar5);\n        iVar5 = iVar5 + 4;\n        *puVar11 = *puVar10 & *puVar14;\n      }" ({ "{") (expression_statement "puVar10 = (uint *)((int)puVar8 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar8 + iVar5)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar8 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar8 + iVar5)" (( "(") (binary_expression "(int)puVar8 + iVar5" (cast_expression "(int)puVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar8")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar14 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar14 = (uint *)((int)puVar23 + iVar5)" (identifier "puVar14") (= "=") (cast_expression "(uint *)((int)puVar23 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + iVar5)" (( "(") (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar11 = (uint *)((int)piVar9 + iVar5);" (assignment_expression "puVar11 = (uint *)((int)piVar9 + iVar5)" (identifier "puVar11") (= "=") (cast_expression "(uint *)((int)piVar9 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + iVar5)" (( "(") (binary_expression "(int)piVar9 + iVar5" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar11 = *puVar10 & *puVar14;" (assignment_expression "*puVar11 = *puVar10 & *puVar14" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (binary_expression "*puVar10 & *puVar14" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (& "&") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)puVar18 * 4 != iVar5)" (( "(") (binary_expression "(int)puVar18 * 4 != iVar5" (binary_expression "(int)puVar18 * 4" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (* "*") (number_literal "4")) (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (expression_statement "piVar9[(int)puVar18] = 0;" (assignment_expression "piVar9[(int)puVar18] = 0" (subscript_expression "piVar9[(int)puVar18]" (identifier "piVar9") ([ "[") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar13 = piVar9;" (assignment_expression "piVar13 = piVar9" (identifier "piVar13") (= "=") (identifier "piVar9")) (; ";")) (do_statement "do {\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      } while (iVar5 + 1 == 0);" (do "do") (compound_statement "{\n        iVar5 = *piVar13;\n        *piVar13 = iVar5 + 1;\n        piVar13 = piVar13 + 1;\n      }" ({ "{") (expression_statement "iVar5 = *piVar13;" (assignment_expression "iVar5 = *piVar13" (identifier "iVar5") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "*piVar13 = iVar5 + 1;" (assignment_expression "*piVar13 = iVar5 + 1" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" (identifier "piVar13") (= "=") (binary_expression "piVar13 + 1" (identifier "piVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 + 1 == 0)" (( "(") (binary_expression "iVar5 + 1 == 0" (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);" (assignment_expression "piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18])" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)puVar18 + piVar9[(int)puVar18])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + piVar9[(int)puVar18])" (( "(") (binary_expression "(int)puVar18 + piVar9[(int)puVar18]" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (subscript_expression "piVar9[(int)puVar18]" (identifier "piVar9") ([ "[") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (] "]"))) () ")")))) (; ";")) (expression_statement "piVar21 = (int *)-(int)piVar9;" (assignment_expression "piVar21 = (int *)-(int)piVar9" (identifier "piVar21") (= "=") (cast_expression "(int *)-(int)piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar9" (- "-") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))))) (; ";")) (goto_statement "goto LAB_0002b0c0;" (goto "goto") (statement_identifier "LAB_0002b0c0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" (else "else") (compound_statement "{\n    piVar15 = piVar9;\n    puVar8 = puVar18;\n    piVar21 = piVar20;\n    puVar23 = puVar22;\n    piVar27 = piVar26;\n    if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }\n  }" ({ "{") (expression_statement "piVar15 = piVar9;" (assignment_expression "piVar15 = piVar9" (identifier "piVar15") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "puVar8 = puVar18;" (assignment_expression "puVar8 = puVar18" (identifier "puVar8") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "piVar21 = piVar20;" (assignment_expression "piVar21 = piVar20" (identifier "piVar21") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "puVar23 = puVar22;" (assignment_expression "puVar23 = puVar22" (identifier "puVar23") (= "=") (identifier "puVar22")) (; ";")) (expression_statement "piVar27 = piVar26;" (assignment_expression "piVar27 = piVar26" (identifier "piVar27") (= "=") (identifier "piVar26")) (; ";")) (if_statement "if (-1 < (int)piVar26) {\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" (if "if") (parenthesized_expression "(-1 < (int)piVar26)" (( "(") (binary_expression "-1 < (int)piVar26" (number_literal "-1") (< "<") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")) (compound_statement "{\n      puVar8 = puVar7;\n      if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }\n      goto LAB_0002ac9c;\n    }" ({ "{") (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" (identifier "puVar8") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if ((int)piVar20 < (int)piVar26) {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }\n      else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" (if "if") (parenthesized_expression "((int)piVar20 < (int)piVar26)" (( "(") (binary_expression "(int)piVar20 < (int)piVar26" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (< "<") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")) (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }\n        puVar7[1] = (uint)piVar26;\n      }" ({ "{") (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar28 + 0x6cacc)" (* "*") (cast_expression "(code **)(puVar28 + 0x6cacc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x6cacc)" (( "(") (binary_expression "puVar28 + 0x6cacc" (identifier "puVar28") (+ "+") (number_literal "0x6cacc")) () ")"))))) (; ";")) (if_statement "if ((int)*puVar7 < (int)piVar26) {\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" (if "if") (parenthesized_expression "((int)*puVar7 < (int)piVar26)" (( "(") (binary_expression "(int)*puVar7 < (int)piVar26" (cast_expression "(int)*puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (< "<") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar9;\n          piVar9 = piVar26;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" ({ "{") (expression_statement "*(int **)(puVar31 + -0x34) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x34)" (* "*") (cast_expression "(int **)(puVar31 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "piVar9 = piVar26;" (assignment_expression "piVar9 = piVar26" (identifier "piVar9") (= "=") (identifier "piVar26")) (; ";")) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" (identifier "puVar24") (= "=") (cast_expression "(uint *)(*pcVar29)()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" (identifier "puVar22") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" (( "(") (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" (* "*") (cast_expression "(int *)(puVar31 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (puVar24 != puVar18) {\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" (if "if") (parenthesized_expression "(puVar24 != puVar18)" (( "(") (binary_expression "puVar24 != puVar18" (identifier "puVar24") (!= "!=") (identifier "puVar18")) () ")")) (compound_statement "{\n          puVar10 = puVar18 + (int)piVar20;\n          iVar5 = (int)piVar26 + (-1 - (int)piVar20);\n          puVar11 = puVar24 + (int)piVar20;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }\n          *puVar11 = (uint)piVar9;\n        }" ({ "{") (expression_statement "puVar10 = puVar18 + (int)piVar20;" (assignment_expression "puVar10 = puVar18 + (int)piVar20" (identifier "puVar10") (= "=") (binary_expression "puVar18 + (int)piVar20" (identifier "puVar18") (+ "+") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")))) (; ";")) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar20)" (identifier "iVar5") (= "=") (binary_expression "(int)piVar26 + (-1 - (int)piVar20)" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (+ "+") (parenthesized_expression "(-1 - (int)piVar20)" (( "(") (binary_expression "-1 - (int)piVar20" (number_literal "-1") (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))) () ")")))) (; ";")) (expression_statement "puVar11 = puVar24 + (int)piVar20;" (assignment_expression "puVar11 = puVar24 + (int)piVar20" (identifier "puVar11") (= "=") (binary_expression "puVar24 + (int)piVar20" (identifier "puVar24") (+ "+") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" (identifier "puVar23") (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);\n          }" ({ "{") (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" (do "do") (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" ({ "{") (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" (identifier "puVar23") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);" (assignment_expression "puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20)" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (int)piVar26 + (-1 - (int)piVar20)" (binary_expression "puVar11 + (int)piVar26" (identifier "puVar11") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) (+ "+") (parenthesized_expression "(-1 - (int)piVar20)" (( "(") (binary_expression "-1 - (int)piVar20" (number_literal "-1") (- "-") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (} "}"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (piVar20 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" (if "if") (parenthesized_expression "(piVar20 != (int *)0x0)" (( "(") (binary_expression "piVar20 != (int *)0x0" (identifier "piVar20") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);\n        }" ({ "{") (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while ((int)piVar20 << 2 != iVar5);" (do "do") (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" ({ "{") (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" (identifier "puVar23") (= "=") (cast_expression "(uint *)((int)puVar22 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + iVar5)" (( "(") (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar18 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + iVar5)" (( "(") (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar24 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 + iVar5)" (( "(") (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (| "|") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)piVar20 << 2 != iVar5)" (( "(") (binary_expression "(int)piVar20 << 2 != iVar5" (binary_expression "(int)piVar20 << 2" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (<< "<<") (number_literal "2")) (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar7[1] = (uint)piVar26;" (assignment_expression "puVar7[1] = (uint)piVar26" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)piVar26" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar26"))) (; ";")) (} "}")) (else_clause "else {\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" (else "else") (compound_statement "{\n        pcVar29 = *(code **)(puVar28 + 0x6cacc);\n        if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }\n        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }\n        iVar5 = 0;\n        if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }\n        puVar7[1] = (uint)piVar20;\n        piVar26 = piVar20;\n        puVar33 = puVar31 + -0x50;\n      }" ({ "{") (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6cacc);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6cacc)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar28 + 0x6cacc)" (* "*") (cast_expression "(code **)(puVar28 + 0x6cacc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x6cacc)" (( "(") (binary_expression "puVar28 + 0x6cacc" (identifier "puVar28") (+ "+") (number_literal "0x6cacc")) () ")"))))) (; ";")) (if_statement "if ((int)*puVar7 < (int)piVar20) {\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" (if "if") (parenthesized_expression "((int)*puVar7 < (int)piVar20)" (( "(") (binary_expression "(int)*puVar7 < (int)piVar20" (cast_expression "(int)*puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (< "<") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))) () ")")) (compound_statement "{\n          *(int **)(puVar31 + -0x34) = piVar13;\n          piVar9 = piVar20;\n          puVar24 = (uint *)(*pcVar29)();\n          puVar30 = *(undefined **)(puVar31 + -0x40);\n          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n        }" ({ "{") (expression_statement "*(int **)(puVar31 + -0x34) = piVar13;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar13" (pointer_expression "*(int **)(puVar31 + -0x34)" (* "*") (cast_expression "(int **)(puVar31 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "piVar13")) (; ";")) (expression_statement "piVar9 = piVar20;" (assignment_expression "piVar9 = piVar20" (identifier "piVar9") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "puVar24 = (uint *)(*pcVar29)();" (assignment_expression "puVar24 = (uint *)(*pcVar29)()" (identifier "puVar24") (= "=") (cast_expression "(uint *)(*pcVar29)()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" (identifier "puVar18") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" (( "(") (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" (* "*") (cast_expression "(int *)(puVar31 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((puVar24 != puVar22) && (piVar20 != piVar26)) {\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" (if "if") (parenthesized_expression "((puVar24 != puVar22) && (piVar20 != piVar26))" (( "(") (binary_expression "(puVar24 != puVar22) && (piVar20 != piVar26)" (parenthesized_expression "(puVar24 != puVar22)" (( "(") (binary_expression "puVar24 != puVar22" (identifier "puVar24") (!= "!=") (identifier "puVar22")) () ")")) (&& "&&") (parenthesized_expression "(piVar20 != piVar26)" (( "(") (binary_expression "piVar20 != piVar26" (identifier "piVar20") (!= "!=") (identifier "piVar26")) () ")"))) () ")")) (compound_statement "{\n          puVar10 = puVar22 + (int)piVar26;\n          iVar5 = (int)piVar20 + (-1 - (int)piVar26);\n          puVar11 = puVar24 + (int)piVar26;\n          piVar9 = (int *)*puVar10;\n          puVar23 = puVar11;\n          if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }\n          *puVar11 = (uint)piVar9;\n        }" ({ "{") (expression_statement "puVar10 = puVar22 + (int)piVar26;" (assignment_expression "puVar10 = puVar22 + (int)piVar26" (identifier "puVar10") (= "=") (binary_expression "puVar22 + (int)piVar26" (identifier "puVar22") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")))) (; ";")) (expression_statement "iVar5 = (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "iVar5 = (int)piVar20 + (-1 - (int)piVar26)" (identifier "iVar5") (= "=") (binary_expression "(int)piVar20 + (-1 - (int)piVar26)" (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20")) (+ "+") (parenthesized_expression "(-1 - (int)piVar26)" (( "(") (binary_expression "-1 - (int)piVar26" (number_literal "-1") (- "-") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")))) (; ";")) (expression_statement "puVar11 = puVar24 + (int)piVar26;" (assignment_expression "puVar11 = puVar24 + (int)piVar26" (identifier "puVar11") (= "=") (binary_expression "puVar24 + (int)piVar26" (identifier "puVar24") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "puVar23 = puVar11;" (assignment_expression "puVar23 = puVar11" (identifier "puVar23") (= "=") (identifier "puVar11")) (; ";")) (if_statement "if (iVar5 != 0) {\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);\n            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);\n          }" ({ "{") (do_statement "do {\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            } while (iVar5 != 0);" (do "do") (compound_statement "{\n              puVar10 = puVar10 + 1;\n              puVar8 = puVar23 + 1;\n              *puVar23 = (uint)piVar9;\n              iVar5 = iVar5 + -1;\n              piVar9 = (int *)*puVar10;\n              puVar23 = puVar8;\n            }" ({ "{") (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar23 = (uint)piVar9;" (assignment_expression "*puVar23 = (uint)piVar9" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" (identifier "puVar23") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);" (assignment_expression "puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26)" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (int)piVar20 + (-1 - (int)piVar26)" (binary_expression "puVar11 + (int)piVar20" (identifier "puVar11") (+ "+") (cast_expression "(int)piVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar20"))) (+ "+") (parenthesized_expression "(-1 - (int)piVar26)" (( "(") (binary_expression "-1 - (int)piVar26" (number_literal "-1") (- "-") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar11 = (uint)piVar9;" (assignment_expression "*puVar11 = (uint)piVar9" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (} "}"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (piVar26 != (int *)0x0) {\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" (if "if") (parenthesized_expression "(piVar26 != (int *)0x0)" (( "(") (binary_expression "piVar26 != (int *)0x0" (identifier "piVar26") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);\n        }" ({ "{") (do_statement "do {\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          } while (iVar5 != (int)piVar26 << 2);" (do "do") (compound_statement "{\n            puVar23 = (uint *)((int)puVar22 + iVar5);\n            puVar10 = (uint *)((int)puVar18 + iVar5);\n            puVar8 = (uint *)((int)puVar24 + iVar5);\n            iVar5 = iVar5 + 4;\n            piVar9 = (int *)*puVar10;\n            *puVar8 = *puVar23 | (uint)piVar9;\n          }" ({ "{") (expression_statement "puVar23 = (uint *)((int)puVar22 + iVar5);" (assignment_expression "puVar23 = (uint *)((int)puVar22 + iVar5)" (identifier "puVar23") (= "=") (cast_expression "(uint *)((int)puVar22 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + iVar5)" (( "(") (binary_expression "(int)puVar22 + iVar5" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar18 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + iVar5)" (( "(") (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar24 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 + iVar5)" (( "(") (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "*puVar8 = *puVar23 | (uint)piVar9;" (assignment_expression "*puVar8 = *puVar23 | (uint)piVar9" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (binary_expression "*puVar23 | (uint)piVar9" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (| "|") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != (int)piVar26 << 2)" (( "(") (binary_expression "iVar5 != (int)piVar26 << 2" (identifier "iVar5") (!= "!=") (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (<< "<<") (number_literal "2"))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar7[1] = (uint)piVar20;" (assignment_expression "puVar7[1] = (uint)piVar20" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)piVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar20"))) (; ";")) (expression_statement "piVar26 = piVar20;" (assignment_expression "piVar26 = piVar20" (identifier "piVar26") (= "=") (identifier "piVar20")) (; ";")) (expression_statement "puVar33 = puVar31 + -0x50;" (assignment_expression "puVar33 = puVar31 + -0x50" (identifier "puVar33") (= "=") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50"))) (; ";")) (} "}")))) (goto_statement "goto LAB_0002ac9c;" (goto "goto") (statement_identifier "LAB_0002ac9c") (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar9 = (int *)-(int)piVar27;" (assignment_expression "piVar9 = (int *)-(int)piVar27" (identifier "piVar9") (= "=") (cast_expression "(int *)-(int)piVar27" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar27" (- "-") (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27"))))) (; ";")) (expression_statement "piVar13 = (int *)((int)piVar27 * -4);" (assignment_expression "piVar13 = (int *)((int)piVar27 * -4)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)piVar27 * -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar27 * -4)" (( "(") (binary_expression "(int)piVar27 * -4" (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27")) (* "*") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "pcVar29 = *(code **)(puVar28 + 0x6c800);" (assignment_expression "pcVar29 = *(code **)(puVar28 + 0x6c800)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar28 + 0x6c800)" (* "*") (cast_expression "(code **)(puVar28 + 0x6c800)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x6c800)" (( "(") (binary_expression "puVar28 + 0x6c800" (identifier "puVar28") (+ "+") (number_literal "0x6c800")) () ")"))))) (; ";")) (if_statement "if (piVar13 < (int *)0x7f01) {\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }\n  else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" (if "if") (parenthesized_expression "(piVar13 < (int *)0x7f01)" (( "(") (binary_expression "piVar13 < (int *)0x7f01" (identifier "piVar13") (< "<") (cast_expression "(int *)0x7f01" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7f01"))) () ")")) (compound_statement "{\n    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);\n    puVar32 = puVar31 + -(int)piVar13 + -0x50;\n    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);\n  }" ({ "{") (expression_statement "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)piVar13 + 7U & 0xfffffff8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + 7U & 0xfffffff8)" (( "(") (binary_expression "(int)piVar13 + 7U & 0xfffffff8" (binary_expression "(int)piVar13 + 7U" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar32 = puVar31 + -(int)piVar13 + -0x50;" (assignment_expression "puVar32 = puVar31 + -(int)piVar13 + -0x50" (identifier "puVar32") (= "=") (binary_expression "puVar31 + -(int)piVar13 + -0x50" (binary_expression "puVar31 + -(int)piVar13" (identifier "puVar31") (+ "+") (unary_expression "-(int)piVar13" (- "-") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")))) (+ "+") (number_literal "-0x50"))) (; ";")) (expression_statement "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);" (assignment_expression "puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(puVar31 + -(int)piVar13 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -(int)piVar13 + -0x40)" (( "(") (binary_expression "puVar31 + -(int)piVar13 + -0x40" (binary_expression "puVar31 + -(int)piVar13" (identifier "puVar31") (+ "+") (unary_expression "-(int)piVar13" (- "-") (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")))) (+ "+") (number_literal "-0x40")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" (else "else") (compound_statement "{\n    *(int **)(puVar31 + -0x38) = piVar9;\n    *(int **)(puVar31 + -0x34) = piVar15;\n    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    piVar9 = *(int **)(puVar31 + -0x38);\n    piVar15 = *(int **)(puVar31 + -0x34);\n  }" ({ "{") (expression_statement "*(int **)(puVar31 + -0x38) = piVar9;" (assignment_expression "*(int **)(puVar31 + -0x38) = piVar9" (pointer_expression "*(int **)(puVar31 + -0x38)" (* "*") (cast_expression "(int **)(puVar31 + -0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x38)" (( "(") (binary_expression "puVar31 + -0x38" (identifier "puVar31") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" (* "*") (cast_expression "(int **)(puVar31 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);" (assignment_expression "puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(*pcVar29)(puVar31 + -0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar29)(puVar31 + -0x30)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "piVar9 = *(int **)(puVar31 + -0x38);" (assignment_expression "piVar9 = *(int **)(puVar31 + -0x38)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar31 + -0x38)" (* "*") (cast_expression "(int **)(puVar31 + -0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x38)" (( "(") (binary_expression "puVar31 + -0x38" (identifier "puVar31") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "piVar15 = *(int **)(puVar31 + -0x34);" (assignment_expression "piVar15 = *(int **)(puVar31 + -0x34)" (identifier "piVar15") (= "=") (pointer_expression "*(int **)(puVar31 + -0x34)" (* "*") (cast_expression "(int **)(puVar31 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar17 = *puVar8;" (assignment_expression "uVar17 = *puVar8" (identifier "uVar17") (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "*puVar18 = uVar17 - 1;" (assignment_expression "*puVar18 = uVar17 - 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) {\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }\n  else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }\nLAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;\nLAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);\n    *(int **)(puVar31 + -0x34) = piVar15;\n    (*pcVar29)(puVar7);\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n    puVar24 = (uint *)puVar7[2];\n    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);\n    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;\nLAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);\n    if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }\nLAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;\n    *puVar24 = 1;\n  }" ({ "{") (if_statement "if (piVar27 != (int *)0xffffffff) {\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" (if "if") (parenthesized_expression "(piVar27 != (int *)0xffffffff)" (( "(") (binary_expression "piVar27 != (int *)0xffffffff" (identifier "piVar27") (!= "!=") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n      uVar17 = puVar8[1];\n      puVar18[1] = uVar17 - 1;\n      if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }\n      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }\n    }" ({ "{") (expression_statement "uVar17 = puVar8[1];" (assignment_expression "uVar17 = puVar8[1]" (identifier "uVar17") (= "=") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18[1] = uVar17 - 1;" (assignment_expression "puVar18[1] = uVar17 - 1" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 == 0) {\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }\n      else {\n        iVar5 = 2;\n      }" (if "if") (parenthesized_expression "(uVar17 == 0)" (( "(") (binary_expression "uVar17 == 0" (identifier "uVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar10 = puVar8 + 2;\n        iVar5 = 2;\n        puVar22 = puVar18 + 2;\n        do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);\n      }" ({ "{") (expression_statement "puVar10 = puVar8 + 2;" (assignment_expression "puVar10 = puVar8 + 2" (identifier "puVar10") (= "=") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" (identifier "iVar5") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar22 = puVar18 + 2;" (assignment_expression "puVar22 = puVar18 + 2" (identifier "puVar22") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        } while (piVar13 == (int *)0x0);" (do "do") (compound_statement "{\n          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);\n          iVar5 = iVar5 + 1;\n          if (piVar13 == (int *)0x0) goto LAB_0002abf4;\n          piVar13 = (int *)*puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = (int)piVar13 - 1;\n          puVar22 = puVar22 + 1;\n        }" ({ "{") (expression_statement "piVar13 = (int *)(uint)(iVar5 < (int)piVar9);" (assignment_expression "piVar13 = (int *)(uint)(iVar5 < (int)piVar9)" (identifier "piVar13") (= "=") (cast_expression "(int *)(uint)(iVar5 < (int)piVar9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(iVar5 < (int)piVar9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 < (int)piVar9)" (( "(") (binary_expression "iVar5 < (int)piVar9" (identifier "iVar5") (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")"))))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar13 == (int *)0x0) goto LAB_0002abf4;" (if "if") (parenthesized_expression "(piVar13 == (int *)0x0)" (( "(") (binary_expression "piVar13 == (int *)0x0" (identifier "piVar13") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002abf4;" (goto "goto") (statement_identifier "LAB_0002abf4") (; ";"))) (expression_statement "piVar13 = (int *)*puVar10;" (assignment_expression "piVar13 = (int *)*puVar10" (identifier "piVar13") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar22 = (int)piVar13 - 1;" (assignment_expression "*puVar22 = (int)piVar13 - 1" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (binary_expression "(int)piVar13 - 1" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar13 == (int *)0x0)" (( "(") (binary_expression "piVar13 == (int *)0x0" (identifier "piVar13") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n        iVar5 = 2;\n      }" (else "else") (compound_statement "{\n        iVar5 = 2;\n      }" ({ "{") (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" (identifier "iVar5") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" (if "if") (parenthesized_expression "((puVar8 != puVar18) && (iVar5 < (int)piVar9))" (( "(") (binary_expression "(puVar8 != puVar18) && (iVar5 < (int)piVar9)" (parenthesized_expression "(puVar8 != puVar18)" (( "(") (binary_expression "puVar8 != puVar18" (identifier "puVar8") (!= "!=") (identifier "puVar18")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 < (int)piVar9)" (( "(") (binary_expression "iVar5 < (int)piVar9" (identifier "iVar5") (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")"))) () ")")) (compound_statement "{\n        puVar10 = puVar8 + iVar5;\n        puVar22 = puVar18 + iVar5;\n        do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);\n      }" ({ "{") (expression_statement "puVar10 = puVar8 + iVar5;" (assignment_expression "puVar10 = puVar8 + iVar5" (identifier "puVar10") (= "=") (binary_expression "puVar8 + iVar5" (identifier "puVar8") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "puVar22 = puVar18 + iVar5;" (assignment_expression "puVar22 = puVar18 + iVar5" (identifier "puVar22") (= "=") (binary_expression "puVar18 + iVar5" (identifier "puVar18") (+ "+") (identifier "iVar5"))) (; ";")) (do_statement "do {\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        } while (puVar8 + (int)piVar9 != puVar10);" (do "do") (compound_statement "{\n          uVar17 = *puVar10;\n          puVar10 = puVar10 + 1;\n          *puVar22 = uVar17;\n          puVar22 = puVar22 + 1;\n        }" ({ "{") (expression_statement "uVar17 = *puVar10;" (assignment_expression "uVar17 = *puVar10" (identifier "uVar17") (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar22 = uVar17;" (assignment_expression "*puVar22 = uVar17" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 + (int)piVar9 != puVar10)" (( "(") (binary_expression "puVar8 + (int)piVar9 != puVar10" (binary_expression "puVar8 + (int)piVar9" (identifier "puVar8") (+ "+") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) (!= "!=") (identifier "puVar10")) () ")")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0002abf4:\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (statement_identifier "LAB_0002abf4") (: ":") (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (identifier "piVar26") (= "=") (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (( "(") (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar18[~(uint)piVar27] == 0)" (( "(") (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" (identifier "puVar18") ([ "[") (unary_expression "~(uint)piVar27" (~ "~") (cast_expression "(uint)piVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar27"))) (] "]")) (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";"))) (if_statement "if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;" (if "if") (parenthesized_expression "((int)piVar9 <= (int)*puVar7)" (( "(") (binary_expression "(int)piVar9 <= (int)*puVar7" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (<= "<=") (cast_expression "(int)*puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) () ")")) (goto_statement "goto LAB_0002ac14;" (goto "goto") (statement_identifier "LAB_0002ac14") (; ";"))) (labeled_statement "LAB_0002ad34:\n    pcVar29 = *(code **)(puVar30 + -0x7a84);" (statement_identifier "LAB_0002ad34") (: ":") (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a84)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar30 + -0x7a84)" (* "*") (cast_expression "(code **)(puVar30 + -0x7a84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7a84)" (( "(") (binary_expression "puVar30 + -0x7a84" (identifier "puVar30") (+ "+") (number_literal "-0x7a84")) () ")"))))) (; ";"))) (expression_statement "*(int **)(puVar31 + -0x34) = piVar15;" (assignment_expression "*(int **)(puVar31 + -0x34) = piVar15" (pointer_expression "*(int **)(puVar31 + -0x34)" (* "*") (cast_expression "(int **)(puVar31 + -0x34)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "(*pcVar29)(puVar7);" (call_expression "(*pcVar29)(puVar7)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "puVar24 = (uint *)puVar7[2];" (assignment_expression "puVar24 = (uint *)puVar7[2]" (identifier "puVar24") (= "=") (cast_expression "(uint *)puVar7[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);" (assignment_expression "puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8)" (identifier "puVar23") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar31 + -0x34) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar31 + -0x34) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x34) + 8)" (( "(") (binary_expression "*(int *)(puVar31 + -0x34) + 8" (pointer_expression "*(int *)(puVar31 + -0x34)" (* "*") (cast_expression "(int *)(puVar31 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;" (if "if") (parenthesized_expression "((int)piVar21 < (int)piVar26)" (( "(") (binary_expression "(int)piVar21 < (int)piVar26" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (< "<") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) () ")")) (goto_statement "goto LAB_0002ad60;" (goto "goto") (statement_identifier "LAB_0002ad60") (; ";"))) (labeled_statement "LAB_0002ac20:\n    piVar21 = (int *)((int)piVar26 - 1);" (statement_identifier "LAB_0002ac20") (: ":") (expression_statement "piVar21 = (int *)((int)piVar26 - 1);" (assignment_expression "piVar21 = (int *)((int)piVar26 - 1)" (identifier "piVar21") (= "=") (cast_expression "(int *)((int)piVar26 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar26 - 1)" (( "(") (binary_expression "(int)piVar26 - 1" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (- "-") (number_literal "1")) () ")")))) (; ";"))) (if_statement "if (piVar26 != (int *)0x0) {\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" (if "if") (parenthesized_expression "(piVar26 != (int *)0x0)" (( "(") (binary_expression "piVar26 != (int *)0x0" (identifier "piVar26") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }\n      iVar3 = (int)piVar26 << 2;\n      piVar21 = piVar26;\nLAB_0002adb0:\n      iVar5 = 0;\n      do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);\n      goto LAB_0002addc;\n    }" ({ "{") (if_statement "if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" (if "if") (parenthesized_expression "((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0)" (( "(") (binary_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0" (parenthesized_expression "(~puVar23[(int)piVar21] & puVar18[(int)piVar21])" (( "(") (binary_expression "~puVar23[(int)piVar21] & puVar18[(int)piVar21]" (unary_expression "~puVar23[(int)piVar21]" (~ "~") (subscript_expression "puVar23[(int)piVar21]" (identifier "puVar23") ([ "[") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (] "]"))) (& "&") (subscript_expression "puVar18[(int)piVar21]" (identifier "puVar18") ([ "[") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (] "]"))) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar8 = puVar23 + (int)piVar26;\n        puVar22 = puVar18 + (int)piVar26;\n        piVar9 = piVar21;\n        do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);\n      }" ({ "{") (expression_statement "puVar8 = puVar23 + (int)piVar26;" (assignment_expression "puVar8 = puVar23 + (int)piVar26" (identifier "puVar8") (= "=") (binary_expression "puVar23 + (int)piVar26" (identifier "puVar23") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")))) (; ";")) (expression_statement "puVar22 = puVar18 + (int)piVar26;" (assignment_expression "puVar22 = puVar18 + (int)piVar26" (identifier "puVar22") (= "=") (binary_expression "puVar18 + (int)piVar26" (identifier "puVar18") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")))) (; ";")) (expression_statement "piVar9 = piVar21;" (assignment_expression "piVar9 = piVar21" (identifier "piVar9") (= "=") (identifier "piVar21")) (; ";")) (do_statement "do {\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        } while ((~*puVar10 & *puVar11) == 0);" (do "do") (compound_statement "{\n          piVar21 = piVar9;\n          piVar9 = (int *)((int)piVar21 - 1);\n          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;\n          puVar10 = puVar8 + -2;\n          puVar11 = puVar22 + -2;\n          puVar8 = puVar8 + -1;\n          puVar22 = puVar22 + -1;\n          piVar26 = piVar21;\n        }" ({ "{") (expression_statement "piVar21 = piVar9;" (assignment_expression "piVar21 = piVar9" (identifier "piVar21") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "piVar9 = (int *)((int)piVar21 - 1);" (assignment_expression "piVar9 = (int *)((int)piVar21 - 1)" (identifier "piVar9") (= "=") (cast_expression "(int *)((int)piVar21 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar21 - 1)" (( "(") (binary_expression "(int)piVar21 - 1" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;" (if "if") (parenthesized_expression "(piVar9 == (int *)0xffffffff)" (( "(") (binary_expression "piVar9 == (int *)0xffffffff" (identifier "piVar9") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (goto_statement "goto LAB_0002ac84;" (goto "goto") (statement_identifier "LAB_0002ac84") (; ";"))) (expression_statement "puVar10 = puVar8 + -2;" (assignment_expression "puVar10 = puVar8 + -2" (identifier "puVar10") (= "=") (binary_expression "puVar8 + -2" (identifier "puVar8") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar11 = puVar22 + -2;" (assignment_expression "puVar11 = puVar22 + -2" (identifier "puVar11") (= "=") (binary_expression "puVar22 + -2" (identifier "puVar22") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar22 = puVar22 + -1;" (assignment_expression "puVar22 = puVar22 + -1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + -1" (identifier "puVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" (identifier "piVar26") (= "=") (identifier "piVar21")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((~*puVar10 & *puVar11) == 0)" (( "(") (binary_expression "(~*puVar10 & *puVar11) == 0" (parenthesized_expression "(~*puVar10 & *puVar11)" (( "(") (binary_expression "~*puVar10 & *puVar11" (unary_expression "~*puVar10" (~ "~") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (& "&") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) () ")")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar3 = (int)piVar26 << 2;" (assignment_expression "iVar3 = (int)piVar26 << 2" (identifier "iVar3") (= "=") (binary_expression "(int)piVar26 << 2" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (<< "<<") (number_literal "2"))) (; ";")) (expression_statement "piVar21 = piVar26;" (assignment_expression "piVar21 = piVar26" (identifier "piVar21") (= "=") (identifier "piVar26")) (; ";")) (labeled_statement "LAB_0002adb0:\n      iVar5 = 0;" (statement_identifier "LAB_0002adb0") (: ":") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      } while (iVar3 != iVar5);" (do "do") (compound_statement "{\n        puVar22 = (uint *)((int)puVar23 + iVar5);\n        puVar10 = (uint *)((int)puVar18 + iVar5);\n        puVar8 = (uint *)((int)puVar24 + iVar5);\n        iVar5 = iVar5 + 4;\n        piVar9 = (int *)*puVar10;\n        *puVar8 = ~*puVar22 & (uint)piVar9;\n      }" ({ "{") (expression_statement "puVar22 = (uint *)((int)puVar23 + iVar5);" (assignment_expression "puVar22 = (uint *)((int)puVar23 + iVar5)" (identifier "puVar22") (= "=") (cast_expression "(uint *)((int)puVar23 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + iVar5)" (( "(") (binary_expression "(int)puVar23 + iVar5" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar18 + iVar5);" (assignment_expression "puVar10 = (uint *)((int)puVar18 + iVar5)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar18 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + iVar5)" (( "(") (binary_expression "(int)puVar18 + iVar5" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)((int)puVar24 + iVar5);" (assignment_expression "puVar8 = (uint *)((int)puVar24 + iVar5)" (identifier "puVar8") (= "=") (cast_expression "(uint *)((int)puVar24 + iVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 + iVar5)" (( "(") (binary_expression "(int)puVar24 + iVar5" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (+ "+") (identifier "iVar5")) () ")")))) (; ";")) (expression_statement "iVar5 = iVar5 + 4;" (assignment_expression "iVar5 = iVar5 + 4" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar10;" (assignment_expression "piVar9 = (int *)*puVar10" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar10" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (expression_statement "*puVar8 = ~*puVar22 & (uint)piVar9;" (assignment_expression "*puVar8 = ~*puVar22 & (uint)piVar9" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (binary_expression "~*puVar22 & (uint)piVar9" (unary_expression "~*puVar22" (~ "~") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (& "&") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 != iVar5)" (( "(") (binary_expression "iVar3 != iVar5" (identifier "iVar3") (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (goto_statement "goto LAB_0002addc;" (goto "goto") (statement_identifier "LAB_0002addc") (; ";")) (} "}"))) (labeled_statement "LAB_0002ac84:\n    puVar18 = (uint *)0xffffffff;" (statement_identifier "LAB_0002ac84") (: ":") (expression_statement "puVar18 = (uint *)0xffffffff;" (assignment_expression "puVar18 = (uint *)0xffffffff" (identifier "puVar18") (= "=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";"))) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" (else "else") (compound_statement "{\n    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;\n    do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);\n    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));\n    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;\nLAB_0002ac14:\n    piVar9 = piVar13;\n    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;\nLAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;\n    puVar8 = puVar18 + (int)piVar21;\n    iVar5 = (int)piVar26 + (-1 - (int)piVar21);\n    puVar10 = puVar24 + (int)piVar21;\n    piVar9 = (int *)*puVar8;\n    puVar22 = puVar10;\n    if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }\n    *puVar10 = (uint)piVar9;\n    if (piVar21 != (int *)0x0) goto LAB_0002adb0;\nLAB_0002addc:\n    uVar17 = *puVar24;\n    *puVar24 = uVar17 + 1;\n    if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }\n    puVar18 = (uint *)-(int)piVar26;\n  }" ({ "{") (if_statement "if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))\n    goto LAB_0002abf4;" (if "if") (parenthesized_expression "((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))" (( "(") (binary_expression "(puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" (parenthesized_expression "(puVar8 == puVar18)" (( "(") (binary_expression "puVar8 == puVar18" (identifier "puVar8") (== "==") (identifier "puVar18")) () ")")) (|| "||") (parenthesized_expression "(iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff)" (( "(") (comma_expression "iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "iVar5 = 1" (identifier "iVar5") (= "=") (number_literal "1")) (, ",") (comma_expression "puVar22 = puVar18, piVar27 == (int *)0xffffffff" (assignment_expression "puVar22 = puVar18" (identifier "puVar22") (= "=") (identifier "puVar18")) (, ",") (binary_expression "piVar27 == (int *)0xffffffff" (identifier "piVar27") (== "==") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))))) () ")"))) () ")")) (goto_statement "goto LAB_0002abf4;" (goto "goto") (statement_identifier "LAB_0002abf4") (; ";"))) (do_statement "do {\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    } while (iVar5 < (int)piVar9);" (do "do") (compound_statement "{\n      puVar8 = puVar8 + 1;\n      piVar13 = (int *)*puVar8;\n      iVar5 = iVar5 + 1;\n      puVar22[1] = (uint)piVar13;\n      puVar22 = puVar22 + 1;\n    }" ({ "{") (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar13 = (int *)*puVar8;" (assignment_expression "piVar13 = (int *)*puVar8" (identifier "piVar13") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar22[1] = (uint)piVar13;" (assignment_expression "puVar22[1] = (uint)piVar13" (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)piVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar13"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 < (int)piVar9)" (( "(") (binary_expression "iVar5 < (int)piVar9" (identifier "iVar5") (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")) (; ";")) (expression_statement "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));" (assignment_expression "piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (identifier "piVar26") (= "=") (cast_expression "(int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0))" (( "(") (binary_expression "(int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0)" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (- "-") (call_expression "(uint)(puVar18[~(uint)piVar27] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar18[~(uint)piVar27] == 0)" (( "(") (binary_expression "puVar18[~(uint)piVar27] == 0" (subscript_expression "puVar18[~(uint)piVar27]" (identifier "puVar18") ([ "[") (unary_expression "~(uint)piVar27" (~ "~") (cast_expression "(uint)piVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar27"))) (] "]")) (== "==") (number_literal "0")) () ")")))) () ")")))) (; ";")) (if_statement "if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;" (if "if") (parenthesized_expression "((int)*puVar7 < (int)piVar9)" (( "(") (binary_expression "(int)*puVar7 < (int)piVar9" (cast_expression "(int)*puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (< "<") (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9"))) () ")")) (goto_statement "goto LAB_0002ad34;" (goto "goto") (statement_identifier "LAB_0002ad34") (; ";"))) (labeled_statement "LAB_0002ac14:\n    piVar9 = piVar13;" (statement_identifier "LAB_0002ac14") (: ":") (expression_statement "piVar9 = piVar13;" (assignment_expression "piVar9 = piVar13" (identifier "piVar9") (= "=") (identifier "piVar13")) (; ";"))) (if_statement "if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;" (if "if") (parenthesized_expression "((int)piVar26 <= (int)piVar21)" (( "(") (binary_expression "(int)piVar26 <= (int)piVar21" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (<= "<=") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21"))) () ")")) (goto_statement "goto LAB_0002ac20;" (goto "goto") (statement_identifier "LAB_0002ac20") (; ";"))) (labeled_statement "LAB_0002ad60:\n    iVar3 = (int)piVar21 * 4;" (statement_identifier "LAB_0002ad60") (: ":") (expression_statement "iVar3 = (int)piVar21 * 4;" (assignment_expression "iVar3 = (int)piVar21 * 4" (identifier "iVar3") (= "=") (binary_expression "(int)piVar21 * 4" (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")) (* "*") (number_literal "4"))) (; ";"))) (expression_statement "puVar8 = puVar18 + (int)piVar21;" (assignment_expression "puVar8 = puVar18 + (int)piVar21" (identifier "puVar8") (= "=") (binary_expression "puVar18 + (int)piVar21" (identifier "puVar18") (+ "+") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")))) (; ";")) (expression_statement "iVar5 = (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "iVar5 = (int)piVar26 + (-1 - (int)piVar21)" (identifier "iVar5") (= "=") (binary_expression "(int)piVar26 + (-1 - (int)piVar21)" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (+ "+") (parenthesized_expression "(-1 - (int)piVar21)" (( "(") (binary_expression "-1 - (int)piVar21" (number_literal "-1") (- "-") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21"))) () ")")))) (; ";")) (expression_statement "puVar10 = puVar24 + (int)piVar21;" (assignment_expression "puVar10 = puVar24 + (int)piVar21" (identifier "puVar10") (= "=") (binary_expression "puVar24 + (int)piVar21" (identifier "puVar24") (+ "+") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21")))) (; ";")) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "puVar22 = puVar10;" (assignment_expression "puVar22 = puVar10" (identifier "puVar22") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);\n      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);\n    }" ({ "{") (do_statement "do {\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      } while (iVar5 != 0);" (do "do") (compound_statement "{\n        puVar8 = puVar8 + 1;\n        *puVar22 = (uint)piVar9;\n        iVar5 = iVar5 + -1;\n        piVar9 = (int *)*puVar8;\n        puVar22 = puVar22 + 1;\n      }" ({ "{") (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar22 = (uint)piVar9;" (assignment_expression "*puVar22 = (uint)piVar9" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar9 = (int *)*puVar8;" (assignment_expression "piVar9 = (int *)*puVar8" (identifier "piVar9") (= "=") (cast_expression "(int *)*puVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);" (assignment_expression "puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21)" (identifier "puVar10") (= "=") (binary_expression "puVar10 + (int)piVar26 + (-1 - (int)piVar21)" (binary_expression "puVar10 + (int)piVar26" (identifier "puVar10") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))) (+ "+") (parenthesized_expression "(-1 - (int)piVar21)" (( "(") (binary_expression "-1 - (int)piVar21" (number_literal "-1") (- "-") (cast_expression "(int)piVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar21"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar10 = (uint)piVar9;" (assignment_expression "*puVar10 = (uint)piVar9" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (if_statement "if (piVar21 != (int *)0x0) goto LAB_0002adb0;" (if "if") (parenthesized_expression "(piVar21 != (int *)0x0)" (( "(") (binary_expression "piVar21 != (int *)0x0" (identifier "piVar21") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002adb0;" (goto "goto") (statement_identifier "LAB_0002adb0") (; ";"))) (labeled_statement "LAB_0002addc:\n    uVar17 = *puVar24;" (statement_identifier "LAB_0002addc") (: ":") (expression_statement "uVar17 = *puVar24;" (assignment_expression "uVar17 = *puVar24" (identifier "uVar17") (= "=") (pointer_expression "*puVar24" (* "*") (identifier "puVar24"))) (; ";"))) (expression_statement "*puVar24 = uVar17 + 1;" (assignment_expression "*puVar24 = uVar17 + 1" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 + 1 == 0) {\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" (if "if") (parenthesized_expression "(uVar17 + 1 == 0)" (( "(") (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }\n      uVar17 = puVar24[1];\n      puVar24[1] = uVar17 + 1;\n      if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }\n    }" ({ "{") (if_statement "if (piVar26 == (int *)0x1) {\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" (if "if") (parenthesized_expression "(piVar26 == (int *)0x1)" (( "(") (binary_expression "piVar26 == (int *)0x1" (identifier "piVar26") (== "==") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\nLAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;\n        puVar24 = puVar24 + (int)piVar26;\n        *puVar24 = 1;\n        goto LAB_0002ac90;\n      }" ({ "{") (labeled_statement "LAB_0002ae34:\n        puVar18 = (uint *)~(uint)piVar26;" (statement_identifier "LAB_0002ae34") (: ":") (expression_statement "puVar18 = (uint *)~(uint)piVar26;" (assignment_expression "puVar18 = (uint *)~(uint)piVar26" (identifier "puVar18") (= "=") (cast_expression "(uint *)~(uint)piVar26" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "~(uint)piVar26" (~ "~") (cast_expression "(uint)piVar26" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar26"))))) (; ";"))) (expression_statement "puVar24 = puVar24 + (int)piVar26;" (assignment_expression "puVar24 = puVar24 + (int)piVar26" (identifier "puVar24") (= "=") (binary_expression "puVar24 + (int)piVar26" (identifier "puVar24") (+ "+") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")))) (; ";")) (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ac90;" (goto "goto") (statement_identifier "LAB_0002ac90") (; ";")) (} "}"))) (expression_statement "uVar17 = puVar24[1];" (assignment_expression "uVar17 = puVar24[1]" (identifier "uVar17") (= "=") (subscript_expression "puVar24[1]" (identifier "puVar24") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar24[1] = uVar17 + 1;" (assignment_expression "puVar24[1] = uVar17 + 1" (subscript_expression "puVar24[1]" (identifier "puVar24") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar17 + 1 == 0) {\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" (if "if") (parenthesized_expression "(uVar17 + 1 == 0)" (( "(") (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        piVar13 = (int *)0x2;\n        puVar18 = puVar24 + 2;\n        do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);\n      }" ({ "{") (expression_statement "piVar13 = (int *)0x2;" (assignment_expression "piVar13 = (int *)0x2" (identifier "piVar13") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "puVar18 = puVar24 + 2;" (assignment_expression "puVar18 = puVar24 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar24 + 2" (identifier "puVar24") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        } while (uVar17 + 1 == 0);" (do "do") (compound_statement "{\n          bVar1 = piVar26 == piVar13;\n          piVar13 = (int *)((int)piVar13 + 1);\n          if (bVar1) goto LAB_0002ae34;\n          uVar17 = *puVar18;\n          *puVar18 = uVar17 + 1;\n          puVar18 = puVar18 + 1;\n        }" ({ "{") (expression_statement "bVar1 = piVar26 == piVar13;" (assignment_expression "bVar1 = piVar26 == piVar13" (identifier "bVar1") (= "=") (binary_expression "piVar26 == piVar13" (identifier "piVar26") (== "==") (identifier "piVar13"))) (; ";")) (expression_statement "piVar13 = (int *)((int)piVar13 + 1);" (assignment_expression "piVar13 = (int *)((int)piVar13 + 1)" (identifier "piVar13") (= "=") (cast_expression "(int *)((int)piVar13 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar13 + 1)" (( "(") (binary_expression "(int)piVar13 + 1" (cast_expression "(int)piVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar13")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) goto LAB_0002ae34;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_0002ae34;" (goto "goto") (statement_identifier "LAB_0002ae34") (; ";"))) (expression_statement "uVar17 = *puVar18;" (assignment_expression "uVar17 = *puVar18" (identifier "uVar17") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar18 = uVar17 + 1;" (assignment_expression "*puVar18 = uVar17 + 1" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (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 "(uVar17 + 1 == 0)" (( "(") (binary_expression "uVar17 + 1 == 0" (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar18 = (uint *)-(int)piVar26;" (assignment_expression "puVar18 = (uint *)-(int)piVar26" (identifier "puVar18") (= "=") (cast_expression "(uint *)-(int)piVar26" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar26" (- "-") (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26"))))) (; ";")) (} "}")))) (labeled_statement "LAB_0002ac90:\n  puVar8 = *(uint **)(puVar31 + -0x30);" (statement_identifier "LAB_0002ac90") (: ":") (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(puVar31 + -0x30)" (* "*") (cast_expression "(uint **)(puVar31 + -0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";"))) (expression_statement "puVar7[1] = (uint)puVar18;" (assignment_expression "puVar7[1] = (uint)puVar18" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "puVar22 = puVar23;" (assignment_expression "puVar22 = puVar23" (identifier "puVar22") (= "=") (identifier "puVar23")) (; ";")) (goto_statement "goto joined_r0x0002b0c4;" (goto "goto") (statement_identifier "joined_r0x0002b0c4") (; ";")) (labeled_statement "code_r0x0002b0ac:\n  uVar17 = uVar17 - 1;" (statement_identifier "code_r0x0002b0ac") (: ":") (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";"))) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + -1" (identifier "puVar10") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;" (if "if") (parenthesized_expression "(uVar17 == 0xffffffff)" (( "(") (binary_expression "uVar17 == 0xffffffff" (identifier "uVar17") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto code_r0x0002b0b8;" (goto "goto") (statement_identifier "code_r0x0002b0b8") (; ";"))) (goto_statement "goto LAB_0002b098;" (goto "goto") (statement_identifier "LAB_0002b098") (; ";")) (labeled_statement "code_r0x0002b0b8:\n  *puVar24 = 1;" (statement_identifier "code_r0x0002b0b8") (: ":") (expression_statement "*puVar24 = 1;" (assignment_expression "*puVar24 = 1" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (= "=") (number_literal "1")) (; ";"))) (expression_statement "piVar21 = (int *)0xffffffff;" (assignment_expression "piVar21 = (int *)0xffffffff" (identifier "piVar21") (= "=") (cast_expression "(int *)0xffffffff" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";")) (labeled_statement "LAB_0002b0c0:\n  puVar8 = *(uint **)(puVar31 + -0x30);" (statement_identifier "LAB_0002b0c0") (: ":") (expression_statement "puVar8 = *(uint **)(puVar31 + -0x30);" (assignment_expression "puVar8 = *(uint **)(puVar31 + -0x30)" (identifier "puVar8") (= "=") (pointer_expression "*(uint **)(puVar31 + -0x30)" (* "*") (cast_expression "(uint **)(puVar31 + -0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";"))) (expression_statement "puVar7[1] = (uint)piVar21;" (assignment_expression "puVar7[1] = (uint)piVar21" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)piVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar21"))) (; ";")) (expression_statement "puVar32 = puVar34;" (assignment_expression "puVar32 = puVar34" (identifier "puVar32") (= "=") (identifier "puVar34")) (; ";")) (labeled_statement "joined_r0x0002b0c4:\n  piVar26 = piVar21;" (statement_identifier "joined_r0x0002b0c4") (: ":") (expression_statement "piVar26 = piVar21;" (assignment_expression "piVar26 = piVar21" (identifier "piVar26") (= "=") (identifier "piVar21")) (; ";"))) (expression_statement "puVar33 = puVar32;" (assignment_expression "puVar33 = puVar32" (identifier "puVar33") (= "=") (identifier "puVar32")) (; ";")) (if_statement "if (puVar8 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" (if "if") (parenthesized_expression "(puVar8 != (uint *)0x0)" (( "(") (binary_expression "puVar8 != (uint *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar31 + -0x40);\n  }" ({ "{") (expression_statement "(**(code **)(puVar30 + -0x7a2c))();" (call_expression "(**(code **)(puVar30 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar30 + -0x7a2c))" (( "(") (pointer_expression "**(code **)(puVar30 + -0x7a2c)" (* "*") (pointer_expression "*(code **)(puVar30 + -0x7a2c)" (* "*") (cast_expression "(code **)(puVar30 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7a2c)" (( "(") (binary_expression "puVar30 + -0x7a2c" (identifier "puVar30") (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x40);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x40)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x40)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x40)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_0002ac9c:\n  puVar4 = (undefined4 *)*piVar25;" (statement_identifier "LAB_0002ac9c") (: ":") (expression_statement "puVar4 = (undefined4 *)*piVar25;" (assignment_expression "puVar4 = (undefined4 *)*piVar25" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*piVar25" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar25" (* "*") (identifier "piVar25")))) (; ";"))) (if_statement "if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(*(undefined4 **)(puVar31 + -0x2c) == puVar4)" (( "(") (binary_expression "*(undefined4 **)(puVar31 + -0x2c) == puVar4" (pointer_expression "*(undefined4 **)(puVar31 + -0x2c)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x2c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (identifier "puVar4")) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar30 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar30 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7b70)" (( "(") (binary_expression "puVar30 + -0x7b70" (identifier "puVar30") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar35 = 0x2b384;" (assignment_expression "uVar35 = 0x2b384" (identifier "uVar35") (= "=") (number_literal "0x2b384")) (; ";")) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(uint **)(puVar33 + -0x14) = puVar18;" (assignment_expression "*(uint **)(puVar33 + -0x14) = puVar18" (pointer_expression "*(uint **)(puVar33 + -0x14)" (* "*") (cast_expression "(uint **)(puVar33 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + -0x14)" (( "(") (binary_expression "puVar33 + -0x14" (identifier "puVar33") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;" (assignment_expression "*(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0" (pointer_expression "*(code **)(puVar33 + -0x20)" (* "*") (cast_expression "(code **)(puVar33 + -0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + -0x20)" (( "(") (binary_expression "puVar33 + -0x20" (identifier "puVar33") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (binary_expression "pcVar29 + 0x73cb0" (identifier "pcVar29") (+ "+") (number_literal "0x73cb0"))) (; ";")) (expression_statement "*(uint **)(puVar33 + -8) = puVar24;" (assignment_expression "*(uint **)(puVar33 + -8) = puVar24" (pointer_expression "*(uint **)(puVar33 + -8)" (* "*") (cast_expression "(uint **)(puVar33 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + -8)" (( "(") (binary_expression "puVar33 + -8" (identifier "puVar33") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar24")) (; ";")) (expression_statement "*(uint **)(puVar33 + -0xc) = puVar22;" (assignment_expression "*(uint **)(puVar33 + -0xc) = puVar22" (pointer_expression "*(uint **)(puVar33 + -0xc)" (* "*") (cast_expression "(uint **)(puVar33 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + -0xc)" (( "(") (binary_expression "puVar33 + -0xc" (identifier "puVar33") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar22")) (; ";")) (expression_statement "*(undefined4 *)(puVar33 + -4) = uVar35;" (assignment_expression "*(undefined4 *)(puVar33 + -4) = uVar35" (pointer_expression "*(undefined4 *)(puVar33 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar33 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar33 + -4)" (( "(") (binary_expression "puVar33 + -4" (identifier "puVar33") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "*(int **)(puVar33 + -0x10) = piVar26;" (assignment_expression "*(int **)(puVar33 + -0x10) = piVar26" (pointer_expression "*(int **)(puVar33 + -0x10)" (* "*") (cast_expression "(int **)(puVar33 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar33 + -0x10)" (( "(") (binary_expression "puVar33 + -0x10" (identifier "puVar33") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar26")) (; ";")) (expression_statement "uVar19 = piVar9[1];" (assignment_expression "uVar19 = piVar9[1]" (identifier "uVar19") (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" (identifier "uVar17") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if ((int)uVar19 < 0) {\n    uVar17 = -uVar19;\n  }" (if "if") (parenthesized_expression "((int)uVar19 < 0)" (( "(") (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar17 = -uVar19;\n  }" ({ "{") (expression_statement "uVar17 = -uVar19;" (assignment_expression "uVar17 = -uVar19" (identifier "uVar17") (= "=") (unary_expression "-uVar19" (- "-") (identifier "uVar19"))) (; ";")) (} "}"))) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" (identifier "uVar16") (= "=") (number_literal "1")) (; ";")) (if_statement "if (0 < (int)uVar17) {\n    uVar16 = uVar17;\n  }" (if "if") (parenthesized_expression "(0 < (int)uVar17)" (( "(") (binary_expression "0 < (int)uVar17" (number_literal "0") (< "<") (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17"))) () ")")) (compound_statement "{\n    uVar16 = uVar17;\n  }" ({ "{") (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" (identifier "uVar16") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (expression_statement "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);" (assignment_expression "pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c)" (identifier "pcVar29") (= "=") (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x6c17c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(pcVar29 + 0x6c17c)" (* "*") (pointer_expression "*(undefined4 **)(pcVar29 + 0x6c17c)" (* "*") (cast_expression "(undefined4 **)(pcVar29 + 0x6c17c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + 0x6c17c)" (( "(") (binary_expression "pcVar29 + 0x6c17c" (identifier "pcVar29") (+ "+") (number_literal "0x6c17c")) () ")"))))))) (; ";")) (expression_statement "*puVar8 = uVar16;" (assignment_expression "*puVar8 = uVar16" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);" (assignment_expression "puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)(*pcVar29)(uVar16 << 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar29)(uVar16 << 2)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(uVar16 << 2)" (( "(") (binary_expression "uVar16 << 2" (identifier "uVar16") (<< "<<") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "puVar8[2] = (uint)puVar4;" (assignment_expression "puVar8[2] = (uint)puVar4" (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(uint)puVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar4"))) (; ";")) (if_statement "if (uVar19 != 0) {\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" (if "if") (parenthesized_expression "(uVar19 != 0)" (( "(") (binary_expression "uVar19 != 0" (identifier "uVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar6 = (undefined4 *)piVar9[2];\n    iVar5 = uVar17 - 1;\n    uVar35 = *puVar6;\n    puVar12 = puVar4;\n    if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }\n    *puVar4 = uVar35;\n  }" ({ "{") (expression_statement "puVar6 = (undefined4 *)piVar9[2];" (assignment_expression "puVar6 = (undefined4 *)piVar9[2]" (identifier "puVar6") (= "=") (cast_expression "(undefined4 *)piVar9[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar5 = uVar17 - 1;" (assignment_expression "iVar5 = uVar17 - 1" (identifier "iVar5") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" (identifier "uVar35") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar12 = puVar4;" (assignment_expression "puVar12 = puVar4" (identifier "puVar12") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar5 != 0) {\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);\n      puVar4 = puVar4 + (uVar17 - 1);\n    }" ({ "{") (do_statement "do {\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      } while (iVar5 != 0);" (do "do") (compound_statement "{\n        puVar6 = puVar6 + 1;\n        *puVar12 = uVar35;\n        iVar5 = iVar5 + -1;\n        uVar35 = *puVar6;\n        puVar12 = puVar12 + 1;\n      }" ({ "{") (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar12 = uVar35;" (assignment_expression "*puVar12 = uVar35" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (identifier "uVar35")) (; ";")) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar35 = *puVar6;" (assignment_expression "uVar35 = *puVar6" (identifier "uVar35") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar4 = puVar4 + (uVar17 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar17 - 1)" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uVar17 - 1)" (identifier "puVar4") (+ "+") (parenthesized_expression "(uVar17 - 1)" (( "(") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar4 = uVar35;" (assignment_expression "*puVar4 = uVar35" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar35")) (; ";")) (} "}"))) (expression_statement "puVar8[1] = uVar19;" (assignment_expression "puVar8[1] = uVar19" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar19")) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

int function_1(type_1 inverse,type_2 x,type_2 n)

{
  bool bVar1;
  type_3 *puVar2;
  type_4 *var_7;
  int var_2;
  type_5 var_12;
  type_5 *var_16;
  int *piVar7;
  int *var_22;
  int var_1;
  type_6 *var_24;
  type_5 *var_15;
  type_4 var_36;
  type_4 *var_19;
  type_2 var_9;
  type_4 *var_25;
  type_7 *var_27;
  type_2 var_29;
  type_4 *var_26;
  type_5 *var_10;
  type_2 p_Var20;
  type_5 var_11;
  type_5 mVar22;
  type_4 var_3;
  type_5 *var_17;
  type_4 var_20;
  type_2 var_13;
  type_2 var_31;
  type_5 *var_14;
  type_5 *var_18;
  type_5 *var_23;
  type_8 **unaff_s5;
  int *piVar31;
  type_7 unaff_s6;
  type_7 unaff_s7;
  type_2 var_28;
  type_2 var_30;
  type_3 *var_8;
  type_9 *var_35;
  type_3 *var_21;
  type_6 *var_5;
  type_6 *var_34;
  type_6 *puVar39;
  type_7 uVar40;
  type_6 var_4 [24];
  type_8 *var_6;
  type_10 gcd;
  type_10 tmp;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  var_5 = var_4;
  var_1 = x->_mp_size;
  var_7 = *(type_4 **)PTR___stack_chk_guard_00097540;
  if (var_1 < 0) {
    var_1 = -var_1;
  }
  var_2 = n->_mp_size;
  if (var_2 < 0) {
    var_2 = -var_2;
  }
  var_6 = (type_8 *)0x0;
  if (var_2 <= var_1) {
    var_2 = var_1;
  }
  var_2 = var_2 + 1;
  var_3 = var_2 * 4;
  gcd[0]._mp_alloc = var_2;
  tmp[0]._mp_alloc = var_2;
  if (var_3 < 0x7f01) {
    var_3 = var_3 + 7 & 0xfffffff8;
    var_1 = var_3 * -2;
    var_5 = var_4 + var_1;
    gcd[0]._mp_d = (type_5 *)((int)tmp + (-0x20 - var_3));
    tmp[0]._mp_d = (type_5 *)((int)tmp + var_1 + -0x20);
  }
  else {
    unaff_s5 = &var_6;
    gcd[0]._mp_d = (type_5 *)(*(type_9 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,var_3);
    tmp[0]._mp_d = (type_5 *)(*(type_9 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,var_3);
  }
  var_29 = (type_2)0x0;
  *(type_2 *)(var_5 + 0x10) = n;
  var_9 = tmp;
  (*(type_9 *)PTR___gmpz_gcdext_000975a4)(gcd,tmp,0,x);
  if ((gcd[0]._mp_size == 1) && (*gcd[0]._mp_d == 1)) {
    if (tmp[0]._mp_size < 0) {
      var_35 = (type_9 *)PTR___gmpz_sub_0009752c;
      if (-1 < n->_mp_size) {
        var_35 = (type_9 *)PTR___gmpz_add_000971f0;
      }
      var_9 = tmp;
      var_29 = n;
      (*var_35)(inverse);
    }
    else {
      var_9 = tmp;
      (*(type_9 *)PTR___gmpz_set_000974b8)(inverse);
    }
    var_1 = 1;
  }
  else {
    var_1 = 0;
  }
  if (var_6 != (type_8 *)0x0) {
    (*(type_9 *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (var_7 == *(type_4 **)puVar2) {
    return var_1;
  }
  uVar40 = 0x2aaec;
  var_8 = PTR___stack_chk_fail_000974d0;
  (*(type_9 *)PTR___stack_chk_fail_000974d0)();
  var_21 = var_8 + 0x74550;
  puVar39 = var_5 + -0x50;
  var_34 = var_5 + -0x50;
  var_24 = var_5 + -0x50;
  *(type_8 ***)(var_5 + -0x14) = unaff_s5;
  *(int *)(var_5 + -0x24) = var_2;
  piVar31 = *(int **)(var_8 + 0x6ca50);
  var_13 = (type_2)var_9->_mp_size;
  *(type_6 **)(var_5 + -8) = var_4;
  *(type_7 *)(var_5 + -0xc) = unaff_s7;
  *(type_7 *)(var_5 + -0x10) = unaff_s6;
  *(type_2 *)(var_5 + -0x1c) = n;
  *(type_1 *)(var_5 + -0x20) = inverse;
  *(type_2 *)(var_5 + -0x28) = tmp;
  *(type_7 *)(var_5 + -4) = uVar40;
  *(type_3 **)(var_5 + -0x18) = puVar2;
  *(type_3 **)(var_5 + -0x40) = var_21;
  *(type_7 *)(var_5 + -0x30) = 0;
  var_28 = (type_2)var_29->_mp_size;
  var_14 = var_9->_mp_d;
  var_17 = var_29->_mp_d;
  var_23 = (type_5 *)var_7[2];
  *(int *)(var_5 + -0x2c) = *piVar31;
  if ((int)var_13 < 0) {
    p_Var20 = var_29;
    var_10 = var_14;
    var_31 = var_28;
    var_18 = var_17;
    var_30 = var_13;
    if ((int)var_28 < 0) {
      if ((int)var_13 < (int)var_28) {
        var_13 = var_28;
      }
      var_1 = -(int)var_13;
      var_9 = (type_2)((int)var_13 * -8);
      if (var_9 < (type_2)0x7f01) {
        puVar39 = var_5 + (int)var_13 * 8 + -0x50;
        var_10 = (type_5 *)(var_5 + (int)var_13 * 8 + -0x40);
      }
      else {
        var_10 = (type_5 *)(**(type_9 **)(var_8 + 0x6c800))(var_5 + -0x30);
        var_21 = *(type_3 **)(var_5 + -0x40);
      }
      var_12 = *var_14;
      var_11 = *var_17;
      var_18 = var_10 + -(int)var_13;
      mVar22 = var_11 - 1;
      *var_10 = var_12 - 1;
      if (var_12 == 0) {
        if (var_13 == (type_2)0xffffffff) {
LAB_0002b274:
          *var_18 = mVar22;
          if (var_11 == 0) goto LAB_0002b088;
        }
        else {
          var_12 = var_14[1];
          var_10[1] = var_12 - 1;
          if (var_12 == 0) {
            var_15 = var_14 + 2;
            var_2 = 2;
            var_16 = var_10 + 2;
            do {
              var_9 = (type_2)(type_4)(var_2 < var_1);
              if (var_9 == (type_2)0x0) goto LAB_0002b038;
              var_9 = (type_2)*var_15;
              var_2 = var_2 + 1;
              var_15 = var_15 + 1;
              *var_16 = (type_5)((int)&var_9[-1]._mp_d + 3);
              var_16 = var_16 + 1;
            } while (var_9 == (type_2)0x0);
          }
          else {
            var_2 = 2;
          }
          if ((var_10 != var_14) && (var_2 < var_1)) {
            var_15 = var_14 + var_2;
            var_14 = var_14 + -(int)var_13;
            var_16 = var_10 + var_2;
            do {
              var_12 = *var_15;
              var_15 = var_15 + 1;
              *var_16 = var_12;
              var_16 = var_16 + 1;
            } while (var_14 != var_15);
          }
LAB_0002b038:
          *var_18 = mVar22;
          if (var_11 == 0) goto LAB_0002b040;
        }
LAB_0002b27c:
        if ((var_17 != var_18) && (var_13 != (type_2)0xffffffff)) {
          var_17 = var_17 + 1;
          var_2 = 1;
          var_16 = var_18;
          do {
            var_16 = var_16 + 1;
            var_9 = (type_2)*var_17;
            var_2 = var_2 + 1;
            var_17 = var_17 + 1;
            *var_16 = (type_5)var_9;
          } while (var_2 < var_1);
        }
      }
      else {
        if (var_10 != var_14) {
          var_14 = var_14 + 1;
          if (var_13 == (type_2)0xffffffff) goto LAB_0002b274;
          var_2 = 1;
          var_16 = var_10;
          do {
            var_16 = var_16 + 1;
            var_9 = (type_2)*var_14;
            var_2 = var_2 + 1;
            var_14 = var_14 + 1;
            *var_16 = (type_5)var_9;
          } while (var_2 < var_1);
          goto LAB_0002b038;
        }
        *var_18 = mVar22;
        if (var_11 != 0) goto LAB_0002b27c;
        if (var_13 == (type_2)0xffffffff) goto LAB_0002b088;
LAB_0002b040:
        var_12 = var_17[1];
        var_18[1] = var_12 - 1;
        if (var_12 == 0) {
          var_15 = var_17 + 2;
          var_2 = 2;
          var_16 = var_18 + 2;
          do {
            var_9 = (type_2)(type_4)(var_2 < var_1);
            if (var_9 == (type_2)0x0) goto LAB_0002b088;
            var_9 = (type_2)*var_15;
            var_2 = var_2 + 1;
            var_15 = var_15 + 1;
            *var_16 = (type_5)((int)&var_9[-1]._mp_d + 3);
            var_16 = var_16 + 1;
          } while (var_9 == (type_2)0x0);
        }
        else {
          var_2 = 2;
        }
        if ((var_17 != var_18) && (var_2 < var_1)) {
          var_15 = var_17 + var_2;
          var_17 = var_17 + -(int)var_13;
          var_16 = var_18 + var_2;
          do {
            var_12 = *var_15;
            var_15 = var_15 + 1;
            *var_16 = var_12;
            var_16 = var_16 + 1;
          } while (var_17 != var_15);
        }
      }
LAB_0002b088:
      var_3 = ~(type_4)var_13;
      var_19 = var_10 + var_3;
      var_16 = var_18 + var_3;
LAB_0002b098:
      var_20 = *var_19;
      var_19 = var_19 + -1;
      if ((var_20 & *var_16) == 0) goto code_r0x0002b0ac;
      var_17 = (type_5 *)(var_3 + 1);
      var_35 = *(type_9 **)(var_21 + -0x7a84);
      if ((int)var_17 < (int)*var_7) {
        piVar7 = (int *)var_7[2];
      }
      else {
        *(type_5 **)(var_5 + -0x34) = var_10;
        piVar7 = (int *)(*var_35)(var_7,var_3 + 2);
        var_21 = *(type_3 **)(var_5 + -0x40);
        var_10 = *(type_5 **)(var_5 + -0x34);
      }
      var_1 = 0;
      do {
        var_19 = (type_4 *)((int)var_10 + var_1);
        var_26 = (type_4 *)((int)var_18 + var_1);
        var_25 = (type_4 *)((int)piVar7 + var_1);
        var_1 = var_1 + 4;
        *var_25 = *var_19 & *var_26;
      } while ((int)var_17 * 4 != var_1);
      piVar7[(int)var_17] = 0;
      var_22 = piVar7;
      do {
        var_1 = *var_22;
        *var_22 = var_1 + 1;
        var_22 = var_22 + 1;
      } while (var_1 + 1 == 0);
      var_9 = (type_2)((int)var_17 + piVar7[(int)var_17]);
      var_28 = (type_2)-(int)var_9;
      goto LAB_0002b0c0;
    }
  }
  else {
    p_Var20 = var_9;
    var_10 = var_17;
    var_31 = var_13;
    var_18 = var_14;
    var_30 = var_28;
    if (-1 < (int)var_28) {
      var_19 = var_7;
      if ((int)var_13 < (int)var_28) {
        var_35 = *(type_9 **)(var_8 + 0x6cacc);
        if ((int)*var_7 < (int)var_28) {
          *(type_2 *)(var_5 + -0x34) = var_9;
          var_9 = var_28;
          var_23 = (type_5 *)(*var_35)();
          var_21 = *(type_3 **)(var_5 + -0x40);
          var_14 = *(type_5 **)(*(int *)(var_5 + -0x34) + 8);
        }
        if (var_23 != var_17) {
          var_10 = var_17 + (int)var_13;
          var_24 = (type_6 *)((int)var_28 + (-1 - (int)var_13));
          var_26 = var_23 + (int)var_13;
          var_9 = (type_2)*var_10;
          var_25 = var_26;
          if (var_24 != (type_6 *)0x0) {
            do {
              var_10 = var_10 + 1;
              var_19 = var_25 + 1;
              *var_25 = (type_4)var_9;
              var_24 = var_24 + -1;
              var_9 = (type_2)*var_10;
              var_25 = var_19;
            } while (var_24 != (type_6 *)0x0);
            var_26 = var_26 + (int)((int)var_28 + (-1 - (int)var_13));
          }
          *var_26 = (type_4)var_9;
        }
        var_1 = 0;
        if (var_13 != (type_2)0x0) {
          do {
            var_25 = (type_4 *)((int)var_14 + var_1);
            var_27 = (type_7 *)((int)var_17 + var_1);
            var_19 = (type_4 *)((int)var_23 + var_1);
            var_1 = var_1 + 4;
            var_9 = (type_2)*var_27;
            *var_19 = *var_25 | (type_4)var_9;
          } while ((int)var_13 << 2 != var_1);
        }
        var_7[1] = (type_4)var_28;
      }
      else {
        var_35 = *(type_9 **)(var_8 + 0x6cacc);
        if ((int)*var_7 < (int)var_13) {
          *(type_2 *)(var_5 + -0x34) = var_29;
          var_9 = var_13;
          var_23 = (type_5 *)(*var_35)();
          var_21 = *(type_3 **)(var_5 + -0x40);
          var_17 = *(type_5 **)(*(int *)(var_5 + -0x34) + 8);
        }
        if ((var_23 != var_14) && (var_13 != var_28)) {
          var_10 = var_14 + (int)var_28;
          var_24 = (type_6 *)((int)var_13 + (-1 - (int)var_28));
          var_26 = var_23 + (int)var_28;
          var_9 = (type_2)*var_10;
          var_25 = var_26;
          if (var_24 != (type_6 *)0x0) {
            do {
              var_10 = var_10 + 1;
              var_19 = var_25 + 1;
              *var_25 = (type_4)var_9;
              var_24 = var_24 + -1;
              var_9 = (type_2)*var_10;
              var_25 = var_19;
            } while (var_24 != (type_6 *)0x0);
            var_26 = var_26 + (int)((int)var_13 + (-1 - (int)var_28));
          }
          *var_26 = (type_4)var_9;
        }
        var_1 = 0;
        if (var_28 != (type_2)0x0) {
          do {
            var_25 = (type_4 *)((int)var_14 + var_1);
            var_27 = (type_7 *)((int)var_17 + var_1);
            var_19 = (type_4 *)((int)var_23 + var_1);
            var_1 = var_1 + 4;
            var_9 = (type_2)*var_27;
            *var_19 = *var_25 | (type_4)var_9;
          } while (var_1 != (int)var_28 << 2);
        }
        var_7[1] = (type_4)var_13;
        var_28 = var_13;
        var_34 = var_5 + -0x50;
      }
      goto LAB_0002ac9c;
    }
  }
  var_9 = (type_2)-(int)var_30;
  var_29 = (type_2)((int)var_30 * -4);
  var_35 = *(type_9 **)(var_8 + 0x6c800);
  if (var_29 < (type_2)0x7f01) {
    var_29 = (type_2)((type_4)((int)&var_29->_mp_size + 3U) & 0xfffffff8);
    var_24 = var_5 + -(int)var_29 + -0x50;
    var_17 = (type_5 *)(var_5 + -(int)var_29 + -0x40);
  }
  else {
    *(type_2 *)(var_5 + -0x38) = var_9;
    *(type_2 *)(var_5 + -0x34) = p_Var20;
    var_17 = (type_5 *)(*var_35)(var_5 + -0x30);
    var_21 = *(type_3 **)(var_5 + -0x40);
    var_9 = *(type_2 *)(var_5 + -0x38);
    p_Var20 = *(type_2 *)(var_5 + -0x34);
  }
  var_12 = *var_10;
  *var_17 = var_12 - 1;
  if (var_12 == 0) {
    if (var_30 != (type_2)0xffffffff) {
      var_12 = var_10[1];
      var_17[1] = var_12 - 1;
      if (var_12 == 0) {
        var_16 = var_10 + 2;
        var_1 = 2;
        var_14 = var_17 + 2;
        do {
          var_29 = (type_2)(type_4)(var_1 < (int)var_9);
          var_1 = var_1 + 1;
          if (var_29 == (type_2)0x0) goto LAB_0002abf4;
          var_29 = (type_2)*var_16;
          var_16 = var_16 + 1;
          *var_14 = (type_5)((int)&var_29[-1]._mp_d + 3);
          var_14 = var_14 + 1;
        } while (var_29 == (type_2)0x0);
      }
      else {
        var_1 = 2;
      }
      if ((var_10 != var_17) && (var_1 < (int)var_9)) {
        var_16 = var_10 + var_1;
        var_14 = var_17 + var_1;
        do {
          var_12 = *var_16;
          var_16 = var_16 + 1;
          *var_14 = var_12;
          var_14 = var_14 + 1;
        } while (var_10 + (int)var_9 != var_16);
      }
    }
LAB_0002abf4:
    var_13 = (type_2)((int)var_9 - (type_4)(var_17[~(type_4)var_30] == 0));
    if ((int)var_9 <= (int)*var_7) goto LAB_0002ac14;
LAB_0002ad34:
    var_35 = *(type_9 **)(var_21 + -0x7a84);
    *(type_2 *)(var_5 + -0x34) = p_Var20;
    (*var_35)(var_7);
    var_21 = *(type_3 **)(var_5 + -0x40);
    var_23 = (type_5 *)var_7[2];
    var_18 = *(type_5 **)(*(int *)(var_5 + -0x34) + 8);
    if ((int)var_31 < (int)var_13) goto LAB_0002ad60;
LAB_0002ac20:
    var_28 = (type_2)((int)&var_13[-1]._mp_d + 3);
    if (var_13 == (type_2)0x0) {
LAB_0002ac84:
      var_17 = (type_5 *)0xffffffff;
      *var_23 = 1;
      var_19 = *(type_4 **)(var_5 + -0x30);
      var_7[1] = 0xffffffff;
      var_14 = var_18;
      goto joined_r0x0002b0c4;
    }
    if ((~var_18[(int)var_28] & var_17[(int)var_28]) == 0) {
      var_10 = var_18 + (int)var_13;
      var_14 = var_17 + (int)var_13;
      var_9 = var_28;
      do {
        var_28 = var_9;
        var_9 = (type_2)((int)&var_28[-1]._mp_d + 3);
        if (var_9 == (type_2)0xffffffff) goto LAB_0002ac84;
        var_19 = var_10 + -2;
        var_16 = var_14 + -2;
        var_10 = var_10 + -1;
        var_14 = var_14 + -1;
        var_13 = var_28;
      } while ((~*var_19 & *var_16) == 0);
    }
    var_1 = (int)var_13 << 2;
  }
  else {
    if ((var_10 == var_17) || (var_1 = 1, var_14 = var_17, var_30 == (type_2)0xffffffff))
    goto LAB_0002abf4;
    do {
      var_10 = var_10 + 1;
      var_29 = (type_2)*var_10;
      var_1 = var_1 + 1;
      var_14[1] = (type_5)var_29;
      var_14 = var_14 + 1;
    } while (var_1 < (int)var_9);
    var_13 = (type_2)((int)var_9 - (type_4)(var_17[~(type_4)var_30] == 0));
    if ((int)*var_7 < (int)var_9) goto LAB_0002ad34;
LAB_0002ac14:
    var_9 = var_29;
    if ((int)var_13 <= (int)var_31) goto LAB_0002ac20;
LAB_0002ad60:
    var_1 = (int)var_31 * 4;
    var_10 = var_17 + (int)var_31;
    var_24 = (type_6 *)((int)var_13 + (-1 - (int)var_31));
    var_16 = var_23 + (int)var_31;
    var_12 = *var_10;
    var_14 = var_16;
    if (var_24 != (type_6 *)0x0) {
      do {
        var_10 = var_10 + 1;
        *var_14 = var_12;
        var_24 = var_24 + -1;
        var_12 = *var_10;
        var_14 = var_14 + 1;
      } while (var_24 != (type_6 *)0x0);
      var_16 = var_16 + (int)((int)var_13 + (-1 - (int)var_31));
    }
    *var_16 = var_12;
    if (var_31 == (type_2)0x0) goto LAB_0002addc;
  }
  var_2 = 0;
  do {
    var_7 = (type_4 *)((int)var_18 + var_2);
    var_25 = (type_4 *)((int)var_17 + var_2);
    var_19 = (type_4 *)((int)var_23 + var_2);
    var_2 = var_2 + 4;
    *var_19 = ~*var_7 & *var_25;
  } while (var_1 != var_2);
LAB_0002addc:
  var_12 = *var_23;
  *var_23 = var_12 + 1;
  if (var_12 + 1 == 0) {
    if (var_13 == (type_2)&var_32) {
LAB_0002ae34:
      var_23[(int)var_13] = 1;
      var_1 = var_33();
      return var_1;
    }
    var_12 = var_23[1];
    var_23[1] = var_12 + 1;
    if (var_12 + 1 == 0) {
      var_9 = (type_2)0x2;
      var_17 = var_23 + 2;
      do {
        bVar1 = var_13 == var_9;
        var_9 = (type_2)((int)&var_9->_mp_alloc + 1);
        if (bVar1) goto LAB_0002ae34;
        var_12 = *var_17;
        *var_17 = var_12 + 1;
        var_17 = var_17 + 1;
      } while (var_12 + 1 == 0);
    }
  }
  var_1 = var_33();
  return var_1;
code_r0x0002b0ac:
  var_3 = var_3 - 1;
  var_16 = var_16 + -1;
  if (var_3 == 0xffffffff) goto code_r0x0002b0b8;
  goto LAB_0002b098;
code_r0x0002b0b8:
  *var_23 = 1;
  var_28 = (type_2)0xffffffff;
LAB_0002b0c0:
  var_19 = *(type_4 **)(var_5 + -0x30);
  var_7[1] = (type_4)var_28;
  var_24 = puVar39;
joined_r0x0002b0c4:
  var_34 = var_24;
  if (var_19 != (type_4 *)0x0) {
    (**(type_9 **)(var_21 + -0x7a2c))();
    var_21 = *(type_3 **)(var_5 + -0x40);
  }
LAB_0002ac9c:
  var_1 = *piVar31;
  if (*(int *)(var_5 + -0x2c) == var_1) {
    return var_1;
  }
  var_35 = *(type_9 **)(var_21 + -0x7b70);
  uVar40 = 0x2b384;
  (*var_35)();
  *(type_5 **)(var_34 + -0x14) = var_17;
  *(type_9 **)(var_34 + -0x20) = var_35 + 0x73cb0;
  *(type_5 **)(var_34 + -8) = var_23;
  *(type_5 **)(var_34 + -0xc) = var_14;
  *(type_7 *)(var_34 + -4) = uVar40;
  *(type_2 *)(var_34 + -0x10) = var_28;
  var_20 = var_9->_mp_size;
  var_3 = var_20;
  if ((int)var_20 < 0) {
    var_3 = -var_20;
  }
  var_36 = 1;
  if (0 < (int)var_3) {
    var_36 = var_3;
  }
  var_35 = (type_9 *)**(type_7 **)(var_35 + 0x6c17c);
  *var_19 = var_36;
  var_23 = (type_5 *)(*var_35)(var_36 << 2);
  var_19[2] = (type_4)var_23;
  if (var_20 != 0) {
    var_14 = var_9->_mp_d;
    var_1 = var_3 - 1;
    var_12 = *var_14;
    var_17 = var_23;
    if (var_1 != 0) {
      do {
        var_14 = var_14 + 1;
        *var_17 = var_12;
        var_1 = var_1 + -1;
        var_12 = *var_14;
        var_17 = var_17 + 1;
      } while (var_1 != 0);
      var_23 = var_23 + (var_3 - 1);
    }
    *var_23 = var_12;
  }
  var_19[1] = var_20;
  return (int)var_23;
}


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

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

{
  bool bVar1;
  undefined *puVar2;
  int iVar3;
  undefined4 *puVar4;
  int iVar5;
  undefined4 *puVar6;
  uint *puVar7;
  uint *puVar8;
  int *piVar9;
  uint *puVar10;
  uint *puVar11;
  undefined4 *puVar12;
  int *piVar13;
  uint *puVar14;
  int *piVar15;
  uint uVar16;
  uint uVar17;
  uint *puVar18;
  uint uVar19;
  int *piVar20;
  int *piVar21;
  uint *puVar22;
  uint *puVar23;
  uint *puVar24;
  int *unaff_s5;
  int *piVar25;
  undefined4 unaff_s6;
  undefined4 unaff_s7;
  int *piVar26;
  int *piVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  undefined1 *puVar33;
  undefined1 *puVar34;
  undefined4 uVar35;
  undefined1 auStack_68 [24];
  int local_40;
  int local_3c;
  int local_38;
  int *local_34;
  int local_30;
  int local_2c;
  undefined1 *local_28;
  uint *local_24;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  puVar31 = auStack_68;
  iVar5 = *(int *)(param_2 + 4);
  local_24 = *(uint **)PTR___stack_chk_guard_00097540;
  if (iVar5 < 0) {
    iVar5 = -iVar5;
  }
  iVar3 = param_3[1];
  if (iVar3 < 0) {
    iVar3 = -iVar3;
  }
  local_40 = 0;
  if (iVar3 <= iVar5) {
    iVar3 = iVar5;
  }
  iVar3 = iVar3 + 1;
  uVar17 = iVar3 * 4;
  local_3c = iVar3;
  local_30 = iVar3;
  if (uVar17 < 0x7f01) {
    uVar17 = uVar17 + 7 & 0xfffffff8;
    iVar5 = uVar17 * -2;
    puVar31 = auStack_68 + iVar5;
    local_34 = (int *)(&stack0xffffffb0 + -uVar17);
    local_28 = &stack0xffffffb0 + iVar5;
  }
  else {
    unaff_s5 = &local_40;
    local_34 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);
    local_28 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(unaff_s5,uVar17);
  }
  piVar13 = (int *)0x0;
  *(int **)(puVar31 + 0x10) = param_3;
  piVar9 = &local_30;
  (*(code *)PTR___gmpz_gcdext_000975a4)(&local_3c,&local_30,0,param_2);
  if ((local_38 == 1) && (*local_34 == 1)) {
    if (local_2c < 0) {
      pcVar29 = (code *)PTR___gmpz_sub_0009752c;
      if (-1 < param_3[1]) {
        pcVar29 = (code *)PTR___gmpz_add_000971f0;
      }
      piVar9 = &local_30;
      piVar13 = param_3;
      (*pcVar29)(param_1);
    }
    else {
      piVar9 = &local_30;
      (*(code *)PTR___gmpz_set_000974b8)(param_1);
    }
    puVar4 = (undefined4 *)0x1;
  }
  else {
    puVar4 = (undefined4 *)0x0;
  }
  if (local_40 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (local_24 == *(uint **)puVar2) {
    return puVar4;
  }
  uVar35 = 0x2aaec;
  puVar7 = local_24;
  puVar28 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar28 + 0x74550;
  puVar34 = puVar31 + -0x50;
  puVar33 = puVar31 + -0x50;
  puVar32 = puVar31 + -0x50;
  *(int **)(puVar31 + -0x14) = unaff_s5;
  *(int *)(puVar31 + -0x24) = iVar3;
  piVar25 = *(int **)(puVar28 + 0x6ca50);
  piVar20 = (int *)piVar9[1];
  *(undefined1 **)(puVar31 + -8) = auStack_68;
  *(undefined4 *)(puVar31 + -0xc) = unaff_s7;
  *(undefined4 *)(puVar31 + -0x10) = unaff_s6;
  *(int **)(puVar31 + -0x1c) = param_3;
  *(undefined4 *)(puVar31 + -0x20) = param_1;
  *(int **)(puVar31 + -0x28) = &local_30;
  *(undefined4 *)(puVar31 + -4) = uVar35;
  *(undefined **)(puVar31 + -0x18) = puVar2;
  *(undefined **)(puVar31 + -0x40) = puVar30;
  *(undefined4 *)(puVar31 + -0x30) = 0;
  piVar26 = (int *)piVar13[1];
  puVar22 = (uint *)piVar9[2];
  puVar18 = (uint *)piVar13[2];
  puVar24 = (uint *)puVar7[2];
  *(int *)(puVar31 + -0x2c) = *piVar25;
  if ((int)piVar20 < 0) {
    piVar15 = piVar13;
    puVar8 = puVar22;
    piVar21 = piVar26;
    puVar23 = puVar18;
    piVar27 = piVar20;
    if ((int)piVar26 < 0) {
      if ((int)piVar20 < (int)piVar26) {
        piVar20 = piVar26;
      }
      iVar5 = -(int)piVar20;
      piVar9 = (int *)((int)piVar20 * -8);
      if (piVar9 < (int *)0x7f01) {
        puVar34 = puVar31 + (int)piVar20 * 8 + -0x50;
        puVar8 = (uint *)(puVar31 + (int)piVar20 * 8 + -0x40);
      }
      else {
        puVar8 = (uint *)(**(code **)(puVar28 + 0x6c800))(puVar31 + -0x30);
        puVar30 = *(undefined **)(puVar31 + -0x40);
      }
      uVar17 = *puVar22;
      uVar19 = *puVar18;
      puVar23 = puVar8 + -(int)piVar20;
      uVar16 = uVar19 - 1;
      *puVar8 = uVar17 - 1;
      if (uVar17 == 0) {
        if (piVar20 == (int *)0xffffffff) {
LAB_0002b274:
          *puVar23 = uVar16;
          if (uVar19 == 0) goto LAB_0002b088;
        }
        else {
          uVar17 = puVar22[1];
          puVar8[1] = uVar17 - 1;
          if (uVar17 == 0) {
            puVar11 = puVar22 + 2;
            iVar3 = 2;
            puVar10 = puVar8 + 2;
            do {
              piVar9 = (int *)(uint)(iVar3 < iVar5);
              if (piVar9 == (int *)0x0) goto LAB_0002b038;
              piVar9 = (int *)*puVar11;
              iVar3 = iVar3 + 1;
              puVar11 = puVar11 + 1;
              *puVar10 = (int)piVar9 - 1;
              puVar10 = puVar10 + 1;
            } while (piVar9 == (int *)0x0);
          }
          else {
            iVar3 = 2;
          }
          if ((puVar8 != puVar22) && (iVar3 < iVar5)) {
            puVar11 = puVar22 + iVar3;
            puVar22 = puVar22 + -(int)piVar20;
            puVar10 = puVar8 + iVar3;
            do {
              uVar17 = *puVar11;
              puVar11 = puVar11 + 1;
              *puVar10 = uVar17;
              puVar10 = puVar10 + 1;
            } while (puVar22 != puVar11);
          }
LAB_0002b038:
          *puVar23 = uVar16;
          if (uVar19 == 0) goto LAB_0002b040;
        }
LAB_0002b27c:
        if ((puVar18 != puVar23) && (piVar20 != (int *)0xffffffff)) {
          puVar18 = puVar18 + 1;
          iVar3 = 1;
          puVar10 = puVar23;
          do {
            puVar10 = puVar10 + 1;
            piVar9 = (int *)*puVar18;
            iVar3 = iVar3 + 1;
            puVar18 = puVar18 + 1;
            *puVar10 = (uint)piVar9;
          } while (iVar3 < iVar5);
        }
      }
      else {
        if (puVar8 != puVar22) {
          puVar22 = puVar22 + 1;
          if (piVar20 == (int *)0xffffffff) goto LAB_0002b274;
          iVar3 = 1;
          puVar10 = puVar8;
          do {
            puVar10 = puVar10 + 1;
            piVar9 = (int *)*puVar22;
            iVar3 = iVar3 + 1;
            puVar22 = puVar22 + 1;
            *puVar10 = (uint)piVar9;
          } while (iVar3 < iVar5);
          goto LAB_0002b038;
        }
        *puVar23 = uVar16;
        if (uVar19 != 0) goto LAB_0002b27c;
        if (piVar20 == (int *)0xffffffff) goto LAB_0002b088;
LAB_0002b040:
        uVar17 = puVar18[1];
        puVar23[1] = uVar17 - 1;
        if (uVar17 == 0) {
          puVar11 = puVar18 + 2;
          iVar3 = 2;
          puVar10 = puVar23 + 2;
          do {
            piVar9 = (int *)(uint)(iVar3 < iVar5);
            if (piVar9 == (int *)0x0) goto LAB_0002b088;
            piVar9 = (int *)*puVar11;
            iVar3 = iVar3 + 1;
            puVar11 = puVar11 + 1;
            *puVar10 = (int)piVar9 - 1;
            puVar10 = puVar10 + 1;
          } while (piVar9 == (int *)0x0);
        }
        else {
          iVar3 = 2;
        }
        if ((puVar18 != puVar23) && (iVar3 < iVar5)) {
          puVar11 = puVar18 + iVar3;
          puVar18 = puVar18 + -(int)piVar20;
          puVar10 = puVar23 + iVar3;
          do {
            uVar17 = *puVar11;
            puVar11 = puVar11 + 1;
            *puVar10 = uVar17;
            puVar10 = puVar10 + 1;
          } while (puVar18 != puVar11);
        }
      }
LAB_0002b088:
      uVar17 = ~(uint)piVar20;
      puVar11 = puVar8 + uVar17;
      puVar10 = puVar23 + uVar17;
LAB_0002b098:
      uVar19 = *puVar11;
      puVar11 = puVar11 + -1;
      if ((uVar19 & *puVar10) == 0) goto code_r0x0002b0ac;
      puVar18 = (uint *)(uVar17 + 1);
      pcVar29 = *(code **)(puVar30 + -0x7a84);
      if ((int)puVar18 < (int)*puVar7) {
        piVar9 = (int *)puVar7[2];
      }
      else {
        *(uint **)(puVar31 + -0x34) = puVar8;
        piVar9 = (int *)(*pcVar29)(puVar7,uVar17 + 2);
        puVar30 = *(undefined **)(puVar31 + -0x40);
        puVar8 = *(uint **)(puVar31 + -0x34);
      }
      iVar5 = 0;
      do {
        puVar10 = (uint *)((int)puVar8 + iVar5);
        puVar14 = (uint *)((int)puVar23 + iVar5);
        puVar11 = (uint *)((int)piVar9 + iVar5);
        iVar5 = iVar5 + 4;
        *puVar11 = *puVar10 & *puVar14;
      } while ((int)puVar18 * 4 != iVar5);
      piVar9[(int)puVar18] = 0;
      piVar13 = piVar9;
      do {
        iVar5 = *piVar13;
        *piVar13 = iVar5 + 1;
        piVar13 = piVar13 + 1;
      } while (iVar5 + 1 == 0);
      piVar9 = (int *)((int)puVar18 + piVar9[(int)puVar18]);
      piVar21 = (int *)-(int)piVar9;
      goto LAB_0002b0c0;
    }
  }
  else {
    piVar15 = piVar9;
    puVar8 = puVar18;
    piVar21 = piVar20;
    puVar23 = puVar22;
    piVar27 = piVar26;
    if (-1 < (int)piVar26) {
      puVar8 = puVar7;
      if ((int)piVar20 < (int)piVar26) {
        pcVar29 = *(code **)(puVar28 + 0x6cacc);
        if ((int)*puVar7 < (int)piVar26) {
          *(int **)(puVar31 + -0x34) = piVar9;
          piVar9 = piVar26;
          puVar24 = (uint *)(*pcVar29)();
          puVar30 = *(undefined **)(puVar31 + -0x40);
          puVar22 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
        }
        if (puVar24 != puVar18) {
          puVar10 = puVar18 + (int)piVar20;
          iVar5 = (int)piVar26 + (-1 - (int)piVar20);
          puVar11 = puVar24 + (int)piVar20;
          piVar9 = (int *)*puVar10;
          puVar23 = puVar11;
          if (iVar5 != 0) {
            do {
              puVar10 = puVar10 + 1;
              puVar8 = puVar23 + 1;
              *puVar23 = (uint)piVar9;
              iVar5 = iVar5 + -1;
              piVar9 = (int *)*puVar10;
              puVar23 = puVar8;
            } while (iVar5 != 0);
            puVar11 = puVar11 + (int)piVar26 + (-1 - (int)piVar20);
          }
          *puVar11 = (uint)piVar9;
        }
        iVar5 = 0;
        if (piVar20 != (int *)0x0) {
          do {
            puVar23 = (uint *)((int)puVar22 + iVar5);
            puVar10 = (uint *)((int)puVar18 + iVar5);
            puVar8 = (uint *)((int)puVar24 + iVar5);
            iVar5 = iVar5 + 4;
            piVar9 = (int *)*puVar10;
            *puVar8 = *puVar23 | (uint)piVar9;
          } while ((int)piVar20 << 2 != iVar5);
        }
        puVar7[1] = (uint)piVar26;
      }
      else {
        pcVar29 = *(code **)(puVar28 + 0x6cacc);
        if ((int)*puVar7 < (int)piVar20) {
          *(int **)(puVar31 + -0x34) = piVar13;
          piVar9 = piVar20;
          puVar24 = (uint *)(*pcVar29)();
          puVar30 = *(undefined **)(puVar31 + -0x40);
          puVar18 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
        }
        if ((puVar24 != puVar22) && (piVar20 != piVar26)) {
          puVar10 = puVar22 + (int)piVar26;
          iVar5 = (int)piVar20 + (-1 - (int)piVar26);
          puVar11 = puVar24 + (int)piVar26;
          piVar9 = (int *)*puVar10;
          puVar23 = puVar11;
          if (iVar5 != 0) {
            do {
              puVar10 = puVar10 + 1;
              puVar8 = puVar23 + 1;
              *puVar23 = (uint)piVar9;
              iVar5 = iVar5 + -1;
              piVar9 = (int *)*puVar10;
              puVar23 = puVar8;
            } while (iVar5 != 0);
            puVar11 = puVar11 + (int)piVar20 + (-1 - (int)piVar26);
          }
          *puVar11 = (uint)piVar9;
        }
        iVar5 = 0;
        if (piVar26 != (int *)0x0) {
          do {
            puVar23 = (uint *)((int)puVar22 + iVar5);
            puVar10 = (uint *)((int)puVar18 + iVar5);
            puVar8 = (uint *)((int)puVar24 + iVar5);
            iVar5 = iVar5 + 4;
            piVar9 = (int *)*puVar10;
            *puVar8 = *puVar23 | (uint)piVar9;
          } while (iVar5 != (int)piVar26 << 2);
        }
        puVar7[1] = (uint)piVar20;
        piVar26 = piVar20;
        puVar33 = puVar31 + -0x50;
      }
      goto LAB_0002ac9c;
    }
  }
  piVar9 = (int *)-(int)piVar27;
  piVar13 = (int *)((int)piVar27 * -4);
  pcVar29 = *(code **)(puVar28 + 0x6c800);
  if (piVar13 < (int *)0x7f01) {
    piVar13 = (int *)((int)piVar13 + 7U & 0xfffffff8);
    puVar32 = puVar31 + -(int)piVar13 + -0x50;
    puVar18 = (uint *)(puVar31 + -(int)piVar13 + -0x40);
  }
  else {
    *(int **)(puVar31 + -0x38) = piVar9;
    *(int **)(puVar31 + -0x34) = piVar15;
    puVar18 = (uint *)(*pcVar29)(puVar31 + -0x30);
    puVar30 = *(undefined **)(puVar31 + -0x40);
    piVar9 = *(int **)(puVar31 + -0x38);
    piVar15 = *(int **)(puVar31 + -0x34);
  }
  uVar17 = *puVar8;
  *puVar18 = uVar17 - 1;
  if (uVar17 == 0) {
    if (piVar27 != (int *)0xffffffff) {
      uVar17 = puVar8[1];
      puVar18[1] = uVar17 - 1;
      if (uVar17 == 0) {
        puVar10 = puVar8 + 2;
        iVar5 = 2;
        puVar22 = puVar18 + 2;
        do {
          piVar13 = (int *)(uint)(iVar5 < (int)piVar9);
          iVar5 = iVar5 + 1;
          if (piVar13 == (int *)0x0) goto LAB_0002abf4;
          piVar13 = (int *)*puVar10;
          puVar10 = puVar10 + 1;
          *puVar22 = (int)piVar13 - 1;
          puVar22 = puVar22 + 1;
        } while (piVar13 == (int *)0x0);
      }
      else {
        iVar5 = 2;
      }
      if ((puVar8 != puVar18) && (iVar5 < (int)piVar9)) {
        puVar10 = puVar8 + iVar5;
        puVar22 = puVar18 + iVar5;
        do {
          uVar17 = *puVar10;
          puVar10 = puVar10 + 1;
          *puVar22 = uVar17;
          puVar22 = puVar22 + 1;
        } while (puVar8 + (int)piVar9 != puVar10);
      }
    }
LAB_0002abf4:
    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));
    if ((int)piVar9 <= (int)*puVar7) goto LAB_0002ac14;
LAB_0002ad34:
    pcVar29 = *(code **)(puVar30 + -0x7a84);
    *(int **)(puVar31 + -0x34) = piVar15;
    (*pcVar29)(puVar7);
    puVar30 = *(undefined **)(puVar31 + -0x40);
    puVar24 = (uint *)puVar7[2];
    puVar23 = *(uint **)(*(int *)(puVar31 + -0x34) + 8);
    if ((int)piVar21 < (int)piVar26) goto LAB_0002ad60;
LAB_0002ac20:
    piVar21 = (int *)((int)piVar26 - 1);
    if (piVar26 != (int *)0x0) {
      if ((~puVar23[(int)piVar21] & puVar18[(int)piVar21]) == 0) {
        puVar8 = puVar23 + (int)piVar26;
        puVar22 = puVar18 + (int)piVar26;
        piVar9 = piVar21;
        do {
          piVar21 = piVar9;
          piVar9 = (int *)((int)piVar21 - 1);
          if (piVar9 == (int *)0xffffffff) goto LAB_0002ac84;
          puVar10 = puVar8 + -2;
          puVar11 = puVar22 + -2;
          puVar8 = puVar8 + -1;
          puVar22 = puVar22 + -1;
          piVar26 = piVar21;
        } while ((~*puVar10 & *puVar11) == 0);
      }
      iVar3 = (int)piVar26 << 2;
      piVar21 = piVar26;
LAB_0002adb0:
      iVar5 = 0;
      do {
        puVar22 = (uint *)((int)puVar23 + iVar5);
        puVar10 = (uint *)((int)puVar18 + iVar5);
        puVar8 = (uint *)((int)puVar24 + iVar5);
        iVar5 = iVar5 + 4;
        piVar9 = (int *)*puVar10;
        *puVar8 = ~*puVar22 & (uint)piVar9;
      } while (iVar3 != iVar5);
      goto LAB_0002addc;
    }
LAB_0002ac84:
    puVar18 = (uint *)0xffffffff;
    *puVar24 = 1;
  }
  else {
    if ((puVar8 == puVar18) || (iVar5 = 1, puVar22 = puVar18, piVar27 == (int *)0xffffffff))
    goto LAB_0002abf4;
    do {
      puVar8 = puVar8 + 1;
      piVar13 = (int *)*puVar8;
      iVar5 = iVar5 + 1;
      puVar22[1] = (uint)piVar13;
      puVar22 = puVar22 + 1;
    } while (iVar5 < (int)piVar9);
    piVar26 = (int *)((int)piVar9 - (uint)(puVar18[~(uint)piVar27] == 0));
    if ((int)*puVar7 < (int)piVar9) goto LAB_0002ad34;
LAB_0002ac14:
    piVar9 = piVar13;
    if ((int)piVar26 <= (int)piVar21) goto LAB_0002ac20;
LAB_0002ad60:
    iVar3 = (int)piVar21 * 4;
    puVar8 = puVar18 + (int)piVar21;
    iVar5 = (int)piVar26 + (-1 - (int)piVar21);
    puVar10 = puVar24 + (int)piVar21;
    piVar9 = (int *)*puVar8;
    puVar22 = puVar10;
    if (iVar5 != 0) {
      do {
        puVar8 = puVar8 + 1;
        *puVar22 = (uint)piVar9;
        iVar5 = iVar5 + -1;
        piVar9 = (int *)*puVar8;
        puVar22 = puVar22 + 1;
      } while (iVar5 != 0);
      puVar10 = puVar10 + (int)piVar26 + (-1 - (int)piVar21);
    }
    *puVar10 = (uint)piVar9;
    if (piVar21 != (int *)0x0) goto LAB_0002adb0;
LAB_0002addc:
    uVar17 = *puVar24;
    *puVar24 = uVar17 + 1;
    if (uVar17 + 1 == 0) {
      if (piVar26 == (int *)0x1) {
LAB_0002ae34:
        puVar18 = (uint *)~(uint)piVar26;
        puVar24 = puVar24 + (int)piVar26;
        *puVar24 = 1;
        goto LAB_0002ac90;
      }
      uVar17 = puVar24[1];
      puVar24[1] = uVar17 + 1;
      if (uVar17 + 1 == 0) {
        piVar13 = (int *)0x2;
        puVar18 = puVar24 + 2;
        do {
          bVar1 = piVar26 == piVar13;
          piVar13 = (int *)((int)piVar13 + 1);
          if (bVar1) goto LAB_0002ae34;
          uVar17 = *puVar18;
          *puVar18 = uVar17 + 1;
          puVar18 = puVar18 + 1;
        } while (uVar17 + 1 == 0);
      }
    }
    puVar18 = (uint *)-(int)piVar26;
  }
LAB_0002ac90:
  puVar8 = *(uint **)(puVar31 + -0x30);
  puVar7[1] = (uint)puVar18;
  puVar22 = puVar23;
  goto joined_r0x0002b0c4;
code_r0x0002b0ac:
  uVar17 = uVar17 - 1;
  puVar10 = puVar10 + -1;
  if (uVar17 == 0xffffffff) goto code_r0x0002b0b8;
  goto LAB_0002b098;
code_r0x0002b0b8:
  *puVar24 = 1;
  piVar21 = (int *)0xffffffff;
LAB_0002b0c0:
  puVar8 = *(uint **)(puVar31 + -0x30);
  puVar7[1] = (uint)piVar21;
  puVar32 = puVar34;
joined_r0x0002b0c4:
  piVar26 = piVar21;
  puVar33 = puVar32;
  if (puVar8 != (uint *)0x0) {
    (**(code **)(puVar30 + -0x7a2c))();
    puVar30 = *(undefined **)(puVar31 + -0x40);
  }
LAB_0002ac9c:
  puVar4 = (undefined4 *)*piVar25;
  if (*(undefined4 **)(puVar31 + -0x2c) == puVar4) {
    return puVar4;
  }
  pcVar29 = *(code **)(puVar30 + -0x7b70);
  uVar35 = 0x2b384;
  (*pcVar29)();
  *(uint **)(puVar33 + -0x14) = puVar18;
  *(code **)(puVar33 + -0x20) = pcVar29 + 0x73cb0;
  *(uint **)(puVar33 + -8) = puVar24;
  *(uint **)(puVar33 + -0xc) = puVar22;
  *(undefined4 *)(puVar33 + -4) = uVar35;
  *(int **)(puVar33 + -0x10) = piVar26;
  uVar19 = piVar9[1];
  uVar17 = uVar19;
  if ((int)uVar19 < 0) {
    uVar17 = -uVar19;
  }
  uVar16 = 1;
  if (0 < (int)uVar17) {
    uVar16 = uVar17;
  }
  pcVar29 = (code *)**(undefined4 **)(pcVar29 + 0x6c17c);
  *puVar8 = uVar16;
  puVar4 = (undefined4 *)(*pcVar29)(uVar16 << 2);
  puVar8[2] = (uint)puVar4;
  if (uVar19 != 0) {
    puVar6 = (undefined4 *)piVar9[2];
    iVar5 = uVar17 - 1;
    uVar35 = *puVar6;
    puVar12 = puVar4;
    if (iVar5 != 0) {
      do {
        puVar6 = puVar6 + 1;
        *puVar12 = uVar35;
        iVar5 = iVar5 + -1;
        uVar35 = *puVar6;
        puVar12 = puVar12 + 1;
      } while (iVar5 != 0);
      puVar4 = puVar4 + (uVar17 - 1);
    }
    *puVar4 = uVar35;
  }
  puVar8[1] = uVar19;
  return puVar4;
}

