
/* WARNING: Enum "gmp_randalg_t": Some values do not have unique names */

void __gmpz_urandomm(mpz_ptr rop,__gmp_randstate_struct *rstate,mpz_srcptr n)

{
  mp_limb_t *pmVar1;
  bool bVar2;
  int iVar3;
  mp_limb_t mVar4;
  tmp_reentrant_t *ptVar5;
  size_t sVar6;
  tmp_reentrant_t **pptVar7;
  undefined4 *puVar8;
  undefined1 *puVar9;
  uint *puVar10;
  undefined1 *puVar11;
  tmp_reentrant_t **pptVar12;
  undefined4 *puVar13;
  uint uVar14;
  tmp_reentrant_t *ptVar15;
  uint *puVar16;
  tmp_reentrant_t *ptVar17;
  tmp_reentrant_t *ptVar18;
  undefined1 *puVar19;
  mpz_srcptr p_Var20;
  mpz_srcptr p_Var21;
  tmp_reentrant_t *ptVar22;
  undefined4 uVar23;
  uint *puVar24;
  tmp_reentrant_t *ptVar25;
  tmp_reentrant_t *ptVar26;
  undefined4 *puVar27;
  tmp_reentrant_t **pptVar28;
  tmp_reentrant_t *ptVar29;
  int iVar30;
  tmp_reentrant_t *ptVar31;
  tmp_reentrant_t *unaff_s0;
  tmp_reentrant_t *ptVar32;
  undefined4 *unaff_s2;
  uint uVar33;
  tmp_reentrant_t *ptVar34;
  size_t sVar35;
  mpz_srcptr unaff_s3;
  tmp_reentrant_t *ptVar36;
  tmp_reentrant_t *ptVar37;
  int unaff_s5;
  tmp_reentrant_t *ptVar38;
  uint unaff_s6;
  int *piVar39;
  undefined1 *unaff_s7;
  undefined *puVar40;
  undefined *puVar41;
  code *pcVar42;
  undefined1 *puVar43;
  code *pcVar44;
  undefined1 auStack_60 [16];
  mpz_srcptr local_3c;
  int local_34;
  tmp_reentrant_t *__tmp_marker;
  int local_2c;
  
  puVar40 = PTR___stack_chk_guard_00097540;
  puVar19 = auStack_60;
  puVar43 = auStack_60;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  iVar3 = n->_mp_size;
  if (iVar3 < 0) {
    local_34 = -iVar3;
    if (iVar3 == 0) goto LAB_000361ac;
LAB_00035f20:
    uVar33 = local_34 * 4;
    local_3c = (mpz_srcptr)n->_mp_d;
    unaff_s2 = (undefined4 *)(uVar33 - 4);
    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);
    uVar14 = p_Var20->_mp_alloc;
    if ((uVar14 - 1 & uVar14) == 0) {
      if (local_3c < p_Var20) {
        mVar4 = local_3c->_mp_alloc;
        p_Var21 = local_3c;
        while (mVar4 == 0) {
          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;
          if (p_Var20 <= p_Var21) goto LAB_00035f84;
          mVar4 = *(mp_limb_t *)p_Var21;
        }
        goto LAB_00036124;
      }
LAB_00035f84:
      p_Var20 = (mpz_srcptr)&DAT_00000001;
      if (0xffff < uVar14) goto LAB_00035f90;
LAB_00036130:
      iVar3 = 0x20;
      if (0xff < uVar14) {
        iVar3 = 0x18;
      }
      iVar30 = 9;
      if (0xff >= uVar14) {
        iVar30 = 1;
      }
      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));
      unaff_s0 = (tmp_reentrant_t *)
                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);
    }
    else {
LAB_00036124:
      p_Var20 = (mpz_srcptr)0x0;
      if (uVar14 < 0x10000) goto LAB_00036130;
LAB_00035f90:
      iVar3 = 0x10;
      if (0xffffff < uVar14) {
        iVar3 = 8;
      }
      iVar30 = 0x19;
      if (0xffffff >= uVar14) {
        iVar30 = 0x11;
      }
      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));
      unaff_s0 = (tmp_reentrant_t *)
                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);
    }
    if (unaff_s0 != (tmp_reentrant_t *)0x0) {
      __tmp_marker = (tmp_reentrant_t *)0x0;
      unaff_s6 = uVar33;
      puVar19 = auStack_60;
      if (n == rop) goto LAB_000361b8;
      goto LAB_00035fe8;
    }
    rop->_mp_size = 0;
  }
  else {
    local_34 = iVar3;
    if (iVar3 != 0) goto LAB_00035f20;
LAB_000361ac:
    (*(code *)PTR___gmp_divide_by_zero_000975dc)();
LAB_000361b8:
    if (unaff_s6 < 0x7f01) {
      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);
      puVar43 = auStack_60 + iVar3;
      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);
    }
    else {
      p_Var20 = (mpz_srcptr)
                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);
    }
    iVar3 = local_34 + -1;
    mVar4 = local_3c->_mp_alloc;
    p_Var21 = p_Var20;
    puVar19 = puVar43;
    if (iVar3 == 0) {
      p_Var20->_mp_alloc = mVar4;
      local_3c = p_Var20;
    }
    else {
      do {
        local_3c = (mpz_srcptr)&local_3c->_mp_size;
        p_Var21->_mp_alloc = mVar4;
        iVar3 = iVar3 + -1;
        mVar4 = *(mp_limb_t *)local_3c;
        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;
      } while (iVar3 != 0);
      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;
      local_3c = p_Var20;
    }
LAB_00035fe8:
    if (rop->_mp_alloc < local_34) {
      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);
    }
    else {
      unaff_s3 = (mpz_srcptr)rop->_mp_d;
    }
    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);
    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);
    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);
    *piVar39 = 0;
    unaff_s6 = 0xffffffff;
    iVar3 = 0x50;
    do {
      unaff_s5 = iVar3;
      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);
      iVar3 = local_34;
      puVar11 = unaff_s7;
      puVar8 = unaff_s2;
      do {
        iVar3 = iVar3 + -1;
        puVar8 = puVar8 + -1;
        if (iVar3 == -1) goto joined_r0x00036070;
        puVar27 = (undefined4 *)(puVar11 + -4);
        n = (mpz_srcptr)*puVar8;
        puVar11 = puVar11 + -4;
      } while ((mpz_srcptr)*puVar27 == n);
      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);
      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;
joined_r0x00036070:
      iVar3 = unaff_s5 + -1;
    } while (unaff_s5 + -1 != 0);
    unaff_s5 = unaff_s5 + -1;
    p_Var20 = unaff_s3;
    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);
    n = local_3c;
LAB_00036094:
    iVar30 = *piVar39;
    iVar3 = local_34;
    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {
      iVar30 = *(int *)(unaff_s7 + -8);
      unaff_s7 = unaff_s7 + -4;
    }
    rop->_mp_size = iVar3;
    ptVar15 = __tmp_marker;
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar40) {
    return;
  }
  pcVar44 = __gmpz_xor;
  puVar40 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar41 = puVar40 + 0x68dd0;
  puVar11 = puVar19 + -0x58;
  puVar9 = puVar19 + -0x58;
  *(uint *)(puVar19 + -0x10) = unaff_s6;
  *(int *)(puVar19 + -0x24) = local_34;
  piVar39 = *(int **)(puVar40 + 0x612d0);
  ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size;
  *(undefined1 **)(puVar19 + -8) = auStack_60;
  *(undefined1 **)(puVar19 + -0xc) = unaff_s7;
  *(int *)(puVar19 + -0x14) = unaff_s5;
  *(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate;
  *(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3;
  *(undefined4 **)(puVar19 + -0x20) = unaff_s2;
  *(code **)(puVar19 + -4) = pcVar44;
  *(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0;
  *(undefined **)(puVar19 + -0x48) = puVar41;
  *(undefined4 *)(puVar19 + -0x30) = 0;
  ptVar37 = (tmp_reentrant_t *)n->_mp_size;
  ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d;
  ptVar38 = (tmp_reentrant_t *)n->_mp_d;
  ptVar34 = ptVar15[1].next;
  *(int *)(puVar19 + -0x2c) = *piVar39;
  ptVar18 = (tmp_reentrant_t *)-(int)ptVar32;
  if ((int)ptVar32 < 0) {
    ptVar31 = ptVar32;
    ptVar5 = ptVar36;
    if (-1 < (int)ptVar37) goto LAB_0003630c;
    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;
    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;
    if (uVar14 < 0x7f01) {
      iVar3 = -(uVar14 + 7 & 0xfffffff8);
      puVar11 = puVar19 + iVar3 + -0x58;
      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);
      ptVar5 = ptVar18;
      ptVar25 = ptVar34;
    }
    else {
      pcVar44 = *(code **)(puVar40 + 0x61080);
      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;
      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;
      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);
      puVar41 = *(undefined **)(puVar19 + -0x48);
      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);
      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);
    }
    ptVar22 = ptVar36->next;
    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);
    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);
    if (ptVar22 == (tmp_reentrant_t *)0x0) {
      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {
        sVar6 = ptVar36->size;
        ptVar31->size = sVar6 - 1;
        if (sVar6 == 0) {
          ptVar17 = ptVar36 + 1;
          iVar3 = 2;
          ptVar22 = ptVar31 + 1;
          do {
            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;
            ptVar26 = ptVar17->next;
            iVar3 = iVar3 + 1;
            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;
            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);
            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;
          } while (ptVar26 == (tmp_reentrant_t *)0x0);
        }
        else {
          iVar3 = 2;
        }
        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {
          pptVar12 = &ptVar36->next + iVar3;
          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);
          pptVar7 = &ptVar31->next + iVar3;
          do {
            ptVar22 = *pptVar12;
            pptVar12 = pptVar12 + 1;
            *pptVar7 = ptVar22;
            pptVar7 = pptVar7 + 1;
          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);
          ptVar22 = ptVar38->next;
          goto LAB_000365a8;
        }
      }
LAB_000365a4:
      ptVar22 = ptVar38->next;
    }
    else {
      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;
      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;
      iVar3 = 1;
      ptVar22 = ptVar31;
      do {
        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;
        sVar6 = *(size_t *)ptVar36;
        iVar3 = iVar3 + 1;
        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);
        *(size_t *)ptVar22 = sVar6;
      } while (iVar3 < (int)ptVar5);
      ptVar22 = ptVar38->next;
    }
LAB_000365a8:
    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);
    if (ptVar22 == (tmp_reentrant_t *)0x0) {
      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {
        sVar6 = ptVar38->size;
        ptVar29->size = sVar6 - 1;
        if (sVar6 == 0) {
          ptVar17 = ptVar38 + 1;
          iVar3 = 2;
          ptVar22 = ptVar29 + 1;
          do {
            bVar2 = (int)ptVar25 <= iVar3;
            iVar3 = iVar3 + 1;
            if (bVar2) goto LAB_00036608;
            ptVar26 = ptVar17->next;
            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;
            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);
            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;
          } while (ptVar26 == (tmp_reentrant_t *)0x0);
        }
        else {
          iVar3 = 2;
        }
        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {
          pptVar12 = &ptVar38->next + iVar3;
          pptVar7 = &ptVar29->next + iVar3;
          do {
            ptVar22 = *pptVar12;
            pptVar12 = pptVar12 + 1;
            *pptVar7 = ptVar22;
            pptVar7 = pptVar7 + 1;
          } while (&ptVar38->next + (int)ptVar25 != pptVar12);
        }
      }
    }
    else if ((ptVar38 != ptVar29) &&
            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {
      do {
        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;
        iVar3 = iVar3 + 1;
        ptVar22->size = *(size_t *)ptVar38;
        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;
      } while (iVar3 < (int)ptVar25);
    }
LAB_00036608:
    ptVar38 = ptVar29;
    unaff_s0 = ptVar18;
    if ((int)ptVar37 <= (int)ptVar32) {
      ptVar38 = ptVar31;
      ptVar31 = ptVar29;
      unaff_s0 = ptVar25;
      ptVar34 = ptVar5;
      ptVar37 = ptVar32;
    }
    pcVar44 = *(code **)(puVar41 + -0x7a84);
    if ((int)ptVar15->next < (int)unaff_s0) {
      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;
      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;
      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);
      puVar41 = *(undefined **)(puVar19 + -0x48);
      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);
      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);
    }
    else {
      ptVar18 = ptVar15[1].next;
    }
    if (unaff_s0 == ptVar34) {
      iVar3 = (int)unaff_s0 << 2;
    }
    else {
      iVar3 = (int)ptVar34 * 4;
      pptVar12 = &ptVar31->next + (int)ptVar34;
      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));
      pptVar28 = &ptVar18->next + (int)ptVar34;
      ptVar5 = *pptVar12;
      pptVar7 = pptVar28;
      if (puVar9 != (undefined1 *)0x0) {
        do {
          pptVar12 = pptVar12 + 1;
          *pptVar7 = ptVar5;
          puVar9 = puVar9 + -1;
          ptVar5 = *pptVar12;
          pptVar7 = pptVar7 + 1;
        } while (puVar9 != (undefined1 *)0x0);
        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));
      }
      *pptVar28 = ptVar5;
    }
    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);
    do {
      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);
      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);
      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);
      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);
      ptVar25 = (tmp_reentrant_t *)*puVar8;
      *puVar16 = *puVar10 ^ (uint)ptVar25;
    } while ((tmp_reentrant_t *)iVar3 != ptVar5);
    pptVar7 = &ptVar18->next + (int)unaff_s0;
    do {
      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;
      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);
      pptVar7 = pptVar7 + -1;
    } while (unaff_s0 != (tmp_reentrant_t *)0x0);
  }
  else {
    if (-1 < (int)ptVar37) {
      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);
      ptVar18 = ptVar15;
      ptVar5 = ptVar37;
      if (ptVar25 == (tmp_reentrant_t *)0x0) {
        pcVar44 = *(code **)(puVar40 + 0x6134c);
        if ((int)ptVar15->next < (int)ptVar32) {
          *(mpz_srcptr *)(puVar19 + -0x34) = n;
          ptVar25 = ptVar32;
          (*pcVar44)();
          puVar41 = *(undefined **)(puVar19 + -0x48);
          ptVar34 = ptVar15[1].next;
          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);
        }
        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {
          pptVar12 = &ptVar36->next + (int)ptVar37;
          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));
          pptVar28 = &ptVar34->next + (int)ptVar37;
          ptVar25 = *pptVar12;
          pptVar7 = pptVar28;
          if (puVar11 != (undefined1 *)0x0) {
            do {
              pptVar12 = pptVar12 + 1;
              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);
              *pptVar7 = ptVar25;
              puVar11 = puVar11 + -1;
              ptVar25 = *pptVar12;
              pptVar7 = (tmp_reentrant_t **)ptVar18;
            } while (puVar11 != (undefined1 *)0x0);
            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));
          }
          *pptVar28 = ptVar25;
        }
        iVar3 = 0;
        if (ptVar37 != (tmp_reentrant_t *)0x0) {
          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);
          do {
            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);
            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);
            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);
            iVar3 = iVar3 + 4;
            ptVar25 = (tmp_reentrant_t *)*puVar8;
            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);
          } while (ptVar5 != (tmp_reentrant_t *)iVar3);
        }
        ptVar37 = ptVar32;
        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;
        ptVar37 = (tmp_reentrant_t *)0x0;
      }
      else {
        pcVar44 = *(code **)(puVar40 + 0x6134c);
        if ((int)ptVar15->next < (int)ptVar37) {
          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;
          ptVar25 = ptVar37;
          (*pcVar44)();
          puVar41 = *(undefined **)(puVar19 + -0x48);
          ptVar34 = ptVar15[1].next;
          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);
        }
        if (ptVar34 != ptVar38) {
          pptVar12 = &ptVar38->next + (int)ptVar32;
          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));
          pptVar28 = &ptVar34->next + (int)ptVar32;
          ptVar25 = *pptVar12;
          pptVar7 = pptVar28;
          if (puVar11 != (undefined1 *)0x0) {
            do {
              pptVar12 = pptVar12 + 1;
              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);
              *pptVar7 = ptVar25;
              puVar11 = puVar11 + -1;
              ptVar25 = *pptVar12;
              pptVar7 = (tmp_reentrant_t **)ptVar18;
            } while (puVar11 != (undefined1 *)0x0);
            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));
          }
          *pptVar28 = ptVar25;
        }
        if (ptVar32 != (tmp_reentrant_t *)0x0) {
          iVar3 = 0;
          do {
            puVar10 = (uint *)((int)&ptVar36->next + iVar3);
            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);
            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);
            iVar3 = iVar3 + 4;
            ptVar25 = (tmp_reentrant_t *)*puVar8;
            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);
          } while ((int)ptVar32 << 2 != iVar3);
        }
LAB_00036910:
        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {
          pptVar7 = &ptVar34->next + (int)ptVar37;
          do {
            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);
            if (ptVar37 == (tmp_reentrant_t *)0x0) {
              ptVar37 = (tmp_reentrant_t *)0x0;
              break;
            }
            pmVar1 = (mp_limb_t *)(pptVar7 + -2);
            pptVar7 = pptVar7 + -1;
          } while (*pmVar1 == 0);
        }
      }
      ptVar15->size = (size_t)ptVar37;
      goto LAB_000366e0;
    }
    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;
    n = p_Var20;
    ptVar31 = ptVar37;
    ptVar5 = ptVar38;
    ptVar37 = ptVar32;
    ptVar38 = ptVar36;
LAB_0003630c:
    ptVar36 = ptVar5;
    ptVar32 = ptVar31;
    uVar14 = (int)ptVar18 * 4;
    if (uVar14 < 0x7f01) {
      iVar3 = -(uVar14 + 7 & 0xfffffff8);
      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);
      puVar11 = puVar19 + iVar3 + -0x58;
    }
    else {
      pcVar44 = *(code **)(puVar40 + 0x61080);
      *(mpz_srcptr *)(puVar19 + -0x38) = n;
      *(uint *)(puVar19 + -0x34) = uVar14;
      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);
      puVar41 = *(undefined **)(puVar19 + -0x48);
      n = *(mpz_srcptr *)(puVar19 + -0x38);
      uVar14 = *(uint *)(puVar19 + -0x34);
      puVar11 = puVar19 + -0x58;
    }
    ptVar5 = ptVar36->next;
    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);
    if (ptVar5 == (tmp_reentrant_t *)0x0) {
      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {
        sVar6 = ptVar36->size;
        ptVar31->size = sVar6 - 1;
        if (sVar6 == 0) {
          ptVar25 = ptVar36 + 1;
          iVar3 = 2;
          ptVar5 = ptVar31 + 1;
          do {
            if ((int)ptVar18 <= iVar3) goto LAB_00036390;
            ptVar22 = ptVar25->next;
            iVar3 = iVar3 + 1;
            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;
            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);
            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;
          } while (ptVar22 == (tmp_reentrant_t *)0x0);
        }
        else {
          iVar3 = 2;
        }
        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {
          pptVar12 = &ptVar36->next + iVar3;
          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);
          pptVar7 = &ptVar31->next + iVar3;
          do {
            ptVar5 = *pptVar12;
            pptVar12 = pptVar12 + 1;
            *pptVar7 = ptVar5;
            pptVar7 = pptVar7 + 1;
          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);
        }
      }
LAB_00036390:
      ptVar5 = ptVar18;
      if ((int)ptVar18 <= (int)ptVar37) {
        ptVar5 = ptVar37;
      }
      pcVar44 = *(code **)(puVar41 + -0x7a84);
      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;
LAB_00036778:
      *(uint *)(puVar19 + -0x3c) = uVar14;
      *(mpz_srcptr *)(puVar19 + -0x38) = n;
      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;
      (*pcVar44)(ptVar15);
      puVar41 = *(undefined **)(puVar19 + -0x48);
      ptVar34 = ptVar15[1].next;
      uVar14 = *(uint *)(puVar19 + -0x3c);
      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);
      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);
      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;
LAB_000363b8:
      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);
      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);
      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);
      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);
      uVar23 = *puVar27;
      puVar8 = puVar13;
      ptVar32 = ptVar18;
      if (puVar9 != (undefined1 *)0x0) {
        do {
          puVar27 = puVar27 + 1;
          *puVar8 = uVar23;
          puVar9 = puVar9 + -1;
          uVar23 = *puVar27;
          puVar8 = puVar8 + 1;
        } while (puVar9 != (undefined1 *)0x0);
        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);
        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);
      }
      uVar33 = 0;
      *puVar13 = uVar23;
      do {
        puVar10 = (uint *)((int)&ptVar38->next + uVar33);
        puVar24 = (uint *)((int)&ptVar31->next + uVar33);
        puVar16 = (uint *)((int)&ptVar34->next + uVar33);
        uVar33 = uVar33 + 4;
        *puVar16 = *puVar10 ^ *puVar24;
      } while (uVar14 != uVar33);
      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);
      ptVar34->next = ptVar38;
      ptVar18 = ptVar37;
      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;
LAB_00036438:
      sVar6 = ptVar34->size + 1;
      ptVar34->size = sVar6;
      ptVar37 = ptVar18;
      if (sVar6 != 0) goto LAB_00036840;
      iVar3 = 2;
      ptVar37 = ptVar34 + 1;
      do {
        ptVar5 = ptVar18;
        if ((int)ptVar18 <= iVar3) {
          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;
          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);
          goto LAB_00036844;
        }
        iVar3 = iVar3 + 1;
        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);
        ptVar37->next = ptVar38;
        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;
      } while (ptVar38 == (tmp_reentrant_t *)0x0);
      ptVar25 = (tmp_reentrant_t *)0x0;
      unaff_s0 = ptVar18;
    }
    else {
      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;
      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;
      iVar3 = 1;
      ptVar5 = ptVar31;
      do {
        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;
        sVar6 = *(size_t *)ptVar36;
        iVar3 = iVar3 + 1;
        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);
        *(size_t *)ptVar5 = sVar6;
      } while (iVar3 < (int)ptVar18);
      ptVar5 = ptVar18;
      if ((int)ptVar18 <= (int)ptVar37) {
        ptVar5 = ptVar37;
      }
      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {
        pcVar44 = *(code **)(puVar41 + -0x7a84);
        goto LAB_00036778;
      }
LAB_000363b0:
      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;
LAB_000367b0:
      if (ptVar37 == ptVar18) {
        iVar3 = (int)ptVar18 << 2;
LAB_00036804:
        iVar30 = 0;
        do {
          puVar10 = (uint *)((int)&ptVar38->next + iVar30);
          puVar24 = (uint *)((int)&ptVar31->next + iVar30);
          puVar16 = (uint *)((int)&ptVar34->next + iVar30);
          iVar30 = iVar30 + 4;
          *puVar16 = *puVar10 ^ *puVar24;
        } while (iVar3 != iVar30);
      }
      else {
        iVar3 = (int)ptVar37 * 4;
        pptVar12 = &ptVar31->next + (int)ptVar37;
        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));
        pptVar28 = &ptVar34->next + (int)ptVar37;
        ptVar5 = *pptVar12;
        pptVar7 = pptVar28;
        if (puVar9 != (undefined1 *)0x0) {
          do {
            pptVar12 = pptVar12 + 1;
            *pptVar7 = ptVar5;
            puVar9 = puVar9 + -1;
            ptVar5 = *pptVar12;
            pptVar7 = pptVar7 + 1;
          } while (puVar9 != (undefined1 *)0x0);
          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));
        }
        *pptVar28 = ptVar5;
        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;
      }
      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);
      ptVar34->next = ptVar38;
      if (ptVar38 == (tmp_reentrant_t *)0x0) {
        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;
        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);
        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;
        ptVar5 = ptVar18;
        goto LAB_00036844;
      }
LAB_00036840:
      ptVar25 = (tmp_reentrant_t *)0x0;
      unaff_s0 = ptVar18;
      ptVar5 = ptVar37;
    }
LAB_00036844:
    (&ptVar34->next)[(int)ptVar18] = ptVar25;
    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];
    pptVar7 = &ptVar34->next + (int)unaff_s0;
    while (mVar4 == 0) {
      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);
      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;
      mVar4 = (mp_limb_t)pptVar7[-2];
      pptVar7 = pptVar7 + -1;
    }
    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;
  }
LAB_000366d4:
  ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);
  ptVar15->size = (size_t)unaff_s0;
  ptVar37 = ptVar32;
  puVar9 = puVar11;
  if (ptVar18 != (tmp_reentrant_t *)0x0) {
    (**(code **)(puVar41 + -0x7a2c))();
    puVar41 = *(undefined **)(puVar19 + -0x48);
  }
LAB_000366e0:
  if (*(int *)(puVar19 + -0x2c) == *piVar39) {
    return;
  }
  pcVar44 = *(code **)(puVar41 + -0x7b70);
  uVar23 = 0x36bd8;
  (*pcVar44)();
  pcVar42 = pcVar44 + 0x68460;
  *(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34;
  *(code **)(puVar9 + -0x20) = pcVar42;
  *(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37;
  *(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0;
  *(undefined4 *)(puVar9 + -4) = uVar23;
  *(tmp_reentrant_t **)(puVar9 + -8) = ptVar5;
  *(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36;
  sVar35 = ptVar25->size;
  sVar6 = sVar35;
  if ((int)sVar35 < 0) {
    sVar6 = -sVar35;
  }
  if (ptVar25 != ptVar18) {
    ptVar15 = ptVar25[2].next;
    if ((int)ptVar18->next < (int)sVar6) {
      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);
      pcVar42 = *(code **)(puVar9 + -0x20);
    }
    else {
      ptVar34 = ptVar18[1].next;
    }
    if (sVar35 != 0) {
      ptVar32 = ptVar25[1].next;
      iVar3 = sVar6 - 1;
      ptVar38 = ptVar32->next;
      ptVar37 = ptVar34;
      if (iVar3 != 0) {
        do {
          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;
          ptVar37->next = ptVar38;
          iVar3 = iVar3 + -1;
          ptVar38 = *(tmp_reentrant_t **)ptVar32;
          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;
        } while (iVar3 != 0);
        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);
      }
      ptVar34->next = ptVar38;
    }
    if ((int)ptVar18[1].size < (int)ptVar15) {
      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);
    }
    else {
      puVar8 = (undefined4 *)ptVar18[2].size;
    }
    ptVar18[2].next = ptVar15;
    if (ptVar15 != (tmp_reentrant_t *)0x0) {
      puVar13 = (undefined4 *)ptVar25[2].size;
      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);
      uVar23 = *puVar13;
      puVar27 = puVar8;
      if (puVar19 != (undefined1 *)0x0) {
        do {
          puVar13 = puVar13 + 1;
          *puVar27 = uVar23;
          puVar19 = puVar19 + -1;
          uVar23 = *puVar13;
          puVar27 = puVar27 + 1;
        } while (puVar19 != (undefined1 *)0x0);
        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);
      }
      *puVar8 = uVar23;
    }
  }
  ptVar18->size = sVar6;
  return;
}



void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  byte *pbVar6;
  uint *puVar7;
  undefined4 *puVar8;
  byte *pbVar9;
  uint *puVar10;
  byte *pbVar11;
  uint *puVar12;
  undefined4 *puVar13;
  uint *puVar14;
  uint *puVar15;
  uint *puVar16;
  undefined4 uVar17;
  uint *puVar18;
  uint *puVar19;
  undefined4 *puVar20;
  int iVar21;
  byte *pbVar22;
  uint *unaff_s0;
  uint *puVar23;
  undefined4 *unaff_s2;
  uint uVar24;
  uint *puVar25;
  uint *unaff_s3;
  uint *puVar26;
  uint *puVar27;
  int unaff_s5;
  uint *puVar28;
  uint unaff_s6;
  int unaff_s7;
  undefined *puVar29;
  undefined *puVar30;
  code *pcVar31;
  undefined1 *puVar32;
  undefined1 *puVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  code *pcVar36;
  undefined1 auStack_60 [16];
  uint *local_3c;
  uint local_34;
  uint *local_30;
  int local_2c;
  
  puVar29 = PTR___stack_chk_guard_00097540;
  puVar32 = auStack_60;
  puVar33 = auStack_60;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  uVar2 = param_3[1];
  if ((int)uVar2 < 0) {
    local_34 = -uVar2;
    if (uVar2 == 0) goto LAB_000361ac;
LAB_00035f20:
    uVar24 = local_34 * 4;
    local_3c = (uint *)param_3[2];
    unaff_s2 = (undefined4 *)(uVar24 - 4);
    puVar16 = local_3c + (local_34 - 1);
    uVar2 = *puVar16;
    if ((uVar2 - 1 & uVar2) == 0) {
      if (local_3c < puVar16) {
        uVar3 = *local_3c;
        puVar14 = local_3c;
        while (uVar3 == 0) {
          puVar14 = puVar14 + 1;
          if (puVar16 <= puVar14) goto LAB_00035f84;
          uVar3 = *puVar14;
        }
        goto LAB_00036124;
      }
LAB_00035f84:
      puVar16 = (uint *)0x1;
      if (0xffff < uVar2) goto LAB_00035f90;
LAB_00036130:
      iVar4 = 0x20;
      if (0xff < uVar2) {
        iVar4 = 0x18;
      }
      iVar21 = 9;
      if (0xff >= uVar2) {
        iVar21 = 1;
      }
      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));
      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);
    }
    else {
LAB_00036124:
      puVar16 = (uint *)0x0;
      if (uVar2 < 0x10000) goto LAB_00036130;
LAB_00035f90:
      iVar4 = 0x10;
      if (0xffffff < uVar2) {
        iVar4 = 8;
      }
      iVar21 = 0x19;
      if (0xffffff >= uVar2) {
        iVar21 = 0x11;
      }
      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));
      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);
    }
    if (unaff_s0 != (uint *)0x0) {
      local_30 = (uint *)0x0;
      unaff_s6 = uVar24;
      puVar32 = auStack_60;
      if (param_3 == param_1) goto LAB_000361b8;
      goto LAB_00035fe8;
    }
    param_1[1] = 0;
  }
  else {
    local_34 = uVar2;
    if (uVar2 != 0) goto LAB_00035f20;
LAB_000361ac:
    (*(code *)PTR___gmp_divide_by_zero_000975dc)();
LAB_000361b8:
    if (unaff_s6 < 0x7f01) {
      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);
      puVar33 = auStack_60 + iVar4;
      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);
    }
    else {
      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);
    }
    iVar4 = local_34 - 1;
    uVar2 = *local_3c;
    puVar14 = puVar16;
    puVar32 = puVar33;
    if (iVar4 == 0) {
      *puVar16 = uVar2;
      local_3c = puVar16;
    }
    else {
      do {
        local_3c = local_3c + 1;
        *puVar14 = uVar2;
        iVar4 = iVar4 + -1;
        uVar2 = *local_3c;
        puVar14 = puVar14 + 1;
      } while (iVar4 != 0);
      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;
      local_3c = puVar16;
    }
LAB_00035fe8:
    if ((int)*param_1 < (int)local_34) {
      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);
    }
    else {
      unaff_s3 = (uint *)param_1[2];
    }
    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);
    unaff_s7 = (int)unaff_s3 + unaff_s6;
    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);
    *piVar5 = 0;
    unaff_s6 = 0xffffffff;
    iVar4 = 0x50;
    do {
      unaff_s5 = iVar4;
      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);
      uVar2 = local_34;
      iVar4 = unaff_s7;
      puVar8 = unaff_s2;
      do {
        uVar2 = uVar2 - 1;
        puVar8 = puVar8 + -1;
        if (uVar2 == 0xffffffff) goto joined_r0x00036070;
        puVar20 = (undefined4 *)(iVar4 + -4);
        param_3 = (uint *)*puVar8;
        iVar4 = iVar4 + -4;
      } while ((uint *)*puVar20 == param_3);
      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);
      if (puVar16 == (uint *)0x0) goto LAB_00036094;
joined_r0x00036070:
      iVar4 = unaff_s5 + -1;
    } while (unaff_s5 + -1 != 0);
    unaff_s5 = unaff_s5 + -1;
    puVar16 = unaff_s3;
    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);
    param_3 = local_3c;
LAB_00036094:
    iVar4 = *piVar5;
    uVar2 = local_34;
    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {
      iVar4 = *(int *)(unaff_s7 + -8);
      unaff_s7 = unaff_s7 + -4;
    }
    param_1[1] = uVar2;
    puVar14 = local_30;
    if (local_30 != (uint *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar29) {
    return;
  }
  pcVar36 = __gmpz_xor;
  puVar29 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar29 + 0x68dd0;
  puVar34 = puVar32 + -0x58;
  puVar35 = puVar32 + -0x58;
  *(uint *)(puVar32 + -0x10) = unaff_s6;
  *(uint *)(puVar32 + -0x24) = local_34;
  piVar5 = *(int **)(puVar29 + 0x612d0);
  puVar23 = (uint *)puVar16[1];
  *(undefined1 **)(puVar32 + -8) = auStack_60;
  *(int *)(puVar32 + -0xc) = unaff_s7;
  *(int *)(puVar32 + -0x14) = unaff_s5;
  *(int *)(puVar32 + -0x18) = param_2;
  *(uint **)(puVar32 + -0x1c) = unaff_s3;
  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;
  *(code **)(puVar32 + -4) = pcVar36;
  *(uint **)(puVar32 + -0x28) = unaff_s0;
  *(undefined **)(puVar32 + -0x48) = puVar30;
  *(undefined4 *)(puVar32 + -0x30) = 0;
  puVar27 = (uint *)param_3[1];
  puVar26 = (uint *)puVar16[2];
  puVar28 = (uint *)param_3[2];
  puVar25 = (uint *)puVar14[2];
  *(int *)(puVar32 + -0x2c) = *piVar5;
  puVar10 = (uint *)-(int)puVar23;
  if ((int)puVar23 < 0) {
    puVar16 = puVar23;
    puVar15 = puVar26;
    if (-1 < (int)puVar27) goto LAB_0003630c;
    puVar25 = (uint *)-(int)puVar27;
    uVar2 = ((int)puVar10 - (int)puVar27) * 4;
    if (uVar2 < 0x7f01) {
      iVar4 = -(uVar2 + 7 & 0xfffffff8);
      puVar34 = puVar32 + iVar4 + -0x58;
      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);
      puVar15 = puVar10;
      puVar18 = puVar25;
    }
    else {
      pcVar36 = *(code **)(puVar29 + 0x61080);
      *(uint **)(puVar32 + -0x38) = puVar25;
      *(uint **)(puVar32 + -0x34) = puVar10;
      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar18 = *(uint **)(puVar32 + -0x38);
      puVar15 = *(uint **)(puVar32 + -0x34);
    }
    uVar2 = *puVar26;
    puVar19 = puVar16 + (int)puVar15;
    *puVar16 = uVar2 - 1;
    if (uVar2 == 0) {
      if (puVar23 != (uint *)0xffffffff) {
        uVar2 = puVar26[1];
        puVar16[1] = uVar2 - 1;
        if (uVar2 == 0) {
          puVar12 = puVar26 + 2;
          iVar4 = 2;
          puVar7 = puVar16 + 2;
          do {
            if ((int)puVar15 <= iVar4) goto LAB_000365a4;
            uVar2 = *puVar12;
            iVar4 = iVar4 + 1;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2 - 1;
            puVar7 = puVar7 + 1;
          } while (uVar2 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {
          puVar12 = puVar26 + iVar4;
          puVar26 = puVar26 + (int)puVar15;
          puVar7 = puVar16 + iVar4;
          do {
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2;
            puVar7 = puVar7 + 1;
          } while (puVar12 != puVar26);
          uVar2 = *puVar28;
          goto LAB_000365a8;
        }
      }
LAB_000365a4:
      uVar2 = *puVar28;
    }
    else {
      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;
      puVar26 = puVar26 + 1;
      iVar4 = 1;
      puVar7 = puVar16;
      do {
        puVar7 = puVar7 + 1;
        uVar2 = *puVar26;
        iVar4 = iVar4 + 1;
        puVar26 = puVar26 + 1;
        *puVar7 = uVar2;
      } while (iVar4 < (int)puVar15);
      uVar2 = *puVar28;
    }
LAB_000365a8:
    *puVar19 = uVar2 - 1;
    if (uVar2 == 0) {
      if (puVar27 != (uint *)0xffffffff) {
        uVar2 = puVar28[1];
        puVar19[1] = uVar2 - 1;
        if (uVar2 == 0) {
          puVar12 = puVar28 + 2;
          iVar4 = 2;
          puVar7 = puVar19 + 2;
          do {
            bVar1 = (int)puVar18 <= iVar4;
            iVar4 = iVar4 + 1;
            if (bVar1) goto LAB_00036608;
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2 - 1;
            puVar7 = puVar7 + 1;
          } while (uVar2 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {
          puVar12 = puVar28 + iVar4;
          puVar7 = puVar19 + iVar4;
          do {
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2;
            puVar7 = puVar7 + 1;
          } while (puVar28 + (int)puVar18 != puVar12);
        }
      }
    }
    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {
      do {
        puVar28 = puVar28 + 1;
        iVar4 = iVar4 + 1;
        puVar7[1] = *puVar28;
        puVar7 = puVar7 + 1;
      } while (iVar4 < (int)puVar18);
    }
LAB_00036608:
    puVar28 = puVar19;
    unaff_s0 = puVar10;
    if ((int)puVar27 <= (int)puVar23) {
      puVar28 = puVar16;
      puVar16 = puVar19;
      unaff_s0 = puVar18;
      puVar25 = puVar15;
      puVar27 = puVar23;
    }
    pcVar36 = *(code **)(puVar30 + -0x7a84);
    if ((int)*puVar14 < (int)unaff_s0) {
      *(uint **)(puVar32 + -0x38) = puVar16;
      *(uint **)(puVar32 + -0x34) = puVar28;
      uVar2 = (*pcVar36)(puVar14,unaff_s0);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar28 = *(uint **)(puVar32 + -0x34);
      puVar16 = *(uint **)(puVar32 + -0x38);
    }
    else {
      uVar2 = puVar14[2];
    }
    if (unaff_s0 == puVar25) {
      puVar10 = (uint *)((int)unaff_s0 << 2);
    }
    else {
      puVar10 = (uint *)((int)puVar25 * 4);
      puVar18 = puVar16 + (int)puVar25;
      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));
      puVar19 = (uint *)(uVar2 + (int)puVar10);
      uVar24 = *puVar18;
      puVar15 = puVar19;
      if (pbVar11 != (byte *)0x0) {
        do {
          puVar18 = puVar18 + 1;
          *puVar15 = uVar24;
          pbVar11 = pbVar11 + -1;
          uVar24 = *puVar18;
          puVar15 = puVar15 + 1;
        } while (pbVar11 != (byte *)0x0);
        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));
      }
      *puVar19 = uVar24;
    }
    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);
    do {
      puVar27 = (uint *)((int)puVar28 + (int)puVar15);
      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);
      puVar19 = (uint *)(uVar2 + (int)puVar15);
      puVar15 = puVar15 + 1;
      puVar18 = *(uint **)pbVar11;
      *puVar19 = *puVar27 ^ (uint)puVar18;
    } while (puVar10 != puVar15);
    iVar4 = uVar2 + (int)unaff_s0 * 4;
    do {
      if (*(int *)(iVar4 + -4) != 0) break;
      unaff_s0 = (uint *)((int)unaff_s0 + -1);
      iVar4 = iVar4 + -4;
    } while (unaff_s0 != (uint *)0x0);
  }
  else {
    if (-1 < (int)puVar27) {
      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);
      puVar10 = puVar14;
      puVar15 = puVar27;
      if (puVar18 == (uint *)0x0) {
        pcVar36 = *(code **)(puVar29 + 0x6134c);
        if ((int)*puVar14 < (int)puVar23) {
          *(uint **)(puVar32 + -0x34) = param_3;
          puVar18 = puVar23;
          (*pcVar36)();
          puVar30 = *(undefined **)(puVar32 + -0x48);
          puVar25 = (uint *)puVar14[2];
          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);
        }
        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {
          puVar19 = puVar26 + (int)puVar27;
          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));
          puVar7 = puVar25 + (int)puVar27;
          puVar18 = (uint *)*puVar19;
          puVar16 = puVar7;
          if (pbVar11 != (byte *)0x0) {
            do {
              puVar19 = puVar19 + 1;
              puVar10 = puVar16 + 1;
              *puVar16 = (uint)puVar18;
              pbVar11 = pbVar11 + -1;
              puVar18 = (uint *)*puVar19;
              puVar16 = puVar10;
            } while (pbVar11 != (byte *)0x0);
            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));
          }
          *puVar7 = (uint)puVar18;
        }
        puVar16 = (uint *)0x0;
        if (puVar27 != (uint *)0x0) {
          puVar15 = (uint *)((int)puVar27 << 2);
          do {
            puVar27 = (uint *)((int)puVar26 + (int)puVar16);
            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);
            puVar10 = (uint *)((int)puVar25 + (int)puVar16);
            puVar16 = puVar16 + 1;
            puVar18 = *(uint **)pbVar11;
            *puVar10 = *puVar27 ^ (uint)puVar18;
          } while (puVar15 != puVar16);
        }
        puVar27 = puVar23;
        if (puVar23 != (uint *)0x0) goto LAB_00036910;
        puVar27 = (uint *)0x0;
      }
      else {
        pcVar36 = *(code **)(puVar29 + 0x6134c);
        if ((int)*puVar14 < (int)puVar27) {
          *(uint **)(puVar32 + -0x34) = puVar16;
          puVar18 = puVar27;
          (*pcVar36)();
          puVar30 = *(undefined **)(puVar32 + -0x48);
          puVar25 = (uint *)puVar14[2];
          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);
        }
        if (puVar25 != puVar28) {
          puVar19 = puVar28 + (int)puVar23;
          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));
          puVar7 = puVar25 + (int)puVar23;
          puVar18 = (uint *)*puVar19;
          puVar16 = puVar7;
          if (pbVar11 != (byte *)0x0) {
            do {
              puVar19 = puVar19 + 1;
              puVar10 = puVar16 + 1;
              *puVar16 = (uint)puVar18;
              pbVar11 = pbVar11 + -1;
              puVar18 = (uint *)*puVar19;
              puVar16 = puVar10;
            } while (pbVar11 != (byte *)0x0);
            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));
          }
          *puVar7 = (uint)puVar18;
        }
        if (puVar23 != (uint *)0x0) {
          iVar4 = 0;
          do {
            puVar16 = (uint *)((int)puVar26 + iVar4);
            pbVar11 = (byte *)((int)puVar28 + iVar4);
            puVar10 = (uint *)((int)puVar25 + iVar4);
            iVar4 = iVar4 + 4;
            puVar18 = *(uint **)pbVar11;
            *puVar10 = *puVar16 ^ (uint)puVar18;
          } while ((int)puVar23 << 2 != iVar4);
        }
LAB_00036910:
        if (puVar25[(int)((int)puVar27 + -1)] == 0) {
          puVar16 = puVar25 + (int)puVar27;
          do {
            puVar27 = (uint *)((int)puVar27 + -1);
            if (puVar27 == (uint *)0x0) {
              puVar27 = (uint *)0x0;
              break;
            }
            puVar28 = puVar16 + -2;
            puVar16 = puVar16 + -1;
          } while (*puVar28 == 0);
        }
      }
      puVar14[1] = (uint)puVar27;
      goto LAB_000366e0;
    }
    puVar10 = (uint *)-(int)puVar27;
    param_3 = puVar16;
    puVar16 = puVar27;
    puVar15 = puVar28;
    puVar27 = puVar23;
    puVar28 = puVar26;
LAB_0003630c:
    puVar26 = puVar15;
    puVar23 = puVar16;
    uVar2 = (int)puVar10 * 4;
    if (uVar2 < 0x7f01) {
      iVar4 = -(uVar2 + 7 & 0xfffffff8);
      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);
      puVar34 = puVar32 + iVar4 + -0x58;
    }
    else {
      pcVar36 = *(code **)(puVar29 + 0x61080);
      *(uint **)(puVar32 + -0x38) = param_3;
      *(uint *)(puVar32 + -0x34) = uVar2;
      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      param_3 = *(uint **)(puVar32 + -0x38);
      uVar2 = *(uint *)(puVar32 + -0x34);
      puVar34 = puVar32 + -0x58;
    }
    uVar24 = *puVar26;
    *puVar16 = uVar24 - 1;
    if (uVar24 == 0) {
      if (puVar23 != (uint *)0xffffffff) {
        uVar24 = puVar26[1];
        puVar16[1] = uVar24 - 1;
        if (uVar24 == 0) {
          puVar18 = puVar26 + 2;
          iVar4 = 2;
          puVar15 = puVar16 + 2;
          do {
            if ((int)puVar10 <= iVar4) goto LAB_00036390;
            uVar24 = *puVar18;
            iVar4 = iVar4 + 1;
            puVar18 = puVar18 + 1;
            *puVar15 = uVar24 - 1;
            puVar15 = puVar15 + 1;
          } while (uVar24 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {
          puVar18 = puVar26 + iVar4;
          puVar26 = puVar26 + (int)puVar10;
          puVar15 = puVar16 + iVar4;
          do {
            uVar24 = *puVar18;
            puVar18 = puVar18 + 1;
            *puVar15 = uVar24;
            puVar15 = puVar15 + 1;
          } while (puVar26 != puVar18);
        }
      }
LAB_00036390:
      puVar15 = puVar10;
      if ((int)puVar10 <= (int)puVar27) {
        puVar15 = puVar27;
      }
      pcVar36 = *(code **)(puVar30 + -0x7a84);
      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;
LAB_00036778:
      *(uint *)(puVar32 + -0x3c) = uVar2;
      *(uint **)(puVar32 + -0x38) = param_3;
      *(uint **)(puVar32 + -0x34) = puVar16;
      (*pcVar36)(puVar14);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar25 = (uint *)puVar14[2];
      uVar2 = *(uint *)(puVar32 + -0x3c);
      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);
      puVar16 = *(uint **)(puVar32 + -0x34);
      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;
LAB_000363b8:
      puVar23 = (uint *)((int)puVar23 + (int)puVar27);
      pbVar6 = (byte *)((int)puVar28 + uVar2);
      pbVar9 = (byte *)((int)puVar23 + -1);
      pbVar22 = (byte *)((int)puVar25 + uVar2);
      uVar17 = *(undefined4 *)pbVar6;
      pbVar11 = pbVar22;
      if (pbVar9 != (byte *)0x0) {
        do {
          pbVar6 = pbVar6 + 4;
          *(undefined4 *)pbVar11 = uVar17;
          pbVar9 = pbVar9 + -1;
          uVar17 = *(undefined4 *)pbVar6;
          pbVar11 = pbVar11 + 4;
        } while (pbVar9 != (byte *)0x0);
        puVar23 = (uint *)((int)puVar23 * 4 + -4);
        pbVar22 = pbVar22 + (int)puVar23;
      }
      uVar24 = 0;
      *(undefined4 *)pbVar22 = uVar17;
      do {
        puVar10 = (uint *)((int)puVar28 + uVar24);
        puVar18 = (uint *)((int)puVar16 + uVar24);
        puVar15 = (uint *)((int)puVar25 + uVar24);
        uVar24 = uVar24 + 4;
        *puVar15 = *puVar10 ^ *puVar18;
      } while (uVar2 != uVar24);
      uVar2 = *puVar25;
      *puVar25 = uVar2 + 1;
      puVar10 = puVar27;
      if (uVar2 + 1 != 0) goto LAB_00036840;
LAB_00036438:
      uVar2 = puVar25[1];
      puVar25[1] = uVar2 + 1;
      puVar27 = puVar10;
      if (uVar2 + 1 != 0) goto LAB_00036840;
      iVar4 = 2;
      puVar16 = puVar25 + 2;
      do {
        puVar15 = puVar10;
        if ((int)puVar10 <= iVar4) {
          puVar18 = (uint *)0x1;
          unaff_s0 = (uint *)((int)puVar10 + 1);
          goto LAB_00036844;
        }
        uVar2 = *puVar16;
        iVar4 = iVar4 + 1;
        *puVar16 = uVar2 + 1;
        puVar16 = puVar16 + 1;
      } while (uVar2 + 1 == 0);
      puVar18 = (uint *)0x0;
      unaff_s0 = puVar10;
    }
    else {
      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;
      puVar26 = puVar26 + 1;
      iVar4 = 1;
      puVar15 = puVar16;
      do {
        puVar15 = puVar15 + 1;
        uVar24 = *puVar26;
        iVar4 = iVar4 + 1;
        puVar26 = puVar26 + 1;
        *puVar15 = uVar24;
      } while (iVar4 < (int)puVar10);
      puVar15 = puVar10;
      if ((int)puVar10 <= (int)puVar27) {
        puVar15 = puVar27;
      }
      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {
        pcVar36 = *(code **)(puVar30 + -0x7a84);
        goto LAB_00036778;
      }
LAB_000363b0:
      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;
LAB_000367b0:
      if (puVar27 == puVar10) {
        iVar4 = (int)puVar10 << 2;
LAB_00036804:
        iVar21 = 0;
        do {
          puVar15 = (uint *)((int)puVar28 + iVar21);
          puVar19 = (uint *)((int)puVar16 + iVar21);
          puVar18 = (uint *)((int)puVar25 + iVar21);
          iVar21 = iVar21 + 4;
          *puVar18 = *puVar15 ^ *puVar19;
        } while (iVar4 != iVar21);
      }
      else {
        iVar4 = (int)puVar27 * 4;
        puVar18 = puVar16 + (int)puVar27;
        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));
        puVar19 = puVar25 + (int)puVar27;
        uVar2 = *puVar18;
        puVar15 = puVar19;
        if (pbVar11 != (byte *)0x0) {
          do {
            puVar18 = puVar18 + 1;
            *puVar15 = uVar2;
            pbVar11 = pbVar11 + -1;
            uVar2 = *puVar18;
            puVar15 = puVar15 + 1;
          } while (pbVar11 != (byte *)0x0);
          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));
        }
        *puVar19 = uVar2;
        if (puVar27 != (uint *)0x0) goto LAB_00036804;
      }
      uVar2 = *puVar25;
      *puVar25 = uVar2 + 1;
      if (uVar2 + 1 == 0) {
        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;
        unaff_s0 = (uint *)((int)puVar10 + 1);
        puVar18 = (uint *)0x1;
        puVar15 = puVar10;
        goto LAB_00036844;
      }
LAB_00036840:
      puVar18 = (uint *)0x0;
      unaff_s0 = puVar10;
      puVar15 = puVar27;
    }
LAB_00036844:
    puVar25[(int)puVar10] = (uint)puVar18;
    uVar2 = (puVar25 + (int)unaff_s0)[-1];
    puVar16 = puVar25 + (int)unaff_s0;
    while (uVar2 == 0) {
      unaff_s0 = (uint *)((int)unaff_s0 + -1);
      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;
      uVar2 = puVar16[-2];
      puVar16 = puVar16 + -1;
    }
    unaff_s0 = (uint *)-(int)unaff_s0;
  }
LAB_000366d4:
  puVar10 = *(uint **)(puVar32 + -0x30);
  puVar14[1] = (uint)unaff_s0;
  puVar27 = puVar23;
  puVar35 = puVar34;
  if (puVar10 != (uint *)0x0) {
    (**(code **)(puVar30 + -0x7a2c))();
    puVar30 = *(undefined **)(puVar32 + -0x48);
  }
LAB_000366e0:
  if (*(int *)(puVar32 + -0x2c) == *piVar5) {
    return;
  }
  pcVar36 = *(code **)(puVar30 + -0x7b70);
  uVar17 = 0x36bd8;
  (*pcVar36)();
  pcVar31 = pcVar36 + 0x68460;
  *(uint **)(puVar35 + -0x10) = puVar25;
  *(code **)(puVar35 + -0x20) = pcVar31;
  *(uint **)(puVar35 + -0x14) = puVar27;
  *(uint **)(puVar35 + -0x18) = unaff_s0;
  *(undefined4 *)(puVar35 + -4) = uVar17;
  *(uint **)(puVar35 + -8) = puVar15;
  *(uint **)(puVar35 + -0xc) = puVar26;
  uVar24 = puVar18[1];
  uVar2 = uVar24;
  if ((int)uVar24 < 0) {
    uVar2 = -uVar24;
  }
  if (puVar18 != puVar10) {
    uVar3 = puVar18[4];
    if ((int)*puVar10 < (int)uVar2) {
      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);
      pcVar31 = *(code **)(puVar35 + -0x20);
    }
    else {
      puVar8 = (undefined4 *)puVar10[2];
    }
    if (uVar24 != 0) {
      puVar13 = (undefined4 *)puVar18[2];
      iVar4 = uVar2 - 1;
      uVar17 = *puVar13;
      puVar20 = puVar8;
      if (iVar4 != 0) {
        do {
          puVar13 = puVar13 + 1;
          *puVar20 = uVar17;
          iVar4 = iVar4 + -1;
          uVar17 = *puVar13;
          puVar20 = puVar20 + 1;
        } while (iVar4 != 0);
        puVar8 = puVar8 + (uVar2 - 1);
      }
      *puVar8 = uVar17;
    }
    if ((int)puVar10[3] < (int)uVar3) {
      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);
    }
    else {
      puVar8 = (undefined4 *)puVar10[5];
    }
    puVar10[4] = uVar3;
    if (uVar3 != 0) {
      puVar13 = (undefined4 *)puVar18[5];
      iVar4 = uVar3 - 1;
      uVar17 = *puVar13;
      puVar20 = puVar8;
      if (iVar4 != 0) {
        do {
          puVar13 = puVar13 + 1;
          *puVar20 = uVar17;
          iVar4 = iVar4 + -1;
          uVar17 = *puVar13;
          puVar20 = puVar20 + 1;
        } while (iVar4 != 0);
        puVar8 = puVar8 + (uVar3 - 1);
      }
      *puVar8 = uVar17;
    }
  }
  puVar10[1] = uVar2;
  return;
}


lui gp,0x7
addiu gp,gp,-0x6e70
addu gp,gp,t9
addiu sp,sp,-0x60
lw v0,-0x7b00(gp)
or v1,v0,zero
sw s8,0x58(sp)
or s8,sp,zero
sw s4,0x48(sp)
sw ra,0x5c(sp)
or s4,a1,zero
sw v0,0x20(s8)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
sw gp,0x10(sp)
sw a0,0x28(s8)
lw v1,0x0(v1)
lw v0,0x4(a2)
sw v1,0x34(s8)
bltz v0,0x000361a0
_or s1,v0,zero
beq v0,zero,0x000361ac
_sw s1,0x2c(s8)
sll s2,s1,0x2
lw v1,0x8(a2)
addiu s2,s2,-0x4
sw v1,0x24(s8)
addu a1,v1,s2
lw a0,0x0(a1)
addiu v0,a0,-0x1
and v0,v0,a0
bne v0,zero,0x00036124
_lui v0,0x1
sltu v0,v1,a1
beq v0,zero,0x00035f84
_lui v0,0x1
lw v0,0x0(v1)
bne v0,zero,0x00036120
_or v0,v1,zero
b 0x00035f74
_addiu v0,v0,0x4
lw v1,0x0(v0)
bne v1,zero,0x00036120
_addiu v0,v0,0x4
sltu v1,v0,a1
bne v1,zero,0x00035f68
_nop
lui v0,0x1
sltu v0,a0,v0
bne v0,zero,0x00036130
_li a1,0x1
lui v1,0x100
li a3,0x8
li v0,0x10
sltu v1,a0,v1
movz v0,a3,v1
li t0,0x11
li a3,0x19
sll s0,s1,0x5
movn a3,t0,v1
or v1,a3,zero
srlv a0,a0,v1
lw v1,-0x7eb4(gp)
addu a0,v1,a0
lbu v1,0x0(a0)
subu v0,v0,v1
subu s0,s0,v0
subu s0,s0,a1
beq s0,zero,0x00036178
_lw v0,0x28(s8)
addiu s6,s2,0x4
beq a2,v0,0x000361b8
_sw zero,0x30(s8)
lw v0,0x28(s8)
lw v0,0x0(v0)
slt v0,v0,s1
bne v0,zero,0x00036228
_lw t9,-0x7a84(gp)
lw v0,0x28(s8)
lw s3,0x8(v0)
lw v1,0x24(s8)
addu v0,s3,s2
addu s7,s3,s6
li s5,0x50
sw v0,0x1c(s8)
addu s2,v1,s6
sw zero,0x0(v0)
li s6,-0x1
lw v0,0x10(s4)
or a0,s4,zero
or a2,s0,zero
lw t9,0x4(v0)
jalr t9
_or a1,s3,zero
or a0,s2,zero
lw gp,0x10(s8)
or v1,s7,zero
b 0x00036060
_or v0,s1,zero
lw a1,-0x4(v1)
lw a2,0x0(a0)
bne a1,a2,0x00036180
_addiu v1,v1,-0x4
addiu v0,v0,-0x1
bne v0,s6,0x00036050
_addiu a0,a0,-0x4
addiu s5,s5,-0x1
bne s5,zero,0x00036024
_lw t9,-0x7b2c(gp)
or a3,s1,zero
lw a2,0x24(s8)
or a1,s3,zero
jalr t9
_or a0,s3,zero
lw gp,0x10(s8)
lw v0,0x1c(s8)
lw v0,0x0(v0)
beq v0,zero,0x000360b8
_lw v0,0x28(s8)
b 0x000360d0
_lw v1,0x2c(s8)
addiu s7,s7,-0x4
lw v0,-0x4(s7)
bne v0,zero,0x000360cc
_lw v0,0x28(s8)
lw v0,0x2c(s8)
addiu v0,v0,-0x1
bne v0,zero,0x000360a8
_sw v0,0x2c(s8)
lw v0,0x28(s8)
lw v1,0x2c(s8)
lw a0,0x30(s8)
bne a0,zero,0x0003623c
_sw v1,0x4(v0)
lw v0,0x20(s8)
lw v1,0x34(s8)
lw v0,0x0(v0)
bne v1,v0,0x00036264
_lw ra,0x5c(s8)
or sp,s8,zero
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
lui v0,0x1
sltu v0,a0,v0
beq v0,zero,0x00035f90
_or a1,zero,zero
li a3,0x18
li v0,0x20
sltiu v1,a0,0x100
movz v0,a3,v1
li t0,0x1
li a3,0x9
sll s0,s1,0x5
movn a3,t0,v1
or v1,a3,zero
srlv a0,a0,v1
lw v1,-0x7eb4(gp)
addu a0,v1,a0
lbu v1,0x0(a0)
subu v0,v0,v1
subu s0,s0,v0
subu s0,s0,a1
bne s0,zero,0x00035fdc
_lw v0,0x28(s8)
b 0x000360dc
_sw zero,0x4(v0)
sltu a1,a2,a1
beq a1,zero,0x00036094
_lw v0,0x1c(s8)
addiu s5,s5,-0x1
bne s5,zero,0x00036024
_lw t9,-0x7b2c(gp)
b 0x0003607c
_or a3,s1,zero
subu s1,zero,v0
bne v0,zero,0x00035f20
_sw s1,0x2c(s8)
lw t9,-0x7a64(gp)
jalr t9
_nop
sltiu v0,s6,0x7f01
beq v0,zero,0x00036250
_lw t9,-0x7d50(gp)
addiu v0,s2,0xb
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
addiu v0,sp,0x10
lw v1,0x24(s8)
addiu a0,s1,-0x1
beq a0,zero,0x00036218
_lw a2,0x0(v1)
addiu s5,v1,0x4
or a1,v0,zero
addiu a1,a1,0x4
sw a2,-0x4(a1)
addiu s5,s5,0x4
addiu a0,a0,-0x1
bne a0,zero,0x000361f0
_lw a2,-0x4(s5)
addu a0,v0,s2
sw v0,0x24(s8)
b 0x00035fe8
_sw a2,0x0(a0)
or a0,v0,zero
sw v0,0x24(s8)
b 0x00035fe8
_sw a2,0x0(a0)
or a1,s1,zero
jalr t9
_lw a0,0x28(s8)
b 0x00036004
_or s3,v0,zero
lw t9,-0x7a2c(gp)
jalr t9
_nop
b 0x000360dc
_lw gp,0x10(s8)
addiu a0,s8,0x30
jalr t9
_or a1,s6,zero
b 0x000361d8
_lw gp,0x10(s8)
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}\n\n" (function_definition "void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" primitive_type (function_declarator "__gmpz_urandomm(uint *param_1,int param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,int param_2,uint *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined4 *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "uint *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "int unaff_s7;" primitive_type identifier ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "code *pcVar31;" type_identifier (pointer_declarator "*pcVar31" * 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 "undefined1 *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "undefined1 auStack_60 [16];" type_identifier (array_declarator "auStack_60 [16]" identifier [ number_literal ]) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar29 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar29 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" identifier = identifier) ;) (expression_statement "puVar33 = auStack_60;" (assignment_expression "puVar33 = auStack_60" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }" { (expression_statement "local_34 = -uVar2;" (assignment_expression "local_34 = -uVar2" identifier = (unary_expression "-uVar2" - identifier)) ;) (if_statement "if (uVar2 == 0) goto LAB_000361ac;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000361ac;" goto statement_identifier ;)) (labeled_statement "LAB_00035f20:\n    uVar24 = local_34 * 4;" statement_identifier : (expression_statement "uVar24 = local_34 * 4;" (assignment_expression "uVar24 = local_34 * 4" identifier = (binary_expression "local_34 * 4" identifier * number_literal)) ;)) (expression_statement "local_3c = (uint *)param_3[2];" (assignment_expression "local_3c = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s2 = (undefined4 *)(uVar24 - 4);" (assignment_expression "unaff_s2 = (undefined4 *)(uVar24 - 4)" identifier = (cast_expression "(undefined4 *)(uVar24 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar24 - 4)" ( (binary_expression "uVar24 - 4" identifier - number_literal) )))) ;) (expression_statement "puVar16 = local_3c + (local_34 - 1);" (assignment_expression "puVar16 = local_3c + (local_34 - 1)" identifier = (binary_expression "local_3c + (local_34 - 1)" identifier + (parenthesized_expression "(local_34 - 1)" ( (binary_expression "local_34 - 1" identifier - number_literal) )))) ;) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (if_statement "if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" if (parenthesized_expression "((uVar2 - 1 & uVar2) == 0)" ( (binary_expression "(uVar2 - 1 & uVar2) == 0" (parenthesized_expression "(uVar2 - 1 & uVar2)" ( (binary_expression "uVar2 - 1 & uVar2" (binary_expression "uVar2 - 1" identifier - number_literal) & identifier) )) == number_literal) )) (compound_statement "{\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" { (if_statement "if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" if (parenthesized_expression "(local_3c < puVar16)" ( (binary_expression "local_3c < puVar16" identifier < identifier) )) (compound_statement "{\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" { (expression_statement "uVar3 = *local_3c;" (assignment_expression "uVar3 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = local_3c;" (assignment_expression "puVar14 = local_3c" identifier = identifier) ;) (while_statement "while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" { (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (if_statement "if (puVar16 <= puVar14) goto LAB_00035f84;" if (parenthesized_expression "(puVar16 <= puVar14)" ( (binary_expression "puVar16 <= puVar14" identifier <= identifier) )) (goto_statement "goto LAB_00035f84;" goto statement_identifier ;)) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) })) (goto_statement "goto LAB_00036124;" goto statement_identifier ;) })) (labeled_statement "LAB_00035f84:\n      puVar16 = (uint *)0x1;" statement_identifier : (expression_statement "puVar16 = (uint *)0x1;" (assignment_expression "puVar16 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (0xffff < uVar2) goto LAB_00035f90;" if (parenthesized_expression "(0xffff < uVar2)" ( (binary_expression "0xffff < uVar2" number_literal < identifier) )) (goto_statement "goto LAB_00035f90;" goto statement_identifier ;)) (labeled_statement "LAB_00036130:\n      iVar4 = 0x20;" statement_identifier : (expression_statement "iVar4 = 0x20;" (assignment_expression "iVar4 = 0x20" identifier = number_literal) ;)) (if_statement "if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }" if (parenthesized_expression "(0xff < uVar2)" ( (binary_expression "0xff < uVar2" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 0x18;\n      }" { (expression_statement "iVar4 = 0x18;" (assignment_expression "iVar4 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar21 = 9;" (assignment_expression "iVar21 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar2) {\n        iVar21 = 1;\n      }" if (parenthesized_expression "(0xff >= uVar2)" ( (binary_expression "0xff >= uVar2" number_literal >= identifier) )) (compound_statement "{\n        iVar21 = 1;\n      }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) })) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" identifier = (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" identifier + (parenthesized_expression "(uVar2 >> iVar21)" ( (binary_expression "uVar2 >> iVar21" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" identifier = (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" ( (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" ( (binary_expression "iVar4 - (uint)*(byte *)puVar14" identifier - (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" else (compound_statement "{\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" { (labeled_statement "LAB_00036124:\n      puVar16 = (uint *)0x0;" statement_identifier : (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (uVar2 < 0x10000) goto LAB_00036130;" if (parenthesized_expression "(uVar2 < 0x10000)" ( (binary_expression "uVar2 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_00036130;" goto statement_identifier ;)) (labeled_statement "LAB_00035f90:\n      iVar4 = 0x10;" statement_identifier : (expression_statement "iVar4 = 0x10;" (assignment_expression "iVar4 = 0x10" identifier = number_literal) ;)) (if_statement "if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }" if (parenthesized_expression "(0xffffff < uVar2)" ( (binary_expression "0xffffff < uVar2" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 8;\n      }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) })) (expression_statement "iVar21 = 0x19;" (assignment_expression "iVar21 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }" if (parenthesized_expression "(0xffffff >= uVar2)" ( (binary_expression "0xffffff >= uVar2" number_literal >= identifier) )) (compound_statement "{\n        iVar21 = 0x11;\n      }" { (expression_statement "iVar21 = 0x11;" (assignment_expression "iVar21 = 0x11" identifier = number_literal) ;) })) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" identifier = (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" identifier + (parenthesized_expression "(uVar2 >> iVar21)" ( (binary_expression "uVar2 >> iVar21" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" identifier = (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" ( (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" ( (binary_expression "iVar4 - (uint)*(byte *)puVar14" identifier - (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (if_statement "if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" if (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" { (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s6 = uVar24;" (assignment_expression "unaff_s6 = uVar24" identifier = identifier) ;) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" identifier = identifier) ;) (if_statement "if (param_3 == param_1) goto LAB_000361b8;" if (parenthesized_expression "(param_3 == param_1)" ( (binary_expression "param_3 == param_1" identifier == identifier) )) (goto_statement "goto LAB_000361b8;" goto statement_identifier ;)) (goto_statement "goto LAB_00035fe8;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "local_34 = uVar2;" (assignment_expression "local_34 = uVar2" identifier = identifier) ;) (if_statement "if (uVar2 != 0) goto LAB_00035f20;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00035f20;" goto statement_identifier ;)) (labeled_statement "LAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" statement_identifier : (if_statement "if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" if (parenthesized_expression "(unaff_s6 < 0x7f01)" ( (binary_expression "unaff_s6 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }" { (expression_statement "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);" (assignment_expression "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8)" identifier = (unary_expression "-((int)unaff_s2 + 0xbU & 0xfffffff8)" - (parenthesized_expression "((int)unaff_s2 + 0xbU & 0xfffffff8)" ( (binary_expression "(int)unaff_s2 + 0xbU & 0xfffffff8" (binary_expression "(int)unaff_s2 + 0xbU" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar33 = auStack_60 + iVar4;" (assignment_expression "puVar33 = auStack_60 + iVar4" identifier = (binary_expression "auStack_60 + iVar4" identifier + identifier)) ;) (expression_statement "puVar16 = (uint *)(&stack0xffffffb0 + iVar4);" (assignment_expression "puVar16 = (uint *)(&stack0xffffffb0 + iVar4)" identifier = (cast_expression "(uint *)(&stack0xffffffb0 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb0 + iVar4)" ( (binary_expression "&stack0xffffffb0 + iVar4" (pointer_expression "&stack0xffffffb0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" else (compound_statement "{\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" { (expression_statement "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);" (assignment_expression "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,unaff_s6)" ( (pointer_expression "&local_30" & identifier) , identifier ))))) ;) })))) (expression_statement "iVar4 = local_34 - 1;" (assignment_expression "iVar4 = local_34 - 1" identifier = (binary_expression "local_34 - 1" identifier - number_literal)) ;) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = puVar16;" (assignment_expression "puVar14 = puVar16" identifier = identifier) ;) (expression_statement "puVar32 = puVar33;" (assignment_expression "puVar32 = puVar33" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }" { (expression_statement "*puVar16 = uVar2;" (assignment_expression "*puVar16 = uVar2" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" identifier = identifier) ;) }) (else_clause "else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" else (compound_statement "{\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" { (do_statement "do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      }" { (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = uVar2;" (assignment_expression "*puVar14 = uVar2" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;" (assignment_expression "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2" (pointer_expression "*(uint *)((int)puVar16 + (int)unaff_s2)" * (cast_expression "(uint *)((int)puVar16 + (int)unaff_s2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (int)unaff_s2)" ( (binary_expression "(int)puVar16 + (int)unaff_s2" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" identifier = identifier) ;) }))) (labeled_statement "LAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" statement_identifier : (if_statement "if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" if (parenthesized_expression "((int)*param_1 < (int)local_34)" ( (binary_expression "(int)*param_1 < (int)local_34" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }" { (expression_statement "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);" (assignment_expression "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,local_34)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      unaff_s3 = (uint *)param_1[2];\n    }" else (compound_statement "{\n      unaff_s3 = (uint *)param_1[2];\n    }" { (expression_statement "unaff_s3 = (uint *)param_1[2];" (assignment_expression "unaff_s3 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) })))) (expression_statement "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);" (assignment_expression "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2)" identifier = (cast_expression "(int *)((int)unaff_s3 + (int)unaff_s2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)unaff_s2)" ( (binary_expression "(int)unaff_s3 + (int)unaff_s2" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s7 = (int)unaff_s3 + unaff_s6;" (assignment_expression "unaff_s7 = (int)unaff_s3 + unaff_s6" identifier = (binary_expression "(int)unaff_s3 + unaff_s6" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);" (assignment_expression "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6)" identifier = (cast_expression "(undefined4 *)((int)local_3c + unaff_s6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + unaff_s6)" ( (binary_expression "(int)local_3c + unaff_s6" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "unaff_s6 = 0xffffffff;" (assignment_expression "unaff_s6 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar4 = 0x50;" (assignment_expression "iVar4 = 0x50" identifier = number_literal) ;) (do_statement "do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);" do (compound_statement "{\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    }" { (expression_statement "unaff_s5 = iVar4;" (assignment_expression "unaff_s5 = iVar4" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);" (call_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0)" (parenthesized_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(param_2 + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(param_2 + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(param_2 + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + 4)" ( (binary_expression "*(int *)(param_2 + 0x10) + 4" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_2,unaff_s3,unaff_s0)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" identifier = identifier) ;) (expression_statement "iVar4 = unaff_s7;" (assignment_expression "iVar4 = unaff_s7" identifier = identifier) ;) (expression_statement "puVar8 = unaff_s2;" (assignment_expression "puVar8 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);" do (compound_statement "{\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      }" { (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) goto joined_r0x00036070;" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto joined_r0x00036070;" goto statement_identifier ;)) (expression_statement "puVar20 = (undefined4 *)(iVar4 + -4);" (assignment_expression "puVar20 = (undefined4 *)(iVar4 + -4)" identifier = (cast_expression "(undefined4 *)(iVar4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4)" ( (binary_expression "iVar4 + -4" identifier + number_literal) )))) ;) (expression_statement "param_3 = (uint *)*puVar8;" (assignment_expression "param_3 = (uint *)*puVar8" identifier = (cast_expression "(uint *)*puVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "((uint *)*puVar20 == param_3)" ( (binary_expression "(uint *)*puVar20 == param_3" (cast_expression "(uint *)*puVar20" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier)) == identifier) )) ;) (expression_statement "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);" (assignment_expression "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20)" identifier = (cast_expression "(uint *)(uint)(param_3 < (uint *)*puVar20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(param_3 < (uint *)*puVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 < (uint *)*puVar20)" ( (binary_expression "param_3 < (uint *)*puVar20" identifier < (cast_expression "(uint *)*puVar20" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier))) ))))) ;) (if_statement "if (puVar16 == (uint *)0x0) goto LAB_00036094;" if (parenthesized_expression "(puVar16 == (uint *)0x0)" ( (binary_expression "puVar16 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036094;" goto statement_identifier ;)) (labeled_statement "joined_r0x00036070:\n      iVar4 = unaff_s5 + -1;" statement_identifier : (expression_statement "iVar4 = unaff_s5 + -1;" (assignment_expression "iVar4 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(unaff_s5 + -1 != 0)" ( (binary_expression "unaff_s5 + -1 != 0" (binary_expression "unaff_s5 + -1" identifier + number_literal) != number_literal) )) ;) (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) (expression_statement "puVar16 = unaff_s3;" (assignment_expression "puVar16 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);" (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,unaff_s3,local_3c,local_34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "param_3 = local_3c;" (assignment_expression "param_3 = local_3c" identifier = identifier) ;) (labeled_statement "LAB_00036094:\n    iVar4 = *piVar5;" statement_identifier : (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" identifier = identifier) ;) (while_statement "while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" while (parenthesized_expression "((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)))" ( (parenthesized_expression "(iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))" ( (binary_expression "iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)" (binary_expression "iVar4 == 0" identifier == number_literal) && (parenthesized_expression "(uVar2 = uVar2 - 1, uVar2 != 0)" ( (comma_expression "uVar2 = uVar2 - 1, uVar2 != 0" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) , (binary_expression "uVar2 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" { (expression_statement "iVar4 = *(int *)(unaff_s7 + -8);" (assignment_expression "iVar4 = *(int *)(unaff_s7 + -8)" identifier = (pointer_expression "*(int *)(unaff_s7 + -8)" * (cast_expression "(int *)(unaff_s7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7 + -8)" ( (binary_expression "unaff_s7 + -8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = unaff_s7 + -4;" (assignment_expression "unaff_s7 = unaff_s7 + -4" identifier = (binary_expression "unaff_s7 + -4" identifier + number_literal)) ;) })) (expression_statement "param_1[1] = uVar2;" (assignment_expression "param_1[1] = uVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar14 = local_30;" (assignment_expression "puVar14 = local_30" identifier = identifier) ;) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (uint *)0x0)" ( (binary_expression "local_30 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar29) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar29)" ( (binary_expression "local_2c == *(int *)puVar29" identifier == (pointer_expression "*(int *)puVar29" * (cast_expression "(int *)puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar36 = __gmpz_xor;" (assignment_expression "pcVar36 = __gmpz_xor" identifier = identifier) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar29 + 0x68dd0;" (assignment_expression "puVar30 = puVar29 + 0x68dd0" identifier = (binary_expression "puVar29 + 0x68dd0" identifier + number_literal)) ;) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) (expression_statement "puVar35 = puVar32 + -0x58;" (assignment_expression "puVar35 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar32 + -0x10) = unaff_s6;" (assignment_expression "*(uint *)(puVar32 + -0x10) = unaff_s6" (pointer_expression "*(uint *)(puVar32 + -0x10)" * (cast_expression "(uint *)(puVar32 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x10)" ( (binary_expression "puVar32 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar32 + -0x24) = local_34;" (assignment_expression "*(uint *)(puVar32 + -0x24) = local_34" (pointer_expression "*(uint *)(puVar32 + -0x24)" * (cast_expression "(uint *)(puVar32 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x24)" ( (binary_expression "puVar32 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(puVar29 + 0x612d0);" (assignment_expression "piVar5 = *(int **)(puVar29 + 0x612d0)" identifier = (pointer_expression "*(int **)(puVar29 + 0x612d0)" * (cast_expression "(int **)(puVar29 + 0x612d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x612d0)" ( (binary_expression "puVar29 + 0x612d0" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = (uint *)puVar16[1];" (assignment_expression "puVar23 = (uint *)puVar16[1]" identifier = (cast_expression "(uint *)puVar16[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar32 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar32 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar32 + -8)" * (cast_expression "(undefined1 **)(puVar32 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -8)" ( (binary_expression "puVar32 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0xc) = unaff_s7;" (assignment_expression "*(int *)(puVar32 + -0xc) = unaff_s7" (pointer_expression "*(int *)(puVar32 + -0xc)" * (cast_expression "(int *)(puVar32 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xc)" ( (binary_expression "puVar32 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar32 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar32 + -0x14)" * (cast_expression "(int *)(puVar32 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x14)" ( (binary_expression "puVar32 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x18) = param_2;" (assignment_expression "*(int *)(puVar32 + -0x18) = param_2" (pointer_expression "*(int *)(puVar32 + -0x18)" * (cast_expression "(int *)(puVar32 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x18)" ( (binary_expression "puVar32 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)(puVar32 + -0x1c)" * (cast_expression "(uint **)(puVar32 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x1c)" ( (binary_expression "puVar32 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0x20) = unaff_s2;" (assignment_expression "*(undefined4 **)(puVar32 + -0x20) = unaff_s2" (pointer_expression "*(undefined4 **)(puVar32 + -0x20)" * (cast_expression "(undefined4 **)(puVar32 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x20)" ( (binary_expression "puVar32 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar32 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar36" (pointer_expression "*(code **)(puVar32 + -4)" * (cast_expression "(code **)(puVar32 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -4)" ( (binary_expression "puVar32 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)(puVar32 + -0x28) = unaff_s0" (pointer_expression "*(uint **)(puVar32 + -0x28)" * (cast_expression "(uint **)(puVar32 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar32 + -0x48) = puVar30;" (assignment_expression "*(undefined **)(puVar32 + -0x48) = puVar30" (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar32 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar32 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar32 + -0x30)" * (cast_expression "(undefined4 *)(puVar32 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar27 = (uint *)param_3[1];" (assignment_expression "puVar27 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = (uint *)puVar16[2];" (assignment_expression "puVar26 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar28 = (uint *)param_3[2];" (assignment_expression "puVar28 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar32 + -0x2c) = *piVar5;" (assignment_expression "*(int *)(puVar32 + -0x2c) = *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" * (cast_expression "(int *)(puVar32 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puVar10 = (uint *)-(int)puVar23;" (assignment_expression "puVar10 = (uint *)-(int)puVar23" identifier = (cast_expression "(uint *)-(int)puVar23" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar23" - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" if (parenthesized_expression "((int)puVar23 < 0)" ( (binary_expression "(int)puVar23 < 0" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }" { (expression_statement "puVar16 = puVar23;" (assignment_expression "puVar16 = puVar23" identifier = identifier) ;) (expression_statement "puVar15 = puVar26;" (assignment_expression "puVar15 = puVar26" identifier = identifier) ;) (if_statement "if (-1 < (int)puVar27) goto LAB_0003630c;" if (parenthesized_expression "(-1 < (int)puVar27)" ( (binary_expression "-1 < (int)puVar27" number_literal < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0003630c;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)-(int)puVar27;" (assignment_expression "puVar25 = (uint *)-(int)puVar27" identifier = (cast_expression "(uint *)-(int)puVar27" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar27" - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "uVar2 = ((int)puVar10 - (int)puVar27) * 4;" (assignment_expression "uVar2 = ((int)puVar10 - (int)puVar27) * 4" identifier = (binary_expression "((int)puVar10 - (int)puVar27) * 4" (parenthesized_expression "((int)puVar10 - (int)puVar27)" ( (binary_expression "(int)puVar10 - (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }" { (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar2 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" ( (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" identifier = (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" identifier = (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + iVar4 + -0x48)" ( (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" identifier = identifier) ;) }) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" else (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar29 + 0x61080)" * (cast_expression "(code **)(puVar29 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x61080)" ( (binary_expression "puVar29 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar32 + -0x38) = puVar25;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar25" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar10;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar10" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar36)(puVar32 + -0x30)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar18 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar15 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "puVar19 = puVar16 + (int)puVar15;" (assignment_expression "puVar19 = puVar16 + (int)puVar15" identifier = (binary_expression "puVar16 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar16 = uVar2 - 1;" (assignment_expression "*puVar16 = uVar2 - 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }" { (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" { (expression_statement "uVar2 = puVar26[1];" (assignment_expression "uVar2 = puVar26[1]" identifier = (subscript_expression "puVar26[1]" identifier [ number_literal ])) ;) (expression_statement "puVar16[1] = uVar2 - 1;" (assignment_expression "puVar16[1] = uVar2 - 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" { (expression_statement "puVar12 = puVar26 + 2;" (assignment_expression "puVar12 = puVar26 + 2" identifier = (binary_expression "puVar26 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar7 = puVar16 + 2;" (assignment_expression "puVar7 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" do (compound_statement "{\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" { (if_statement "if ((int)puVar15 <= iVar4) goto LAB_000365a4;" if (parenthesized_expression "((int)puVar15 <= iVar4)" ( (binary_expression "(int)puVar15 <= iVar4" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" 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 ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" if (parenthesized_expression "((puVar16 != puVar26) && (iVar4 < (int)puVar15))" ( (binary_expression "(puVar16 != puVar26) && (iVar4 < (int)puVar15)" (parenthesized_expression "(puVar16 != puVar26)" ( (binary_expression "puVar16 != puVar26" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar15)" ( (binary_expression "iVar4 < (int)puVar15" identifier < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" { (expression_statement "puVar12 = puVar26 + iVar4;" (assignment_expression "puVar12 = puVar26 + iVar4" identifier = (binary_expression "puVar26 + iVar4" identifier + identifier)) ;) (expression_statement "puVar26 = puVar26 + (int)puVar15;" (assignment_expression "puVar26 = puVar26 + (int)puVar15" identifier = (binary_expression "puVar26 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = puVar16 + iVar4;" (assignment_expression "puVar7 = puVar16 + iVar4" identifier = (binary_expression "puVar16 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);" do (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != puVar26)" ( (binary_expression "puVar12 != puVar26" identifier != identifier) )) ;) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) (goto_statement "goto LAB_000365a8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000365a4:\n      uVar2 = *puVar28;" statement_identifier : (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;)) }) (else_clause "else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" else (compound_statement "{\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" { (if_statement "if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;" if (parenthesized_expression "((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff))" ( (binary_expression "(puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar16 == puVar26)" ( (binary_expression "puVar16 == puVar26" identifier == identifier) )) || (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" ( (binary_expression "puVar23 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" identifier = identifier) ;) (do_statement "do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);" do (compound_statement "{\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      }" { (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar15)" ( (binary_expression "iVar4 < (int)puVar15" identifier < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) }))) (labeled_statement "LAB_000365a8:\n    *puVar19 = uVar2 - 1;" statement_identifier : (expression_statement "*puVar19 = uVar2 - 1;" (assignment_expression "*puVar19 = uVar2 - 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;)) (if_statement "if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }" { (if_statement "if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" if (parenthesized_expression "(puVar27 != (uint *)0xffffffff)" ( (binary_expression "puVar27 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" { (expression_statement "uVar2 = puVar28[1];" (assignment_expression "uVar2 = puVar28[1]" identifier = (subscript_expression "puVar28[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar2 - 1;" (assignment_expression "puVar19[1] = uVar2 - 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" { (expression_statement "puVar12 = puVar28 + 2;" (assignment_expression "puVar12 = puVar28 + 2" identifier = (binary_expression "puVar28 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar7 = puVar19 + 2;" (assignment_expression "puVar7 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" do (compound_statement "{\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "bVar1 = (int)puVar18 <= iVar4;" (assignment_expression "bVar1 = (int)puVar18 <= iVar4" identifier = (binary_expression "(int)puVar18 <= iVar4" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00036608;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00036608;" goto statement_identifier ;)) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" 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 ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" if (parenthesized_expression "((puVar28 != puVar19) && (iVar4 < (int)puVar18))" ( (binary_expression "(puVar28 != puVar19) && (iVar4 < (int)puVar18)" (parenthesized_expression "(puVar28 != puVar19)" ( (binary_expression "puVar28 != puVar19" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar18)" ( (binary_expression "iVar4 < (int)puVar18" identifier < (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" { (expression_statement "puVar12 = puVar28 + iVar4;" (assignment_expression "puVar12 = puVar28 + iVar4" identifier = (binary_expression "puVar28 + iVar4" identifier + identifier)) ;) (expression_statement "puVar7 = puVar19 + iVar4;" (assignment_expression "puVar7 = puVar19 + iVar4" identifier = (binary_expression "puVar19 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);" do (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar28 + (int)puVar18 != puVar12)" ( (binary_expression "puVar28 + (int)puVar18 != puVar12" (binary_expression "puVar28 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) }) (else_clause "else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" else (if_statement "if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" if (parenthesized_expression "((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff))" ( (binary_expression "(puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" (parenthesized_expression "(puVar28 != puVar19)" ( (binary_expression "puVar28 != puVar19" identifier != identifier) )) && (parenthesized_expression "(iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" ( (comma_expression "iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "iVar4 = 1" identifier = number_literal) , (comma_expression "puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "puVar7 = puVar19" identifier = identifier) , (binary_expression "puVar27 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" { (do_statement "do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);" do (compound_statement "{\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[1] = *puVar28;" (assignment_expression "puVar7[1] = *puVar28" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar18)" ( (binary_expression "iVar4 < (int)puVar18" identifier < (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })))) (labeled_statement "LAB_00036608:\n    puVar28 = puVar19;" statement_identifier : (expression_statement "puVar28 = puVar19;" (assignment_expression "puVar28 = puVar19" identifier = identifier) ;)) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" if (parenthesized_expression "((int)puVar27 <= (int)puVar23)" ( (binary_expression "(int)puVar27 <= (int)puVar23" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" { (expression_statement "puVar28 = puVar16;" (assignment_expression "puVar28 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = puVar19;" (assignment_expression "puVar16 = puVar19" identifier = identifier) ;) (expression_statement "unaff_s0 = puVar18;" (assignment_expression "unaff_s0 = puVar18" identifier = identifier) ;) (expression_statement "puVar25 = puVar15;" (assignment_expression "puVar25 = puVar15" identifier = identifier) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) })) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }" if (parenthesized_expression "((int)*puVar14 < (int)unaff_s0)" ( (binary_expression "(int)*puVar14 < (int)unaff_s0" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }" { (expression_statement "*(uint **)(puVar32 + -0x38) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar28;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar28" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (*pcVar36)(puVar14,unaff_s0);" (assignment_expression "uVar2 = (*pcVar36)(puVar14,unaff_s0)" identifier = (call_expression "(*pcVar36)(puVar14,unaff_s0)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar14,unaff_s0)" ( identifier , identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar28 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar2 = puVar14[2];\n    }" else (compound_statement "{\n      uVar2 = puVar14[2];\n    }" { (expression_statement "uVar2 = puVar14[2];" (assignment_expression "uVar2 = puVar14[2]" identifier = (subscript_expression "puVar14[2]" identifier [ number_literal ])) ;) }))) (if_statement "if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" if (parenthesized_expression "(unaff_s0 == puVar25)" ( (binary_expression "unaff_s0 == puVar25" identifier == identifier) )) (compound_statement "{\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }" { (expression_statement "puVar10 = (uint *)((int)unaff_s0 << 2);" (assignment_expression "puVar10 = (uint *)((int)unaff_s0 << 2)" identifier = (cast_expression "(uint *)((int)unaff_s0 << 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 << 2)" ( (binary_expression "(int)unaff_s0 << 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) }) (else_clause "else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" else (compound_statement "{\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" { (expression_statement "puVar10 = (uint *)((int)puVar25 * 4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 * 4)" identifier = (cast_expression "(uint *)((int)puVar25 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 * 4)" ( (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "puVar18 = puVar16 + (int)puVar25;" (assignment_expression "puVar18 = puVar16 + (int)puVar25" identifier = (binary_expression "puVar16 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25))" identifier = (cast_expression "(byte *)((int)unaff_s0 + (-1 - (int)puVar25))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar25)" ( (binary_expression "-1 - (int)puVar25" number_literal - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar10);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar10)" identifier = (cast_expression "(uint *)(uVar2 + (int)puVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + (int)puVar10)" ( (binary_expression "uVar2 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" { (do_statement "do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" identifier = (binary_expression "puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" identifier + (cast_expression "(int)((int)unaff_s0 + (-1 - (int)puVar25))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar25)" ( (binary_expression "-1 - (int)puVar25" number_literal - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar19 = uVar24;" (assignment_expression "*puVar19 = uVar24" (pointer_expression "*puVar19" * identifier) = identifier) ;) }))) (expression_statement "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);" (assignment_expression "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4)" identifier = (cast_expression "(uint *)((int)((int)puVar27 + (int)puVar25) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)puVar27 + (int)puVar25) * 4)" ( (binary_expression "(int)((int)puVar27 + (int)puVar25) * 4" (cast_expression "(int)((int)puVar27 + (int)puVar25)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + (int)puVar25)" ( (binary_expression "(int)puVar27 + (int)puVar25" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) * number_literal) )))) ;) (do_statement "do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);" do (compound_statement "{\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    }" { (expression_statement "puVar27 = (uint *)((int)puVar28 + (int)puVar15);" (assignment_expression "puVar27 = (uint *)((int)puVar28 + (int)puVar15)" identifier = (cast_expression "(uint *)((int)puVar28 + (int)puVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + (int)puVar15)" ( (binary_expression "(int)puVar28 + (int)puVar15" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar16 + (int)puVar15);" (assignment_expression "pbVar11 = (byte *)((int)puVar16 + (int)puVar15)" identifier = (cast_expression "(byte *)((int)puVar16 + (int)puVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (int)puVar15)" ( (binary_expression "(int)puVar16 + (int)puVar15" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar15);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar15)" identifier = (cast_expression "(uint *)(uVar2 + (int)puVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + (int)puVar15)" ( (binary_expression "uVar2 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar19 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar19 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar19" * identifier) = (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(puVar10 != puVar15)" ( (binary_expression "puVar10 != puVar15" identifier != identifier) )) ;) (expression_statement "iVar4 = uVar2 + (int)unaff_s0 * 4;" (assignment_expression "iVar4 = uVar2 + (int)unaff_s0 * 4" identifier = (binary_expression "uVar2 + (int)unaff_s0 * 4" identifier + (binary_expression "(int)unaff_s0 * 4" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (do_statement "do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);" do (compound_statement "{\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    }" { (if_statement "if (*(int *)(iVar4 + -4) != 0) break;" if (parenthesized_expression "(*(int *)(iVar4 + -4) != 0)" ( (binary_expression "*(int *)(iVar4 + -4) != 0" (pointer_expression "*(int *)(iVar4 + -4)" * (cast_expression "(int *)(iVar4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4)" ( (binary_expression "iVar4 + -4" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" identifier = (cast_expression "(uint *)((int)unaff_s0 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + -1)" ( (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" else (compound_statement "{\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" { (if_statement "if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" if (parenthesized_expression "(-1 < (int)puVar27)" ( (binary_expression "-1 < (int)puVar27" number_literal < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" { (expression_statement "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);" (assignment_expression "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27)" identifier = (cast_expression "(uint *)(uint)((int)puVar23 < (int)puVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)puVar23 < (int)puVar27)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar23 < (int)puVar27)" ( (binary_expression "(int)puVar23 < (int)puVar27" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar10 = puVar14;" (assignment_expression "puVar10 = puVar14" identifier = identifier) ;) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) (if_statement "if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" if (parenthesized_expression "(puVar18 == (uint *)0x0)" ( (binary_expression "puVar18 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar29 + 0x6134c)" * (cast_expression "(code **)(puVar29 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x6134c)" ( (binary_expression "puVar29 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar14 < (int)puVar23)" ( (binary_expression "(int)*puVar14 < (int)puVar23" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" { (expression_statement "*(uint **)(puVar32 + -0x34) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x34) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = puVar23;" (assignment_expression "puVar18 = puVar23" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" * (cast_expression "(int *)(puVar32 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" if (parenthesized_expression "((puVar25 != puVar26) && (puVar23 != puVar27))" ( (binary_expression "(puVar25 != puVar26) && (puVar23 != puVar27)" (parenthesized_expression "(puVar25 != puVar26)" ( (binary_expression "puVar25 != puVar26" identifier != identifier) )) && (parenthesized_expression "(puVar23 != puVar27)" ( (binary_expression "puVar23 != puVar27" identifier != identifier) ))) )) (compound_statement "{\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" { (expression_statement "puVar19 = puVar26 + (int)puVar27;" (assignment_expression "puVar19 = puVar26 + (int)puVar27" identifier = (binary_expression "puVar26 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27))" identifier = (cast_expression "(byte *)((int)puVar23 + (-1 - (int)puVar27))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar7 = puVar25 + (int)puVar27;" (assignment_expression "puVar7 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" { (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" identifier = (binary_expression "puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" identifier + (cast_expression "(int)((int)puVar23 + (-1 - (int)puVar27))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" if (parenthesized_expression "(puVar27 != (uint *)0x0)" ( (binary_expression "puVar27 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" { (expression_statement "puVar15 = (uint *)((int)puVar27 << 2);" (assignment_expression "puVar15 = (uint *)((int)puVar27 << 2)" identifier = (cast_expression "(uint *)((int)puVar27 << 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 << 2)" ( (binary_expression "(int)puVar27 << 2" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (do_statement "do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);" do (compound_statement "{\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          }" { (expression_statement "puVar27 = (uint *)((int)puVar26 + (int)puVar16);" (assignment_expression "puVar27 = (uint *)((int)puVar26 + (int)puVar16)" identifier = (cast_expression "(uint *)((int)puVar26 + (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + (int)puVar16)" ( (binary_expression "(int)puVar26 + (int)puVar16" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar28 + (int)puVar16);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + (int)puVar16)" identifier = (cast_expression "(byte *)((int)puVar28 + (int)puVar16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + (int)puVar16)" ( (binary_expression "(int)puVar28 + (int)puVar16" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar25 + (int)puVar16);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + (int)puVar16)" identifier = (cast_expression "(uint *)((int)puVar25 + (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (int)puVar16)" ( (binary_expression "(int)puVar25 + (int)puVar16" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar10 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(puVar15 != puVar16)" ( (binary_expression "puVar15 != puVar16" identifier != identifier) )) ;) })) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (if_statement "if (puVar23 != (uint *)0x0) goto LAB_00036910;" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036910;" goto statement_identifier ;)) (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" else (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar29 + 0x6134c)" * (cast_expression "(code **)(puVar29 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x6134c)" ( (binary_expression "puVar29 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar14 < (int)puVar27)" ( (binary_expression "(int)*puVar14 < (int)puVar27" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" { (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = puVar27;" (assignment_expression "puVar18 = puVar27" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" * (cast_expression "(int *)(puVar32 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" if (parenthesized_expression "(puVar25 != puVar28)" ( (binary_expression "puVar25 != puVar28" identifier != identifier) )) (compound_statement "{\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" { (expression_statement "puVar19 = puVar28 + (int)puVar23;" (assignment_expression "puVar19 = puVar28 + (int)puVar23" identifier = (binary_expression "puVar28 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23))" identifier = (cast_expression "(byte *)((int)puVar27 + (-1 - (int)puVar23))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" ( (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar23)" ( (binary_expression "-1 - (int)puVar23" number_literal - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar7 = puVar25 + (int)puVar23;" (assignment_expression "puVar7 = puVar25 + (int)puVar23" identifier = (binary_expression "puVar25 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" { (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" identifier = (binary_expression "puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" identifier + (cast_expression "(int)((int)puVar27 + (-1 - (int)puVar23))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" ( (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar23)" ( (binary_expression "-1 - (int)puVar23" number_literal - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);" do (compound_statement "{\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          }" { (expression_statement "puVar16 = (uint *)((int)puVar26 + iVar4);" (assignment_expression "puVar16 = (uint *)((int)puVar26 + iVar4)" identifier = (cast_expression "(uint *)((int)puVar26 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + iVar4)" ( (binary_expression "(int)puVar26 + iVar4" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar28 + iVar4);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + iVar4)" identifier = (cast_expression "(byte *)((int)puVar28 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + iVar4)" ( (binary_expression "(int)puVar28 + iVar4" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar25 + iVar4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + iVar4)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar4)" ( (binary_expression "(int)puVar25 + iVar4" (cast_expression "(int)puVar25" ( (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 "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar10 = *puVar16 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar16 ^ (uint)puVar18" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar16 ^ (uint)puVar18" (pointer_expression "*puVar16" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)puVar23 << 2 != iVar4)" ( (binary_expression "(int)puVar23 << 2 != iVar4" (binary_expression "(int)puVar23 << 2" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (labeled_statement "LAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" statement_identifier : (if_statement "if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" if (parenthesized_expression "(puVar25[(int)((int)puVar27 + -1)] == 0)" ( (binary_expression "puVar25[(int)((int)puVar27 + -1)] == 0" (subscript_expression "puVar25[(int)((int)puVar27 + -1)]" identifier [ (cast_expression "(int)((int)puVar27 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + -1)" ( (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" { (expression_statement "puVar16 = puVar25 + (int)puVar27;" (assignment_expression "puVar16 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);" do (compound_statement "{\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          }" { (expression_statement "puVar27 = (uint *)((int)puVar27 + -1);" (assignment_expression "puVar27 = (uint *)((int)puVar27 + -1)" identifier = (cast_expression "(uint *)((int)puVar27 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 + -1)" ( (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }" if (parenthesized_expression "(puVar27 == (uint *)0x0)" ( (binary_expression "puVar27 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              puVar27 = (uint *)0x0;\n              break;\n            }" { (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "puVar28 = puVar16 + -2;" (assignment_expression "puVar28 = puVar16 + -2" identifier = (binary_expression "puVar16 + -2" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" identifier = (binary_expression "puVar16 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar28 == 0)" ( (binary_expression "*puVar28 == 0" (pointer_expression "*puVar28" * identifier) == number_literal) )) ;) }))) }))) (expression_statement "puVar14[1] = (uint)puVar27;" (assignment_expression "puVar14[1] = (uint)puVar27" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_000366e0;" goto statement_identifier ;) })) (expression_statement "puVar10 = (uint *)-(int)puVar27;" (assignment_expression "puVar10 = (uint *)-(int)puVar27" identifier = (cast_expression "(uint *)-(int)puVar27" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar27" - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "param_3 = puVar16;" (assignment_expression "param_3 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = puVar27;" (assignment_expression "puVar16 = puVar27" identifier = identifier) ;) (expression_statement "puVar15 = puVar28;" (assignment_expression "puVar15 = puVar28" identifier = identifier) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (expression_statement "puVar28 = puVar26;" (assignment_expression "puVar28 = puVar26" identifier = identifier) ;) (labeled_statement "LAB_0003630c:\n    puVar26 = puVar15;" statement_identifier : (expression_statement "puVar26 = puVar15;" (assignment_expression "puVar26 = puVar15" identifier = identifier) ;)) (expression_statement "puVar23 = puVar16;" (assignment_expression "puVar23 = puVar16" identifier = identifier) ;) (expression_statement "uVar2 = (int)puVar10 * 4;" (assignment_expression "uVar2 = (int)puVar10 * 4" identifier = (binary_expression "(int)puVar10 * 4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }" { (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar2 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" ( (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" identifier = (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + iVar4 + -0x48)" ( (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" identifier = (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" else (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar29 + 0x61080)" * (cast_expression "(code **)(puVar29 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x61080)" ( (binary_expression "puVar29 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar32 + -0x34) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x34) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x34)" * (cast_expression "(uint *)(puVar32 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" identifier = (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar36)(puVar32 + -0x30,uVar2)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar32 + -0x30,uVar2)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(uint **)(puVar32 + -0x38);" (assignment_expression "param_3 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x34);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint *)(puVar32 + -0x34)" * (cast_expression "(uint *)(puVar32 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) }))) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "*puVar16 = uVar24 - 1;" (assignment_expression "*puVar16 = uVar24 - 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (if_statement "if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }" { (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" { (expression_statement "uVar24 = puVar26[1];" (assignment_expression "uVar24 = puVar26[1]" identifier = (subscript_expression "puVar26[1]" identifier [ number_literal ])) ;) (expression_statement "puVar16[1] = uVar24 - 1;" (assignment_expression "puVar16[1] = uVar24 - 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (if_statement "if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }" { (expression_statement "puVar18 = puVar26 + 2;" (assignment_expression "puVar18 = puVar26 + 2" identifier = (binary_expression "puVar26 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar15 = puVar16 + 2;" (assignment_expression "puVar15 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);" do (compound_statement "{\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          }" { (if_statement "if ((int)puVar10 <= iVar4) goto LAB_00036390;" if (parenthesized_expression "((int)puVar10 <= iVar4)" ( (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24 - 1;" (assignment_expression "*puVar15 = uVar24 - 1" (pointer_expression "*puVar15" * identifier) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" 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 ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" if (parenthesized_expression "((puVar26 != puVar16) && (iVar4 < (int)puVar10))" ( (binary_expression "(puVar26 != puVar16) && (iVar4 < (int)puVar10)" (parenthesized_expression "(puVar26 != puVar16)" ( (binary_expression "puVar26 != puVar16" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar10)" ( (binary_expression "iVar4 < (int)puVar10" identifier < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" { (expression_statement "puVar18 = puVar26 + iVar4;" (assignment_expression "puVar18 = puVar26 + iVar4" identifier = (binary_expression "puVar26 + iVar4" identifier + identifier)) ;) (expression_statement "puVar26 = puVar26 + (int)puVar10;" (assignment_expression "puVar26 = puVar26 + (int)puVar10" identifier = (binary_expression "puVar26 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar15 = puVar16 + iVar4;" (assignment_expression "puVar15 = puVar16 + iVar4" identifier = (binary_expression "puVar16 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);" do (compound_statement "{\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          }" { (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar26 != puVar18)" ( (binary_expression "puVar26 != puVar18" identifier != identifier) )) ;) })) })) (labeled_statement "LAB_00036390:\n      puVar15 = puVar10;" statement_identifier : (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;)) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" if (parenthesized_expression "((int)puVar10 <= (int)puVar27)" ( (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        puVar15 = puVar27;\n      }" { (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) })) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;" if (parenthesized_expression "((int)((int)puVar15 + 1) <= (int)*puVar14)" ( (binary_expression "(int)((int)puVar15 + 1) <= (int)*puVar14" (cast_expression "(int)((int)puVar15 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) <= (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier))) )) (goto_statement "goto LAB_000363b0;" goto statement_identifier ;)) (labeled_statement "LAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;" statement_identifier : (expression_statement "*(uint *)(puVar32 + -0x3c) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x3c) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x3c)" * (cast_expression "(uint *)(puVar32 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x3c)" ( (binary_expression "puVar32 + -0x3c" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar36)(puVar14);" (call_expression "(*pcVar36)(puVar14)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar14)" ( identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x3c);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x3c)" identifier = (pointer_expression "*(uint *)(puVar32 + -0x3c)" * (cast_expression "(uint *)(puVar32 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x3c)" ( (binary_expression "puVar32 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x38) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x38) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x38) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x38) + 8" (pointer_expression "*(int *)(puVar32 + -0x38)" * (cast_expression "(int *)(puVar32 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;" if (parenthesized_expression "((int)puVar27 <= (int)puVar10)" ( (binary_expression "(int)puVar27 <= (int)puVar10" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000367b0;" goto statement_identifier ;)) (labeled_statement "LAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);" statement_identifier : (expression_statement "puVar23 = (uint *)((int)puVar23 + (int)puVar27);" (assignment_expression "puVar23 = (uint *)((int)puVar23 + (int)puVar27)" identifier = (cast_expression "(uint *)((int)puVar23 + (int)puVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + (int)puVar27)" ( (binary_expression "(int)puVar23 + (int)puVar27" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "pbVar6 = (byte *)((int)puVar28 + uVar2);" (assignment_expression "pbVar6 = (byte *)((int)puVar28 + uVar2)" identifier = (cast_expression "(byte *)((int)puVar28 + uVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + uVar2)" ( (binary_expression "(int)puVar28 + uVar2" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pbVar9 = (byte *)((int)puVar23 + -1);" (assignment_expression "pbVar9 = (byte *)((int)puVar23 + -1)" identifier = (cast_expression "(byte *)((int)puVar23 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + -1)" ( (binary_expression "(int)puVar23 + -1" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar22 = (byte *)((int)puVar25 + uVar2);" (assignment_expression "pbVar22 = (byte *)((int)puVar25 + uVar2)" identifier = (cast_expression "(byte *)((int)puVar25 + uVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar2)" ( (binary_expression "(int)puVar25 + uVar2" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" identifier = (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar11 = pbVar22;" (assignment_expression "pbVar11 = pbVar22" identifier = identifier) ;) (if_statement "if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" { (do_statement "do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);" do (compound_statement "{\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        }" { (expression_statement "pbVar6 = pbVar6 + 4;" (assignment_expression "pbVar6 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pbVar11 = uVar17;" (assignment_expression "*(undefined4 *)pbVar11 = uVar17" (pointer_expression "*(undefined4 *)pbVar11" * (cast_expression "(undefined4 *)pbVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" identifier = (binary_expression "pbVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" identifier = (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 4;" (assignment_expression "pbVar11 = pbVar11 + 4" identifier = (binary_expression "pbVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar23 = (uint *)((int)puVar23 * 4 + -4);" (assignment_expression "puVar23 = (uint *)((int)puVar23 * 4 + -4)" identifier = (cast_expression "(uint *)((int)puVar23 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 * 4 + -4)" ( (binary_expression "(int)puVar23 * 4 + -4" (binary_expression "(int)puVar23 * 4" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "pbVar22 = pbVar22 + (int)puVar23;" (assignment_expression "pbVar22 = pbVar22 + (int)puVar23" identifier = (binary_expression "pbVar22 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)pbVar22 = uVar17;" (assignment_expression "*(undefined4 *)pbVar22 = uVar17" (pointer_expression "*(undefined4 *)pbVar22" * (cast_expression "(undefined4 *)pbVar22" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (do_statement "do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);" do (compound_statement "{\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      }" { (expression_statement "puVar10 = (uint *)((int)puVar28 + uVar24);" (assignment_expression "puVar10 = (uint *)((int)puVar28 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar28 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + uVar24)" ( (binary_expression "(int)puVar28 + uVar24" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar16 + uVar24);" (assignment_expression "puVar18 = (uint *)((int)puVar16 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar16 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + uVar24)" ( (binary_expression "(int)puVar16 + uVar24" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar15 = (uint *)((int)puVar25 + uVar24);" (assignment_expression "puVar15 = (uint *)((int)puVar25 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar25 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar24)" ( (binary_expression "(int)puVar25 + uVar24" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar24 = uVar24 + 4;" (assignment_expression "uVar24 = uVar24 + 4" identifier = (binary_expression "uVar24 + 4" identifier + number_literal)) ;) (expression_statement "*puVar15 = *puVar10 ^ *puVar18;" (assignment_expression "*puVar15 = *puVar10 ^ *puVar18" (pointer_expression "*puVar15" * identifier) = (binary_expression "*puVar10 ^ *puVar18" (pointer_expression "*puVar10" * identifier) ^ (pointer_expression "*puVar18" * identifier))) ;) }) while (parenthesized_expression "(uVar2 != uVar24)" ( (binary_expression "uVar2 != uVar24" identifier != identifier) )) ;) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar27;" (assignment_expression "puVar10 = puVar27" identifier = identifier) ;) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" if (parenthesized_expression "(uVar2 + 1 != 0)" ( (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (labeled_statement "LAB_00036438:\n      uVar2 = puVar25[1];" statement_identifier : (expression_statement "uVar2 = puVar25[1];" (assignment_expression "uVar2 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;)) (expression_statement "puVar25[1] = uVar2 + 1;" (assignment_expression "puVar25[1] = uVar2 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar10;" (assignment_expression "puVar27 = puVar10" identifier = identifier) ;) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" if (parenthesized_expression "(uVar2 + 1 != 0)" ( (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar16 = puVar25 + 2;" (assignment_expression "puVar16 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (do_statement "do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);" do (compound_statement "{\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      }" { (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" if (parenthesized_expression "((int)puVar10 <= iVar4)" ( (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" { (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = uVar2 + 1;" (assignment_expression "*puVar16 = uVar2 + 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 + 1 == 0)" ( (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) }) (else_clause "else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" else (compound_statement "{\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" { (if_statement "if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;" if (parenthesized_expression "((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff))" ( (binary_expression "(puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar26 == puVar16)" ( (binary_expression "puVar26 == puVar16" identifier == identifier) )) || (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" ( (binary_expression "puVar23 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) (do_statement "do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);" do (compound_statement "{\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      }" { (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar10)" ( (binary_expression "iVar4 < (int)puVar10" identifier < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" if (parenthesized_expression "((int)puVar10 <= (int)puVar27)" ( (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        puVar15 = puVar27;\n      }" { (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) })) (if_statement "if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" if (parenthesized_expression "((int)*puVar14 < (int)((int)puVar15 + 1))" ( (binary_expression "(int)*puVar14 < (int)((int)puVar15 + 1)" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)((int)puVar15 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (compound_statement "{\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" { (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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) ))))) ;) (goto_statement "goto LAB_00036778;" goto statement_identifier ;) })) (labeled_statement "LAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" statement_identifier : (if_statement "if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" if (parenthesized_expression "((int)puVar10 < (int)puVar27)" ( (binary_expression "(int)puVar10 < (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000363b8;" goto statement_identifier ;))) (labeled_statement "LAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" statement_identifier : (if_statement "if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" if (parenthesized_expression "(puVar27 == puVar10)" ( (binary_expression "puVar27 == puVar10" identifier == identifier) )) (compound_statement "{\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }" { (expression_statement "iVar4 = (int)puVar10 << 2;" (assignment_expression "iVar4 = (int)puVar10 << 2" identifier = (binary_expression "(int)puVar10 << 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (labeled_statement "LAB_00036804:\n        iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (do_statement "do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);" do (compound_statement "{\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        }" { (expression_statement "puVar15 = (uint *)((int)puVar28 + iVar21);" (assignment_expression "puVar15 = (uint *)((int)puVar28 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar28 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + iVar21)" ( (binary_expression "(int)puVar28 + iVar21" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = (uint *)((int)puVar16 + iVar21);" (assignment_expression "puVar19 = (uint *)((int)puVar16 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar16 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar21)" ( (binary_expression "(int)puVar16 + iVar21" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar25 + iVar21);" (assignment_expression "puVar18 = (uint *)((int)puVar25 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar21)" ( (binary_expression "(int)puVar25 + iVar21" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar21 = iVar21 + 4;" (assignment_expression "iVar21 = iVar21 + 4" identifier = (binary_expression "iVar21 + 4" identifier + number_literal)) ;) (expression_statement "*puVar18 = *puVar15 ^ *puVar19;" (assignment_expression "*puVar18 = *puVar15 ^ *puVar19" (pointer_expression "*puVar18" * identifier) = (binary_expression "*puVar15 ^ *puVar19" (pointer_expression "*puVar15" * identifier) ^ (pointer_expression "*puVar19" * identifier))) ;) }) while (parenthesized_expression "(iVar4 != iVar21)" ( (binary_expression "iVar4 != iVar21" identifier != identifier) )) ;) }) (else_clause "else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" else (compound_statement "{\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" { (expression_statement "iVar4 = (int)puVar27 * 4;" (assignment_expression "iVar4 = (int)puVar27 * 4" identifier = (binary_expression "(int)puVar27 * 4" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar18 = puVar16 + (int)puVar27;" (assignment_expression "puVar18 = puVar16 + (int)puVar27" identifier = (binary_expression "puVar16 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27))" identifier = (cast_expression "(byte *)((int)puVar10 + (-1 - (int)puVar27))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar19 = puVar25 + (int)puVar27;" (assignment_expression "puVar19 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" { (do_statement "do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar2;" (assignment_expression "*puVar15 = uVar2" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" identifier = (binary_expression "puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" identifier + (cast_expression "(int)((int)puVar10 + (-1 - (int)puVar27))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar19 = uVar2;" (assignment_expression "*puVar19 = uVar2" (pointer_expression "*puVar19" * identifier) = identifier) ;) (if_statement "if (puVar27 != (uint *)0x0) goto LAB_00036804;" if (parenthesized_expression "(puVar27 != (uint *)0x0)" ( (binary_expression "puVar27 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036804;" goto statement_identifier ;)) })))) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" if (parenthesized_expression "(uVar2 + 1 == 0)" ( (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" { (if_statement "if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036438;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (labeled_statement "LAB_00036840:\n      puVar18 = (uint *)0x0;" statement_identifier : (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) }))) (labeled_statement "LAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;" statement_identifier : (expression_statement "puVar25[(int)puVar10] = (uint)puVar18;" (assignment_expression "puVar25[(int)puVar10] = (uint)puVar18" (subscript_expression "puVar25[(int)puVar10]" identifier [ (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (expression_statement "uVar2 = (puVar25 + (int)unaff_s0)[-1];" (assignment_expression "uVar2 = (puVar25 + (int)unaff_s0)[-1]" identifier = (subscript_expression "(puVar25 + (int)unaff_s0)[-1]" (parenthesized_expression "(puVar25 + (int)unaff_s0)" ( (binary_expression "puVar25 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ])) ;) (expression_statement "puVar16 = puVar25 + (int)unaff_s0;" (assignment_expression "puVar16 = puVar25 + (int)unaff_s0" identifier = (binary_expression "puVar25 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" { (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" identifier = (cast_expression "(uint *)((int)unaff_s0 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + -1)" ( (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;" if (parenthesized_expression "(unaff_s0 == (uint *)0x0)" ( (binary_expression "unaff_s0 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d4;" goto statement_identifier ;)) (expression_statement "uVar2 = puVar16[-2];" (assignment_expression "uVar2 = puVar16[-2]" identifier = (subscript_expression "puVar16[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" identifier = (binary_expression "puVar16 + -1" identifier + number_literal)) ;) })) (expression_statement "unaff_s0 = (uint *)-(int)unaff_s0;" (assignment_expression "unaff_s0 = (uint *)-(int)unaff_s0" identifier = (cast_expression "(uint *)-(int)unaff_s0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)unaff_s0" - (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }))) (labeled_statement "LAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);" statement_identifier : (expression_statement "puVar10 = *(uint **)(puVar32 + -0x30);" (assignment_expression "puVar10 = *(uint **)(puVar32 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x30)" * (cast_expression "(uint **)(puVar32 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar14[1] = (uint)unaff_s0;" (assignment_expression "puVar14[1] = (uint)unaff_s0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (expression_statement "puVar35 = puVar34;" (assignment_expression "puVar35 = puVar34" identifier = identifier) ;) (if_statement "if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }" if (parenthesized_expression "(puVar10 != (uint *)0x0)" ( (binary_expression "puVar10 != (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 **)(puVar32 + -0x48);\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 **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar32 + -0x2c) == *piVar5)" ( (binary_expression "*(int *)(puVar32 + -0x2c) == *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" * (cast_expression "(int *)(puVar32 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) )))) == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar36 = *(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 "uVar17 = 0x36bd8;" (assignment_expression "uVar17 = 0x36bd8" identifier = number_literal) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar31 = pcVar36 + 0x68460;" (assignment_expression "pcVar31 = pcVar36 + 0x68460" identifier = (binary_expression "pcVar36 + 0x68460" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar35 + -0x10) = puVar25;" (assignment_expression "*(uint **)(puVar35 + -0x10) = puVar25" (pointer_expression "*(uint **)(puVar35 + -0x10)" * (cast_expression "(uint **)(puVar35 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x10)" ( (binary_expression "puVar35 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x20) = pcVar31;" (assignment_expression "*(code **)(puVar35 + -0x20) = pcVar31" (pointer_expression "*(code **)(puVar35 + -0x20)" * (cast_expression "(code **)(puVar35 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0x14) = puVar27;" (assignment_expression "*(uint **)(puVar35 + -0x14) = puVar27" (pointer_expression "*(uint **)(puVar35 + -0x14)" * (cast_expression "(uint **)(puVar35 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14)" ( (binary_expression "puVar35 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0x18) = unaff_s0;" (assignment_expression "*(uint **)(puVar35 + -0x18) = unaff_s0" (pointer_expression "*(uint **)(puVar35 + -0x18)" * (cast_expression "(uint **)(puVar35 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18)" ( (binary_expression "puVar35 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -4) = uVar17;" (assignment_expression "*(undefined4 *)(puVar35 + -4) = uVar17" (pointer_expression "*(undefined4 *)(puVar35 + -4)" * (cast_expression "(undefined4 *)(puVar35 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -4)" ( (binary_expression "puVar35 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -8) = puVar15;" (assignment_expression "*(uint **)(puVar35 + -8) = puVar15" (pointer_expression "*(uint **)(puVar35 + -8)" * (cast_expression "(uint **)(puVar35 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -8)" ( (binary_expression "puVar35 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0xc) = puVar26;" (assignment_expression "*(uint **)(puVar35 + -0xc) = puVar26" (pointer_expression "*(uint **)(puVar35 + -0xc)" * (cast_expression "(uint **)(puVar35 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc)" ( (binary_expression "puVar35 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar24 = puVar18[1];" (assignment_expression "uVar24 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = uVar24;" (assignment_expression "uVar2 = uVar24" identifier = identifier) ;) (if_statement "if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }" if (parenthesized_expression "((int)uVar24 < 0)" ( (binary_expression "(int)uVar24 < 0" (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar2 = -uVar24;\n  }" { (expression_statement "uVar2 = -uVar24;" (assignment_expression "uVar2 = -uVar24" identifier = (unary_expression "-uVar24" - identifier)) ;) })) (if_statement "if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" if (parenthesized_expression "(puVar18 != puVar10)" ( (binary_expression "puVar18 != puVar10" identifier != identifier) )) (compound_statement "{\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" { (expression_statement "uVar3 = puVar18[4];" (assignment_expression "uVar3 = puVar18[4]" identifier = (subscript_expression "puVar18[4]" identifier [ number_literal ])) ;) (if_statement "if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" if (parenthesized_expression "((int)*puVar10 < (int)uVar2)" ( (binary_expression "(int)*puVar10 < (int)uVar2" (cast_expression "(int)*puVar10" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar10" * identifier)) < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }" { (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" (parenthesized_expression "(**(code **)(pcVar36 + 0x609dc))" ( (pointer_expression "**(code **)(pcVar36 + 0x609dc)" * (pointer_expression "*(code **)(pcVar36 + 0x609dc)" * (cast_expression "(code **)(pcVar36 + 0x609dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x609dc)" ( (binary_expression "pcVar36 + 0x609dc" identifier + number_literal) ))))) )) (argument_list "(puVar10,uVar2)" ( identifier , identifier ))))) ;) (expression_statement "pcVar31 = *(code **)(puVar35 + -0x20);" (assignment_expression "pcVar31 = *(code **)(puVar35 + -0x20)" identifier = (pointer_expression "*(code **)(puVar35 + -0x20)" * (cast_expression "(code **)(puVar35 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[2];\n    }" { (expression_statement "puVar8 = (undefined4 *)puVar10[2];" (assignment_expression "puVar8 = (undefined4 *)puVar10[2]" identifier = (cast_expression "(undefined4 *)puVar10[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" if (parenthesized_expression "(uVar24 != 0)" ( (binary_expression "uVar24 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" { (expression_statement "puVar13 = (undefined4 *)puVar18[2];" (assignment_expression "puVar13 = (undefined4 *)puVar18[2]" identifier = (cast_expression "(undefined4 *)puVar18[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = uVar2 - 1;" (assignment_expression "iVar4 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) (if_statement "if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" if (parenthesized_expression "((int)puVar10[3] < (int)uVar3)" ( (binary_expression "(int)puVar10[3] < (int)uVar3" (cast_expression "(int)puVar10[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar10[3]" identifier [ number_literal ])) < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }" { (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" (parenthesized_expression "(**(code **)(pcVar31 + -0x7a84))" ( (pointer_expression "**(code **)(pcVar31 + -0x7a84)" * (pointer_expression "*(code **)(pcVar31 + -0x7a84)" * (cast_expression "(code **)(pcVar31 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar31 + -0x7a84)" ( (binary_expression "pcVar31 + -0x7a84" identifier + number_literal) ))))) )) (argument_list "(puVar10 + 3,uVar3)" ( (binary_expression "puVar10 + 3" identifier + number_literal) , identifier ))))) ;) }) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[5];\n    }" { (expression_statement "puVar8 = (undefined4 *)puVar10[5];" (assignment_expression "puVar8 = (undefined4 *)puVar10[5]" identifier = (cast_expression "(undefined4 *)puVar10[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[5]" identifier [ number_literal ]))) ;) }))) (expression_statement "puVar10[4] = uVar3;" (assignment_expression "puVar10[4] = uVar3" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" { (expression_statement "puVar13 = (undefined4 *)puVar18[5];" (assignment_expression "puVar13 = (undefined4 *)puVar18[5]" identifier = (cast_expression "(undefined4 *)puVar18[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[5]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = uVar3 - 1;" (assignment_expression "iVar4 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar8 = puVar8 + (uVar3 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar3 - 1)" identifier = (binary_expression "puVar8 + (uVar3 - 1)" identifier + (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) })) (expression_statement "puVar10[1] = uVar2;" (assignment_expression "puVar10[1] = uVar2" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "gmp_randalg_t": Some values do not have unique names */\n\nvoid __gmpz_urandomm(mpz_ptr rop,__gmp_randstate_struct *rstate,mpz_srcptr n)\n\n{\n  mp_limb_t *pmVar1;\n  bool bVar2;\n  int iVar3;\n  mp_limb_t mVar4;\n  tmp_reentrant_t *ptVar5;\n  size_t sVar6;\n  tmp_reentrant_t **pptVar7;\n  undefined4 *puVar8;\n  undefined1 *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  tmp_reentrant_t **pptVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  tmp_reentrant_t *ptVar15;\n  uint *puVar16;\n  tmp_reentrant_t *ptVar17;\n  tmp_reentrant_t *ptVar18;\n  undefined1 *puVar19;\n  mpz_srcptr p_Var20;\n  mpz_srcptr p_Var21;\n  tmp_reentrant_t *ptVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  tmp_reentrant_t *ptVar25;\n  tmp_reentrant_t *ptVar26;\n  undefined4 *puVar27;\n  tmp_reentrant_t **pptVar28;\n  tmp_reentrant_t *ptVar29;\n  int iVar30;\n  tmp_reentrant_t *ptVar31;\n  tmp_reentrant_t *unaff_s0;\n  tmp_reentrant_t *ptVar32;\n  undefined4 *unaff_s2;\n  uint uVar33;\n  tmp_reentrant_t *ptVar34;\n  size_t sVar35;\n  mpz_srcptr unaff_s3;\n  tmp_reentrant_t *ptVar36;\n  tmp_reentrant_t *ptVar37;\n  int unaff_s5;\n  tmp_reentrant_t *ptVar38;\n  uint unaff_s6;\n  int *piVar39;\n  undefined1 *unaff_s7;\n  undefined *puVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  code *pcVar44;\n  undefined1 auStack_60 [16];\n  mpz_srcptr local_3c;\n  int local_34;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar40 = PTR___stack_chk_guard_00097540;\n  puVar19 = auStack_60;\n  puVar43 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar3 = n->_mp_size;\n  if (iVar3 < 0) {\n    local_34 = -iVar3;\n    if (iVar3 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar33 = local_34 * 4;\n    local_3c = (mpz_srcptr)n->_mp_d;\n    unaff_s2 = (undefined4 *)(uVar33 - 4);\n    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);\n    uVar14 = p_Var20->_mp_alloc;\n    if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    rop->_mp_size = 0;\n  }\n  else {\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar40) {\n    return;\n  }\n  pcVar44 = __gmpz_xor;\n  puVar40 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar41 = puVar40 + 0x68dd0;\n  puVar11 = puVar19 + -0x58;\n  puVar9 = puVar19 + -0x58;\n  *(uint *)(puVar19 + -0x10) = unaff_s6;\n  *(int *)(puVar19 + -0x24) = local_34;\n  piVar39 = *(int **)(puVar40 + 0x612d0);\n  ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size;\n  *(undefined1 **)(puVar19 + -8) = auStack_60;\n  *(undefined1 **)(puVar19 + -0xc) = unaff_s7;\n  *(int *)(puVar19 + -0x14) = unaff_s5;\n  *(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate;\n  *(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar19 + -0x20) = unaff_s2;\n  *(code **)(puVar19 + -4) = pcVar44;\n  *(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0;\n  *(undefined **)(puVar19 + -0x48) = puVar41;\n  *(undefined4 *)(puVar19 + -0x30) = 0;\n  ptVar37 = (tmp_reentrant_t *)n->_mp_size;\n  ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d;\n  ptVar38 = (tmp_reentrant_t *)n->_mp_d;\n  ptVar34 = ptVar15[1].next;\n  *(int *)(puVar19 + -0x2c) = *piVar39;\n  ptVar18 = (tmp_reentrant_t *)-(int)ptVar32;\n  if ((int)ptVar32 < 0) {\n    ptVar31 = ptVar32;\n    ptVar5 = ptVar36;\n    if (-1 < (int)ptVar37) goto LAB_0003630c;\n    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;\n    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }\n    ptVar22 = ptVar36->next;\n    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }\nLAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }\nLAB_00036608:\n    ptVar38 = ptVar29;\n    unaff_s0 = ptVar18;\n    if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }\n    pcVar44 = *(code **)(puVar41 + -0x7a84);\n    if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }\n    if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }\n    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);\n    do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);\n    pptVar7 = &ptVar18->next + (int)unaff_s0;\n    do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);\n  }\n  else {\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);\n  ptVar15->size = (size_t)unaff_s0;\n  ptVar37 = ptVar32;\n  puVar9 = puVar11;\n  if (ptVar18 != (tmp_reentrant_t *)0x0) {\n    (**(code **)(puVar41 + -0x7a2c))();\n    puVar41 = *(undefined **)(puVar19 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar19 + -0x2c) == *piVar39) {\n    return;\n  }\n  pcVar44 = *(code **)(puVar41 + -0x7b70);\n  uVar23 = 0x36bd8;\n  (*pcVar44)();\n  pcVar42 = pcVar44 + 0x68460;\n  *(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34;\n  *(code **)(puVar9 + -0x20) = pcVar42;\n  *(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37;\n  *(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar9 + -4) = uVar23;\n  *(tmp_reentrant_t **)(puVar9 + -8) = ptVar5;\n  *(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36;\n  sVar35 = ptVar25->size;\n  sVar6 = sVar35;\n  if ((int)sVar35 < 0) {\n    sVar6 = -sVar35;\n  }\n  if (ptVar25 != ptVar18) {\n    ptVar15 = ptVar25[2].next;\n    if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }\n    if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }\n    if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }\n    ptVar18[2].next = ptVar15;\n    if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }\n  }\n  ptVar18->size = sVar6;\n  return;\n}\n\n" comment (function_definition "void __gmpz_urandomm(mpz_ptr rop,__gmp_randstate_struct *rstate,mpz_srcptr n)\n\n{\n  mp_limb_t *pmVar1;\n  bool bVar2;\n  int iVar3;\n  mp_limb_t mVar4;\n  tmp_reentrant_t *ptVar5;\n  size_t sVar6;\n  tmp_reentrant_t **pptVar7;\n  undefined4 *puVar8;\n  undefined1 *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  tmp_reentrant_t **pptVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  tmp_reentrant_t *ptVar15;\n  uint *puVar16;\n  tmp_reentrant_t *ptVar17;\n  tmp_reentrant_t *ptVar18;\n  undefined1 *puVar19;\n  mpz_srcptr p_Var20;\n  mpz_srcptr p_Var21;\n  tmp_reentrant_t *ptVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  tmp_reentrant_t *ptVar25;\n  tmp_reentrant_t *ptVar26;\n  undefined4 *puVar27;\n  tmp_reentrant_t **pptVar28;\n  tmp_reentrant_t *ptVar29;\n  int iVar30;\n  tmp_reentrant_t *ptVar31;\n  tmp_reentrant_t *unaff_s0;\n  tmp_reentrant_t *ptVar32;\n  undefined4 *unaff_s2;\n  uint uVar33;\n  tmp_reentrant_t *ptVar34;\n  size_t sVar35;\n  mpz_srcptr unaff_s3;\n  tmp_reentrant_t *ptVar36;\n  tmp_reentrant_t *ptVar37;\n  int unaff_s5;\n  tmp_reentrant_t *ptVar38;\n  uint unaff_s6;\n  int *piVar39;\n  undefined1 *unaff_s7;\n  undefined *puVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  code *pcVar44;\n  undefined1 auStack_60 [16];\n  mpz_srcptr local_3c;\n  int local_34;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar40 = PTR___stack_chk_guard_00097540;\n  puVar19 = auStack_60;\n  puVar43 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar3 = n->_mp_size;\n  if (iVar3 < 0) {\n    local_34 = -iVar3;\n    if (iVar3 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar33 = local_34 * 4;\n    local_3c = (mpz_srcptr)n->_mp_d;\n    unaff_s2 = (undefined4 *)(uVar33 - 4);\n    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);\n    uVar14 = p_Var20->_mp_alloc;\n    if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    rop->_mp_size = 0;\n  }\n  else {\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar40) {\n    return;\n  }\n  pcVar44 = __gmpz_xor;\n  puVar40 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar41 = puVar40 + 0x68dd0;\n  puVar11 = puVar19 + -0x58;\n  puVar9 = puVar19 + -0x58;\n  *(uint *)(puVar19 + -0x10) = unaff_s6;\n  *(int *)(puVar19 + -0x24) = local_34;\n  piVar39 = *(int **)(puVar40 + 0x612d0);\n  ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size;\n  *(undefined1 **)(puVar19 + -8) = auStack_60;\n  *(undefined1 **)(puVar19 + -0xc) = unaff_s7;\n  *(int *)(puVar19 + -0x14) = unaff_s5;\n  *(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate;\n  *(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar19 + -0x20) = unaff_s2;\n  *(code **)(puVar19 + -4) = pcVar44;\n  *(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0;\n  *(undefined **)(puVar19 + -0x48) = puVar41;\n  *(undefined4 *)(puVar19 + -0x30) = 0;\n  ptVar37 = (tmp_reentrant_t *)n->_mp_size;\n  ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d;\n  ptVar38 = (tmp_reentrant_t *)n->_mp_d;\n  ptVar34 = ptVar15[1].next;\n  *(int *)(puVar19 + -0x2c) = *piVar39;\n  ptVar18 = (tmp_reentrant_t *)-(int)ptVar32;\n  if ((int)ptVar32 < 0) {\n    ptVar31 = ptVar32;\n    ptVar5 = ptVar36;\n    if (-1 < (int)ptVar37) goto LAB_0003630c;\n    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;\n    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }\n    ptVar22 = ptVar36->next;\n    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }\nLAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }\nLAB_00036608:\n    ptVar38 = ptVar29;\n    unaff_s0 = ptVar18;\n    if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }\n    pcVar44 = *(code **)(puVar41 + -0x7a84);\n    if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }\n    if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }\n    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);\n    do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);\n    pptVar7 = &ptVar18->next + (int)unaff_s0;\n    do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);\n  }\n  else {\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);\n  ptVar15->size = (size_t)unaff_s0;\n  ptVar37 = ptVar32;\n  puVar9 = puVar11;\n  if (ptVar18 != (tmp_reentrant_t *)0x0) {\n    (**(code **)(puVar41 + -0x7a2c))();\n    puVar41 = *(undefined **)(puVar19 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar19 + -0x2c) == *piVar39) {\n    return;\n  }\n  pcVar44 = *(code **)(puVar41 + -0x7b70);\n  uVar23 = 0x36bd8;\n  (*pcVar44)();\n  pcVar42 = pcVar44 + 0x68460;\n  *(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34;\n  *(code **)(puVar9 + -0x20) = pcVar42;\n  *(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37;\n  *(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar9 + -4) = uVar23;\n  *(tmp_reentrant_t **)(puVar9 + -8) = ptVar5;\n  *(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36;\n  sVar35 = ptVar25->size;\n  sVar6 = sVar35;\n  if ((int)sVar35 < 0) {\n    sVar6 = -sVar35;\n  }\n  if (ptVar25 != ptVar18) {\n    ptVar15 = ptVar25[2].next;\n    if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }\n    if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }\n    if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }\n    ptVar18[2].next = ptVar15;\n    if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }\n  }\n  ptVar18->size = sVar6;\n  return;\n}" primitive_type (function_declarator "__gmpz_urandomm(mpz_ptr rop,__gmp_randstate_struct *rstate,mpz_srcptr n)" identifier (parameter_list "(mpz_ptr rop,__gmp_randstate_struct *rstate,mpz_srcptr n)" ( (parameter_declaration "mpz_ptr rop" type_identifier identifier) , (parameter_declaration "__gmp_randstate_struct *rstate" type_identifier (pointer_declarator "*rstate" * identifier)) , (parameter_declaration "mpz_srcptr n" type_identifier identifier) ))) (compound_statement "{\n  mp_limb_t *pmVar1;\n  bool bVar2;\n  int iVar3;\n  mp_limb_t mVar4;\n  tmp_reentrant_t *ptVar5;\n  size_t sVar6;\n  tmp_reentrant_t **pptVar7;\n  undefined4 *puVar8;\n  undefined1 *puVar9;\n  uint *puVar10;\n  undefined1 *puVar11;\n  tmp_reentrant_t **pptVar12;\n  undefined4 *puVar13;\n  uint uVar14;\n  tmp_reentrant_t *ptVar15;\n  uint *puVar16;\n  tmp_reentrant_t *ptVar17;\n  tmp_reentrant_t *ptVar18;\n  undefined1 *puVar19;\n  mpz_srcptr p_Var20;\n  mpz_srcptr p_Var21;\n  tmp_reentrant_t *ptVar22;\n  undefined4 uVar23;\n  uint *puVar24;\n  tmp_reentrant_t *ptVar25;\n  tmp_reentrant_t *ptVar26;\n  undefined4 *puVar27;\n  tmp_reentrant_t **pptVar28;\n  tmp_reentrant_t *ptVar29;\n  int iVar30;\n  tmp_reentrant_t *ptVar31;\n  tmp_reentrant_t *unaff_s0;\n  tmp_reentrant_t *ptVar32;\n  undefined4 *unaff_s2;\n  uint uVar33;\n  tmp_reentrant_t *ptVar34;\n  size_t sVar35;\n  mpz_srcptr unaff_s3;\n  tmp_reentrant_t *ptVar36;\n  tmp_reentrant_t *ptVar37;\n  int unaff_s5;\n  tmp_reentrant_t *ptVar38;\n  uint unaff_s6;\n  int *piVar39;\n  undefined1 *unaff_s7;\n  undefined *puVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  undefined1 *puVar43;\n  code *pcVar44;\n  undefined1 auStack_60 [16];\n  mpz_srcptr local_3c;\n  int local_34;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar40 = PTR___stack_chk_guard_00097540;\n  puVar19 = auStack_60;\n  puVar43 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar3 = n->_mp_size;\n  if (iVar3 < 0) {\n    local_34 = -iVar3;\n    if (iVar3 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar33 = local_34 * 4;\n    local_3c = (mpz_srcptr)n->_mp_d;\n    unaff_s2 = (undefined4 *)(uVar33 - 4);\n    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);\n    uVar14 = p_Var20->_mp_alloc;\n    if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    rop->_mp_size = 0;\n  }\n  else {\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar40) {\n    return;\n  }\n  pcVar44 = __gmpz_xor;\n  puVar40 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar41 = puVar40 + 0x68dd0;\n  puVar11 = puVar19 + -0x58;\n  puVar9 = puVar19 + -0x58;\n  *(uint *)(puVar19 + -0x10) = unaff_s6;\n  *(int *)(puVar19 + -0x24) = local_34;\n  piVar39 = *(int **)(puVar40 + 0x612d0);\n  ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size;\n  *(undefined1 **)(puVar19 + -8) = auStack_60;\n  *(undefined1 **)(puVar19 + -0xc) = unaff_s7;\n  *(int *)(puVar19 + -0x14) = unaff_s5;\n  *(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate;\n  *(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar19 + -0x20) = unaff_s2;\n  *(code **)(puVar19 + -4) = pcVar44;\n  *(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0;\n  *(undefined **)(puVar19 + -0x48) = puVar41;\n  *(undefined4 *)(puVar19 + -0x30) = 0;\n  ptVar37 = (tmp_reentrant_t *)n->_mp_size;\n  ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d;\n  ptVar38 = (tmp_reentrant_t *)n->_mp_d;\n  ptVar34 = ptVar15[1].next;\n  *(int *)(puVar19 + -0x2c) = *piVar39;\n  ptVar18 = (tmp_reentrant_t *)-(int)ptVar32;\n  if ((int)ptVar32 < 0) {\n    ptVar31 = ptVar32;\n    ptVar5 = ptVar36;\n    if (-1 < (int)ptVar37) goto LAB_0003630c;\n    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;\n    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }\n    ptVar22 = ptVar36->next;\n    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }\nLAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }\nLAB_00036608:\n    ptVar38 = ptVar29;\n    unaff_s0 = ptVar18;\n    if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }\n    pcVar44 = *(code **)(puVar41 + -0x7a84);\n    if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }\n    if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }\n    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);\n    do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);\n    pptVar7 = &ptVar18->next + (int)unaff_s0;\n    do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);\n  }\n  else {\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);\n  ptVar15->size = (size_t)unaff_s0;\n  ptVar37 = ptVar32;\n  puVar9 = puVar11;\n  if (ptVar18 != (tmp_reentrant_t *)0x0) {\n    (**(code **)(puVar41 + -0x7a2c))();\n    puVar41 = *(undefined **)(puVar19 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar19 + -0x2c) == *piVar39) {\n    return;\n  }\n  pcVar44 = *(code **)(puVar41 + -0x7b70);\n  uVar23 = 0x36bd8;\n  (*pcVar44)();\n  pcVar42 = pcVar44 + 0x68460;\n  *(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34;\n  *(code **)(puVar9 + -0x20) = pcVar42;\n  *(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37;\n  *(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar9 + -4) = uVar23;\n  *(tmp_reentrant_t **)(puVar9 + -8) = ptVar5;\n  *(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36;\n  sVar35 = ptVar25->size;\n  sVar6 = sVar35;\n  if ((int)sVar35 < 0) {\n    sVar6 = -sVar35;\n  }\n  if (ptVar25 != ptVar18) {\n    ptVar15 = ptVar25[2].next;\n    if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }\n    if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }\n    if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }\n    ptVar18[2].next = ptVar15;\n    if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }\n  }\n  ptVar18->size = sVar6;\n  return;\n}" { (declaration "mp_limb_t *pmVar1;" type_identifier (pointer_declarator "*pmVar1" * identifier) ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "mp_limb_t mVar4;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar5;" type_identifier (pointer_declarator "*ptVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "tmp_reentrant_t **pptVar7;" type_identifier (pointer_declarator "**pptVar7" * (pointer_declarator "*pptVar7" * identifier)) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined1 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "tmp_reentrant_t **pptVar12;" type_identifier (pointer_declarator "**pptVar12" * (pointer_declarator "*pptVar12" * identifier)) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar15;" type_identifier (pointer_declarator "*ptVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "tmp_reentrant_t *ptVar17;" type_identifier (pointer_declarator "*ptVar17" * identifier) ;) (declaration "tmp_reentrant_t *ptVar18;" type_identifier (pointer_declarator "*ptVar18" * identifier) ;) (declaration "undefined1 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "mpz_srcptr p_Var20;" type_identifier identifier ;) (declaration "mpz_srcptr p_Var21;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar22;" type_identifier (pointer_declarator "*ptVar22" * identifier) ;) (declaration "undefined4 uVar23;" type_identifier identifier ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "tmp_reentrant_t *ptVar25;" type_identifier (pointer_declarator "*ptVar25" * identifier) ;) (declaration "tmp_reentrant_t *ptVar26;" type_identifier (pointer_declarator "*ptVar26" * identifier) ;) (declaration "undefined4 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "tmp_reentrant_t **pptVar28;" type_identifier (pointer_declarator "**pptVar28" * (pointer_declarator "*pptVar28" * identifier)) ;) (declaration "tmp_reentrant_t *ptVar29;" type_identifier (pointer_declarator "*ptVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "tmp_reentrant_t *ptVar31;" type_identifier (pointer_declarator "*ptVar31" * identifier) ;) (declaration "tmp_reentrant_t *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "tmp_reentrant_t *ptVar32;" type_identifier (pointer_declarator "*ptVar32" * identifier) ;) (declaration "undefined4 *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar34;" type_identifier (pointer_declarator "*ptVar34" * identifier) ;) (declaration "size_t sVar35;" primitive_type identifier ;) (declaration "mpz_srcptr unaff_s3;" type_identifier identifier ;) (declaration "tmp_reentrant_t *ptVar36;" type_identifier (pointer_declarator "*ptVar36" * identifier) ;) (declaration "tmp_reentrant_t *ptVar37;" type_identifier (pointer_declarator "*ptVar37" * identifier) ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "tmp_reentrant_t *ptVar38;" type_identifier (pointer_declarator "*ptVar38" * identifier) ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "int *piVar39;" primitive_type (pointer_declarator "*piVar39" * identifier) ;) (declaration "undefined1 *unaff_s7;" type_identifier (pointer_declarator "*unaff_s7" * identifier) ;) (declaration "undefined *puVar40;" type_identifier (pointer_declarator "*puVar40" * identifier) ;) (declaration "undefined *puVar41;" type_identifier (pointer_declarator "*puVar41" * identifier) ;) (declaration "code *pcVar42;" type_identifier (pointer_declarator "*pcVar42" * identifier) ;) (declaration "undefined1 *puVar43;" type_identifier (pointer_declarator "*puVar43" * identifier) ;) (declaration "code *pcVar44;" type_identifier (pointer_declarator "*pcVar44" * identifier) ;) (declaration "undefined1 auStack_60 [16];" type_identifier (array_declarator "auStack_60 [16]" identifier [ number_literal ]) ;) (declaration "mpz_srcptr local_3c;" type_identifier identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar40 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar40 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar19 = auStack_60;" (assignment_expression "puVar19 = auStack_60" identifier = identifier) ;) (expression_statement "puVar43 = auStack_60;" (assignment_expression "puVar43 = auStack_60" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = n->_mp_size;" (assignment_expression "iVar3 = n->_mp_size" identifier = (field_expression "n->_mp_size" identifier -> field_identifier)) ;) (if_statement "if (iVar3 < 0) {\n    local_34 = -iVar3;\n    if (iVar3 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar33 = local_34 * 4;\n    local_3c = (mpz_srcptr)n->_mp_d;\n    unaff_s2 = (undefined4 *)(uVar33 - 4);\n    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);\n    uVar14 = p_Var20->_mp_alloc;\n    if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    rop->_mp_size = 0;\n  }\n  else {\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    local_34 = -iVar3;\n    if (iVar3 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar33 = local_34 * 4;\n    local_3c = (mpz_srcptr)n->_mp_d;\n    unaff_s2 = (undefined4 *)(uVar33 - 4);\n    p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);\n    uVar14 = p_Var20->_mp_alloc;\n    if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    rop->_mp_size = 0;\n  }" { (expression_statement "local_34 = -iVar3;" (assignment_expression "local_34 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (if_statement "if (iVar3 == 0) goto LAB_000361ac;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000361ac;" goto statement_identifier ;)) (labeled_statement "LAB_00035f20:\n    uVar33 = local_34 * 4;" statement_identifier : (expression_statement "uVar33 = local_34 * 4;" (assignment_expression "uVar33 = local_34 * 4" identifier = (binary_expression "local_34 * 4" identifier * number_literal)) ;)) (expression_statement "local_3c = (mpz_srcptr)n->_mp_d;" (assignment_expression "local_3c = (mpz_srcptr)n->_mp_d" identifier = (cast_expression "(mpz_srcptr)n->_mp_d" ( (type_descriptor "mpz_srcptr" type_identifier) ) (field_expression "n->_mp_d" identifier -> field_identifier))) ;) (expression_statement "unaff_s2 = (undefined4 *)(uVar33 - 4);" (assignment_expression "unaff_s2 = (undefined4 *)(uVar33 - 4)" identifier = (cast_expression "(undefined4 *)(uVar33 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar33 - 4)" ( (binary_expression "uVar33 - 4" identifier - number_literal) )))) ;) (expression_statement "p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2);" (assignment_expression "p_Var20 = (mpz_srcptr)((int)local_3c + (int)unaff_s2)" identifier = (call_expression "(mpz_srcptr)((int)local_3c + (int)unaff_s2)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "((int)local_3c + (int)unaff_s2)" ( (binary_expression "(int)local_3c + (int)unaff_s2" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar14 = p_Var20->_mp_alloc;" (assignment_expression "uVar14 = p_Var20->_mp_alloc" identifier = (field_expression "p_Var20->_mp_alloc" identifier -> field_identifier)) ;) (if_statement "if ((uVar14 - 1 & uVar14) == 0) {\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }\n    else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }" if (parenthesized_expression "((uVar14 - 1 & uVar14) == 0)" ( (binary_expression "(uVar14 - 1 & uVar14) == 0" (parenthesized_expression "(uVar14 - 1 & uVar14)" ( (binary_expression "uVar14 - 1 & uVar14" (binary_expression "uVar14 - 1" identifier - number_literal) & identifier) )) == number_literal) )) (compound_statement "{\n      if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;\n      if (0xffff < uVar14) goto LAB_00035f90;\nLAB_00036130:\n      iVar3 = 0x20;\n      if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }\n      iVar30 = 9;\n      if (0xff >= uVar14) {\n        iVar30 = 1;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }" { (if_statement "if (local_3c < p_Var20) {\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }" if (parenthesized_expression "(local_3c < p_Var20)" ( (binary_expression "local_3c < p_Var20" identifier < identifier) )) (compound_statement "{\n        mVar4 = local_3c->_mp_alloc;\n        p_Var21 = local_3c;\n        while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }\n        goto LAB_00036124;\n      }" { (expression_statement "mVar4 = local_3c->_mp_alloc;" (assignment_expression "mVar4 = local_3c->_mp_alloc" identifier = (field_expression "local_3c->_mp_alloc" identifier -> field_identifier)) ;) (expression_statement "p_Var21 = local_3c;" (assignment_expression "p_Var21 = local_3c" identifier = identifier) ;) (while_statement "while (mVar4 == 0) {\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }" while (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n          if (p_Var20 <= p_Var21) goto LAB_00035f84;\n          mVar4 = *(mp_limb_t *)p_Var21;\n        }" { (expression_statement "p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;" (assignment_expression "p_Var21 = (mpz_srcptr)&p_Var21->_mp_size" identifier = (binary_expression "(mpz_srcptr)&p_Var21->_mp_size" (parenthesized_expression "(mpz_srcptr)" ( identifier )) & (field_expression "p_Var21->_mp_size" identifier -> field_identifier))) ;) (if_statement "if (p_Var20 <= p_Var21) goto LAB_00035f84;" if (parenthesized_expression "(p_Var20 <= p_Var21)" ( (binary_expression "p_Var20 <= p_Var21" identifier <= identifier) )) (goto_statement "goto LAB_00035f84;" goto statement_identifier ;)) (expression_statement "mVar4 = *(mp_limb_t *)p_Var21;" (assignment_expression "mVar4 = *(mp_limb_t *)p_Var21" identifier = (pointer_expression "*(mp_limb_t *)p_Var21" * (cast_expression "(mp_limb_t *)p_Var21" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (goto_statement "goto LAB_00036124;" goto statement_identifier ;) })) (labeled_statement "LAB_00035f84:\n      p_Var20 = (mpz_srcptr)&DAT_00000001;" statement_identifier : (expression_statement "p_Var20 = (mpz_srcptr)&DAT_00000001;" (assignment_expression "p_Var20 = (mpz_srcptr)&DAT_00000001" identifier = (binary_expression "(mpz_srcptr)&DAT_00000001" (parenthesized_expression "(mpz_srcptr)" ( identifier )) & identifier)) ;)) (if_statement "if (0xffff < uVar14) goto LAB_00035f90;" if (parenthesized_expression "(0xffff < uVar14)" ( (binary_expression "0xffff < uVar14" number_literal < identifier) )) (goto_statement "goto LAB_00035f90;" goto statement_identifier ;)) (labeled_statement "LAB_00036130:\n      iVar3 = 0x20;" statement_identifier : (expression_statement "iVar3 = 0x20;" (assignment_expression "iVar3 = 0x20" identifier = number_literal) ;)) (if_statement "if (0xff < uVar14) {\n        iVar3 = 0x18;\n      }" if (parenthesized_expression "(0xff < uVar14)" ( (binary_expression "0xff < uVar14" number_literal < identifier) )) (compound_statement "{\n        iVar3 = 0x18;\n      }" { (expression_statement "iVar3 = 0x18;" (assignment_expression "iVar3 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar30 = 9;" (assignment_expression "iVar30 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar14) {\n        iVar30 = 1;\n      }" if (parenthesized_expression "(0xff >= uVar14)" ( (binary_expression "0xff >= uVar14" number_literal >= identifier) )) (compound_statement "{\n        iVar30 = 1;\n      }" { (expression_statement "iVar30 = 1;" (assignment_expression "iVar30 = 1" identifier = number_literal) ;) })) (expression_statement "ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));" (assignment_expression "ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" identifier = (cast_expression "(tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30)" identifier + (parenthesized_expression "(uVar14 >> iVar30)" ( (binary_expression "uVar14 >> iVar30" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" identifier = (cast_expression "(tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" ( (binary_expression "(local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20" (parenthesized_expression "(local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next))" ( (binary_expression "local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar3 - (uint)*(byte *)&ptVar15->next)" ( (binary_expression "iVar3 - (uint)*(byte *)&ptVar15->next" identifier - (binary_expression "(uint)*(byte *)&ptVar15->next" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)&ptVar15->next" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar15->next" & (field_expression "ptVar15->next" identifier -> field_identifier))))) ))) )) - (cast_expression "(int)p_Var20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }" else (compound_statement "{\nLAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;\n      if (uVar14 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar3 = 0x10;\n      if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }\n      iVar30 = 0x19;\n      if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }\n      ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));\n      unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);\n    }" { (labeled_statement "LAB_00036124:\n      p_Var20 = (mpz_srcptr)0x0;" statement_identifier : (expression_statement "p_Var20 = (mpz_srcptr)0x0;" (assignment_expression "p_Var20 = (mpz_srcptr)0x0" identifier = (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) ;)) (if_statement "if (uVar14 < 0x10000) goto LAB_00036130;" if (parenthesized_expression "(uVar14 < 0x10000)" ( (binary_expression "uVar14 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_00036130;" goto statement_identifier ;)) (labeled_statement "LAB_00035f90:\n      iVar3 = 0x10;" statement_identifier : (expression_statement "iVar3 = 0x10;" (assignment_expression "iVar3 = 0x10" identifier = number_literal) ;)) (if_statement "if (0xffffff < uVar14) {\n        iVar3 = 8;\n      }" if (parenthesized_expression "(0xffffff < uVar14)" ( (binary_expression "0xffffff < uVar14" number_literal < identifier) )) (compound_statement "{\n        iVar3 = 8;\n      }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) })) (expression_statement "iVar30 = 0x19;" (assignment_expression "iVar30 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar14) {\n        iVar30 = 0x11;\n      }" if (parenthesized_expression "(0xffffff >= uVar14)" ( (binary_expression "0xffffff >= uVar14" number_literal >= identifier) )) (compound_statement "{\n        iVar30 = 0x11;\n      }" { (expression_statement "iVar30 = 0x11;" (assignment_expression "iVar30 = 0x11" identifier = number_literal) ;) })) (expression_statement "ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30));" (assignment_expression "ptVar15 = (tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" identifier = (cast_expression "(tmp_reentrant_t *)(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar14 >> iVar30)" identifier + (parenthesized_expression "(uVar14 >> iVar30)" ( (binary_expression "uVar14 >> iVar30" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" identifier = (cast_expression "(tmp_reentrant_t *)\n                 ((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20)" ( (binary_expression "(local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)) - (int)p_Var20" (parenthesized_expression "(local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next))" ( (binary_expression "local_34 * 0x20 - (iVar3 - (uint)*(byte *)&ptVar15->next)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar3 - (uint)*(byte *)&ptVar15->next)" ( (binary_expression "iVar3 - (uint)*(byte *)&ptVar15->next" identifier - (binary_expression "(uint)*(byte *)&ptVar15->next" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)&ptVar15->next" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar15->next" & (field_expression "ptVar15->next" identifier -> field_identifier))))) ))) )) - (cast_expression "(int)p_Var20" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (if_statement "if (unaff_s0 != (tmp_reentrant_t *)0x0) {\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" if (parenthesized_expression "(unaff_s0 != (tmp_reentrant_t *)0x0)" ( (binary_expression "unaff_s0 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __tmp_marker = (tmp_reentrant_t *)0x0;\n      unaff_s6 = uVar33;\n      puVar19 = auStack_60;\n      if (n == rop) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" { (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s6 = uVar33;" (assignment_expression "unaff_s6 = uVar33" identifier = identifier) ;) (expression_statement "puVar19 = auStack_60;" (assignment_expression "puVar19 = auStack_60" identifier = identifier) ;) (if_statement "if (n == rop) goto LAB_000361b8;" if (parenthesized_expression "(n == rop)" ( (binary_expression "n == rop" identifier == identifier) )) (goto_statement "goto LAB_000361b8;" goto statement_identifier ;)) (goto_statement "goto LAB_00035fe8;" goto statement_identifier ;) })) (expression_statement "rop->_mp_size = 0;" (assignment_expression "rop->_mp_size = 0" (field_expression "rop->_mp_size" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    local_34 = iVar3;\n    if (iVar3 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }\n    iVar3 = local_34 + -1;\n    mVar4 = local_3c->_mp_alloc;\n    p_Var21 = p_Var20;\n    puVar19 = puVar43;\n    if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }\nLAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }\n    piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);\n    unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);\n    unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);\n    *piVar39 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar3 = 0x50;\n    do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    p_Var20 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    n = local_3c;\nLAB_00036094:\n    iVar30 = *piVar39;\n    iVar3 = local_34;\n    while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    rop->_mp_size = iVar3;\n    ptVar15 = __tmp_marker;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "local_34 = iVar3;" (assignment_expression "local_34 = iVar3" identifier = identifier) ;) (if_statement "if (iVar3 != 0) goto LAB_00035f20;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00035f20;" goto statement_identifier ;)) (labeled_statement "LAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }" statement_identifier : (if_statement "if (unaff_s6 < 0x7f01) {\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }\n    else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }" if (parenthesized_expression "(unaff_s6 < 0x7f01)" ( (binary_expression "unaff_s6 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);\n      puVar43 = auStack_60 + iVar3;\n      p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);\n    }" { (expression_statement "iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8);" (assignment_expression "iVar3 = -((uint)((int)unaff_s2 + 0xb) & 0xfffffff8)" identifier = (unary_expression "-((uint)((int)unaff_s2 + 0xb) & 0xfffffff8)" - (parenthesized_expression "((uint)((int)unaff_s2 + 0xb) & 0xfffffff8)" ( (binary_expression "(uint)((int)unaff_s2 + 0xb) & 0xfffffff8" (call_expression "(uint)((int)unaff_s2 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)unaff_s2 + 0xb)" ( (binary_expression "(int)unaff_s2 + 0xb" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) & number_literal) )))) ;) (expression_statement "puVar43 = auStack_60 + iVar3;" (assignment_expression "puVar43 = auStack_60 + iVar3" identifier = (binary_expression "auStack_60 + iVar3" identifier + identifier)) ;) (expression_statement "p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3);" (assignment_expression "p_Var20 = (mpz_srcptr)(&stack0xffffffb0 + iVar3)" identifier = (call_expression "(mpz_srcptr)(&stack0xffffffb0 + iVar3)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(&stack0xffffffb0 + iVar3)" ( (binary_expression "&stack0xffffffb0 + iVar3" (pointer_expression "&stack0xffffffb0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }" else (compound_statement "{\n      p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);\n    }" { (expression_statement "p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6);" (assignment_expression "p_Var20 = (mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6)" identifier = (call_expression "(mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,unaff_s6)" (call_expression "(mpz_srcptr)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(&__tmp_marker,unaff_s6)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier )))) ;) })))) (expression_statement "iVar3 = local_34 + -1;" (assignment_expression "iVar3 = local_34 + -1" identifier = (binary_expression "local_34 + -1" identifier + number_literal)) ;) (expression_statement "mVar4 = local_3c->_mp_alloc;" (assignment_expression "mVar4 = local_3c->_mp_alloc" identifier = (field_expression "local_3c->_mp_alloc" identifier -> field_identifier)) ;) (expression_statement "p_Var21 = p_Var20;" (assignment_expression "p_Var21 = p_Var20" identifier = identifier) ;) (expression_statement "puVar19 = puVar43;" (assignment_expression "puVar19 = puVar43" identifier = identifier) ;) (if_statement "if (iVar3 == 0) {\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }\n    else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      p_Var20->_mp_alloc = mVar4;\n      local_3c = p_Var20;\n    }" { (expression_statement "p_Var20->_mp_alloc = mVar4;" (assignment_expression "p_Var20->_mp_alloc = mVar4" (field_expression "p_Var20->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "local_3c = p_Var20;" (assignment_expression "local_3c = p_Var20" identifier = identifier) ;) }) (else_clause "else {\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }" else (compound_statement "{\n      do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);\n      *(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;\n      local_3c = p_Var20;\n    }" { (do_statement "do {\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      } while (iVar3 != 0);" do (compound_statement "{\n        local_3c = (mpz_srcptr)&local_3c->_mp_size;\n        p_Var21->_mp_alloc = mVar4;\n        iVar3 = iVar3 + -1;\n        mVar4 = *(mp_limb_t *)local_3c;\n        p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;\n      }" { (expression_statement "local_3c = (mpz_srcptr)&local_3c->_mp_size;" (assignment_expression "local_3c = (mpz_srcptr)&local_3c->_mp_size" identifier = (binary_expression "(mpz_srcptr)&local_3c->_mp_size" (parenthesized_expression "(mpz_srcptr)" ( identifier )) & (field_expression "local_3c->_mp_size" identifier -> field_identifier))) ;) (expression_statement "p_Var21->_mp_alloc = mVar4;" (assignment_expression "p_Var21->_mp_alloc = mVar4" (field_expression "p_Var21->_mp_alloc" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "mVar4 = *(mp_limb_t *)local_3c;" (assignment_expression "mVar4 = *(mp_limb_t *)local_3c" identifier = (pointer_expression "*(mp_limb_t *)local_3c" * (cast_expression "(mp_limb_t *)local_3c" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "p_Var21 = (mpz_srcptr)&p_Var21->_mp_size;" (assignment_expression "p_Var21 = (mpz_srcptr)&p_Var21->_mp_size" identifier = (binary_expression "(mpz_srcptr)&p_Var21->_mp_size" (parenthesized_expression "(mpz_srcptr)" ( identifier )) & (field_expression "p_Var21->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) (expression_statement "*(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4;" (assignment_expression "*(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2) = mVar4" (pointer_expression "*(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2)" * (cast_expression "(mp_limb_t *)((int)&p_Var20->_mp_alloc + (int)unaff_s2)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var20->_mp_alloc + (int)unaff_s2)" ( (binary_expression "(int)&p_Var20->_mp_alloc + (int)unaff_s2" (cast_expression "(int)&p_Var20->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var20->_mp_alloc" & (field_expression "p_Var20->_mp_alloc" identifier -> field_identifier))) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_3c = p_Var20;" (assignment_expression "local_3c = p_Var20" identifier = identifier) ;) }))) (labeled_statement "LAB_00035fe8:\n    if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }" statement_identifier : (if_statement "if (rop->_mp_alloc < local_34) {\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }\n    else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }" if (parenthesized_expression "(rop->_mp_alloc < local_34)" ( (binary_expression "rop->_mp_alloc < local_34" (field_expression "rop->_mp_alloc" identifier -> field_identifier) < identifier) )) (compound_statement "{\n      unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);\n    }" { (expression_statement "unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34);" (assignment_expression "unaff_s3 = (mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34)" identifier = (call_expression "(mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)(rop,local_34)" (call_expression "(mpz_srcptr)(*(code *)PTR___gmpz_realloc_000975bc)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) (argument_list "(rop,local_34)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }" else (compound_statement "{\n      unaff_s3 = (mpz_srcptr)rop->_mp_d;\n    }" { (expression_statement "unaff_s3 = (mpz_srcptr)rop->_mp_d;" (assignment_expression "unaff_s3 = (mpz_srcptr)rop->_mp_d" identifier = (cast_expression "(mpz_srcptr)rop->_mp_d" ( (type_descriptor "mpz_srcptr" type_identifier) ) (field_expression "rop->_mp_d" identifier -> field_identifier))) ;) })))) (expression_statement "piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2);" (assignment_expression "piVar39 = (int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2)" identifier = (cast_expression "(int *)((int)&unaff_s3->_mp_alloc + (int)unaff_s2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s3->_mp_alloc + (int)unaff_s2)" ( (binary_expression "(int)&unaff_s3->_mp_alloc + (int)unaff_s2" (cast_expression "(int)&unaff_s3->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s3->_mp_alloc" & (field_expression "unaff_s3->_mp_alloc" identifier -> field_identifier))) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6);" (assignment_expression "unaff_s7 = (undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6)" identifier = (cast_expression "(undefined1 *)((int)&unaff_s3->_mp_alloc + unaff_s6)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s3->_mp_alloc + unaff_s6)" ( (binary_expression "(int)&unaff_s3->_mp_alloc + unaff_s6" (cast_expression "(int)&unaff_s3->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s3->_mp_alloc" & (field_expression "unaff_s3->_mp_alloc" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6);" (assignment_expression "unaff_s2 = (undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6)" identifier = (cast_expression "(undefined4 *)((int)&local_3c->_mp_alloc + unaff_s6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_3c->_mp_alloc + unaff_s6)" ( (binary_expression "(int)&local_3c->_mp_alloc + unaff_s6" (cast_expression "(int)&local_3c->_mp_alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_3c->_mp_alloc" & (field_expression "local_3c->_mp_alloc" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "*piVar39 = 0;" (assignment_expression "*piVar39 = 0" (pointer_expression "*piVar39" * identifier) = number_literal) ;) (expression_statement "unaff_s6 = 0xffffffff;" (assignment_expression "unaff_s6 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar3 = 0x50;" (assignment_expression "iVar3 = 0x50" identifier = number_literal) ;) (do_statement "do {\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);" do (compound_statement "{\n      unaff_s5 = iVar3;\n      (**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);\n      iVar3 = local_34;\n      puVar11 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);\n      p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);\n      if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar3 = unaff_s5 + -1;\n    }" { (expression_statement "unaff_s5 = iVar3;" (assignment_expression "unaff_s5 = iVar3" identifier = identifier) ;) (expression_statement "(**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0);" (call_expression "(**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))(rstate,unaff_s3,unaff_s0)" (parenthesized_expression "(**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4))" ( (pointer_expression "**(code **)((int)(rstate->_mp_algdata)._mp_lc + 4)" * (pointer_expression "*(code **)((int)(rstate->_mp_algdata)._mp_lc + 4)" * (cast_expression "(code **)((int)(rstate->_mp_algdata)._mp_lc + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)(rstate->_mp_algdata)._mp_lc + 4)" ( (binary_expression "(int)(rstate->_mp_algdata)._mp_lc + 4" (cast_expression "(int)(rstate->_mp_algdata)._mp_lc" ( (type_descriptor "int" primitive_type) ) (field_expression "(rstate->_mp_algdata)._mp_lc" (parenthesized_expression "(rstate->_mp_algdata)" ( (field_expression "rstate->_mp_algdata" identifier -> field_identifier) )) . field_identifier)) + number_literal) ))))) )) (argument_list "(rstate,unaff_s3,unaff_s0)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = local_34;" (assignment_expression "iVar3 = local_34" identifier = identifier) ;) (expression_statement "puVar11 = unaff_s7;" (assignment_expression "puVar11 = unaff_s7" identifier = identifier) ;) (expression_statement "puVar8 = unaff_s2;" (assignment_expression "puVar8 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      } while ((mpz_srcptr)*puVar27 == n);" do (compound_statement "{\n        iVar3 = iVar3 + -1;\n        puVar8 = puVar8 + -1;\n        if (iVar3 == -1) goto joined_r0x00036070;\n        puVar27 = (undefined4 *)(puVar11 + -4);\n        n = (mpz_srcptr)*puVar8;\n        puVar11 = puVar11 + -4;\n      }" { (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (if_statement "if (iVar3 == -1) goto joined_r0x00036070;" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (goto_statement "goto joined_r0x00036070;" goto statement_identifier ;)) (expression_statement "puVar27 = (undefined4 *)(puVar11 + -4);" (assignment_expression "puVar27 = (undefined4 *)(puVar11 + -4)" identifier = (cast_expression "(undefined4 *)(puVar11 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + -4)" ( (binary_expression "puVar11 + -4" identifier + number_literal) )))) ;) (expression_statement "n = (mpz_srcptr)*puVar8;" (assignment_expression "n = (mpz_srcptr)*puVar8" identifier = (binary_expression "(mpz_srcptr)*puVar8" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) ;) (expression_statement "puVar11 = puVar11 + -4;" (assignment_expression "puVar11 = puVar11 + -4" identifier = (binary_expression "puVar11 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "((mpz_srcptr)*puVar27 == n)" ( (binary_expression "(mpz_srcptr)*puVar27 == n" (binary_expression "(mpz_srcptr)*puVar27" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier) == identifier) )) ;) (expression_statement "p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27);" (assignment_expression "p_Var20 = (mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27)" identifier = (call_expression "(mpz_srcptr)(uint)(n < (mpz_srcptr)*puVar27)" (call_expression "(mpz_srcptr)(uint)" (parenthesized_expression "(mpz_srcptr)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(n < (mpz_srcptr)*puVar27)" ( (binary_expression "n < (mpz_srcptr)*puVar27" identifier < (binary_expression "(mpz_srcptr)*puVar27" (parenthesized_expression "(mpz_srcptr)" ( identifier )) * identifier)) )))) ;) (if_statement "if (p_Var20 == (mpz_srcptr)0x0) goto LAB_00036094;" if (parenthesized_expression "(p_Var20 == (mpz_srcptr)0x0)" ( (binary_expression "p_Var20 == (mpz_srcptr)0x0" identifier == (cast_expression "(mpz_srcptr)0x0" ( (type_descriptor "mpz_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_00036094;" goto statement_identifier ;)) (labeled_statement "joined_r0x00036070:\n      iVar3 = unaff_s5 + -1;" statement_identifier : (expression_statement "iVar3 = unaff_s5 + -1;" (assignment_expression "iVar3 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(unaff_s5 + -1 != 0)" ( (binary_expression "unaff_s5 + -1 != 0" (binary_expression "unaff_s5 + -1" identifier + number_literal) != number_literal) )) ;) (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) (expression_statement "p_Var20 = unaff_s3;" (assignment_expression "p_Var20 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);" (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,unaff_s3,local_3c,local_34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "n = local_3c;" (assignment_expression "n = local_3c" identifier = identifier) ;) (labeled_statement "LAB_00036094:\n    iVar30 = *piVar39;" statement_identifier : (expression_statement "iVar30 = *piVar39;" (assignment_expression "iVar30 = *piVar39" identifier = (pointer_expression "*piVar39" * identifier)) ;)) (expression_statement "iVar3 = local_34;" (assignment_expression "iVar3 = local_34" identifier = identifier) ;) (while_statement "while ((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))) {\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" while (parenthesized_expression "((iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0)))" ( (parenthesized_expression "(iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0))" ( (binary_expression "iVar30 == 0 && (iVar3 = iVar3 + -1, iVar3 != 0)" (binary_expression "iVar30 == 0" identifier == number_literal) && (parenthesized_expression "(iVar3 = iVar3 + -1, iVar3 != 0)" ( (comma_expression "iVar3 = iVar3 + -1, iVar3 != 0" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n      iVar30 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" { (expression_statement "iVar30 = *(int *)(unaff_s7 + -8);" (assignment_expression "iVar30 = *(int *)(unaff_s7 + -8)" identifier = (pointer_expression "*(int *)(unaff_s7 + -8)" * (cast_expression "(int *)(unaff_s7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7 + -8)" ( (binary_expression "unaff_s7 + -8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = unaff_s7 + -4;" (assignment_expression "unaff_s7 = unaff_s7 + -4" identifier = (binary_expression "unaff_s7 + -4" identifier + number_literal)) ;) })) (expression_statement "rop->_mp_size = iVar3;" (assignment_expression "rop->_mp_size = iVar3" (field_expression "rop->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar15 = __tmp_marker;" (assignment_expression "ptVar15 = __tmp_marker" identifier = identifier) ;) (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar40) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar40)" ( (binary_expression "local_2c == *(int *)puVar40" identifier == (pointer_expression "*(int *)puVar40" * (cast_expression "(int *)puVar40" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar44 = __gmpz_xor;" (assignment_expression "pcVar44 = __gmpz_xor" identifier = identifier) ;) (expression_statement "puVar40 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar40 = 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 "puVar41 = puVar40 + 0x68dd0;" (assignment_expression "puVar41 = puVar40 + 0x68dd0" identifier = (binary_expression "puVar40 + 0x68dd0" identifier + number_literal)) ;) (expression_statement "puVar11 = puVar19 + -0x58;" (assignment_expression "puVar11 = puVar19 + -0x58" identifier = (binary_expression "puVar19 + -0x58" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar19 + -0x58;" (assignment_expression "puVar9 = puVar19 + -0x58" identifier = (binary_expression "puVar19 + -0x58" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar19 + -0x10) = unaff_s6;" (assignment_expression "*(uint *)(puVar19 + -0x10) = unaff_s6" (pointer_expression "*(uint *)(puVar19 + -0x10)" * (cast_expression "(uint *)(puVar19 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x10)" ( (binary_expression "puVar19 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x24) = local_34;" (assignment_expression "*(int *)(puVar19 + -0x24) = local_34" (pointer_expression "*(int *)(puVar19 + -0x24)" * (cast_expression "(int *)(puVar19 + -0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x24)" ( (binary_expression "puVar19 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar39 = *(int **)(puVar40 + 0x612d0);" (assignment_expression "piVar39 = *(int **)(puVar40 + 0x612d0)" identifier = (pointer_expression "*(int **)(puVar40 + 0x612d0)" * (cast_expression "(int **)(puVar40 + 0x612d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar40 + 0x612d0)" ( (binary_expression "puVar40 + 0x612d0" identifier + number_literal) ))))) ;) (expression_statement "ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size;" (assignment_expression "ptVar32 = (tmp_reentrant_t *)p_Var20->_mp_size" identifier = (cast_expression "(tmp_reentrant_t *)p_Var20->_mp_size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var20->_mp_size" identifier -> field_identifier))) ;) (expression_statement "*(undefined1 **)(puVar19 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar19 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar19 + -8)" * (cast_expression "(undefined1 **)(puVar19 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -8)" ( (binary_expression "puVar19 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar19 + -0xc) = unaff_s7;" (assignment_expression "*(undefined1 **)(puVar19 + -0xc) = unaff_s7" (pointer_expression "*(undefined1 **)(puVar19 + -0xc)" * (cast_expression "(undefined1 **)(puVar19 + -0xc)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0xc)" ( (binary_expression "puVar19 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar19 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar19 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar19 + -0x14)" * (cast_expression "(int *)(puVar19 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x14)" ( (binary_expression "puVar19 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate;" (assignment_expression "*(__gmp_randstate_struct **)(puVar19 + -0x18) = rstate" (pointer_expression "*(__gmp_randstate_struct **)(puVar19 + -0x18)" * (cast_expression "(__gmp_randstate_struct **)(puVar19 + -0x18)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x18)" ( (binary_expression "puVar19 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3;" (assignment_expression "*(mpz_srcptr *)(puVar19 + -0x1c) = unaff_s3" (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x1c)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x1c)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x1c)" ( (binary_expression "puVar19 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar19 + -0x20) = unaff_s2;" (assignment_expression "*(undefined4 **)(puVar19 + -0x20) = unaff_s2" (pointer_expression "*(undefined4 **)(puVar19 + -0x20)" * (cast_expression "(undefined4 **)(puVar19 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x20)" ( (binary_expression "puVar19 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar19 + -4) = pcVar44;" (assignment_expression "*(code **)(puVar19 + -4) = pcVar44" (pointer_expression "*(code **)(puVar19 + -4)" * (cast_expression "(code **)(puVar19 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -4)" ( (binary_expression "puVar19 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x28) = unaff_s0" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x28)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x28)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x28)" ( (binary_expression "puVar19 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar19 + -0x48) = puVar41;" (assignment_expression "*(undefined **)(puVar19 + -0x48) = puVar41" (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar19 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar19 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar19 + -0x30)" * (cast_expression "(undefined4 *)(puVar19 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "ptVar37 = (tmp_reentrant_t *)n->_mp_size;" (assignment_expression "ptVar37 = (tmp_reentrant_t *)n->_mp_size" identifier = (cast_expression "(tmp_reentrant_t *)n->_mp_size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "n->_mp_size" identifier -> field_identifier))) ;) (expression_statement "ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d;" (assignment_expression "ptVar36 = (tmp_reentrant_t *)p_Var20->_mp_d" identifier = (cast_expression "(tmp_reentrant_t *)p_Var20->_mp_d" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var20->_mp_d" identifier -> field_identifier))) ;) (expression_statement "ptVar38 = (tmp_reentrant_t *)n->_mp_d;" (assignment_expression "ptVar38 = (tmp_reentrant_t *)n->_mp_d" identifier = (cast_expression "(tmp_reentrant_t *)n->_mp_d" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "n->_mp_d" identifier -> field_identifier))) ;) (expression_statement "ptVar34 = ptVar15[1].next;" (assignment_expression "ptVar34 = ptVar15[1].next" identifier = (field_expression "ptVar15[1].next" (subscript_expression "ptVar15[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "*(int *)(puVar19 + -0x2c) = *piVar39;" (assignment_expression "*(int *)(puVar19 + -0x2c) = *piVar39" (pointer_expression "*(int *)(puVar19 + -0x2c)" * (cast_expression "(int *)(puVar19 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x2c)" ( (binary_expression "puVar19 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar39" * identifier)) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)-(int)ptVar32;" (assignment_expression "ptVar18 = (tmp_reentrant_t *)-(int)ptVar32" identifier = (cast_expression "(tmp_reentrant_t *)-(int)ptVar32" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)ptVar32" - (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if ((int)ptVar32 < 0) {\n    ptVar31 = ptVar32;\n    ptVar5 = ptVar36;\n    if (-1 < (int)ptVar37) goto LAB_0003630c;\n    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;\n    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }\n    ptVar22 = ptVar36->next;\n    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }\nLAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }\nLAB_00036608:\n    ptVar38 = ptVar29;\n    unaff_s0 = ptVar18;\n    if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }\n    pcVar44 = *(code **)(puVar41 + -0x7a84);\n    if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }\n    if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }\n    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);\n    do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);\n    pptVar7 = &ptVar18->next + (int)unaff_s0;\n    do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);\n  }\n  else {\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }" if (parenthesized_expression "((int)ptVar32 < 0)" ( (binary_expression "(int)ptVar32 < 0" (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    ptVar31 = ptVar32;\n    ptVar5 = ptVar36;\n    if (-1 < (int)ptVar37) goto LAB_0003630c;\n    ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;\n    uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }\n    ptVar22 = ptVar36->next;\n    ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }\nLAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n    if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }\nLAB_00036608:\n    ptVar38 = ptVar29;\n    unaff_s0 = ptVar18;\n    if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }\n    pcVar44 = *(code **)(puVar41 + -0x7a84);\n    if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }\n    if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }\n    ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);\n    do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);\n    pptVar7 = &ptVar18->next + (int)unaff_s0;\n    do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);\n  }" { (expression_statement "ptVar31 = ptVar32;" (assignment_expression "ptVar31 = ptVar32" identifier = identifier) ;) (expression_statement "ptVar5 = ptVar36;" (assignment_expression "ptVar5 = ptVar36" identifier = identifier) ;) (if_statement "if (-1 < (int)ptVar37) goto LAB_0003630c;" if (parenthesized_expression "(-1 < (int)ptVar37)" ( (binary_expression "-1 < (int)ptVar37" number_literal < (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0003630c;" goto statement_identifier ;)) (expression_statement "ptVar34 = (tmp_reentrant_t *)-(int)ptVar37;" (assignment_expression "ptVar34 = (tmp_reentrant_t *)-(int)ptVar37" identifier = (cast_expression "(tmp_reentrant_t *)-(int)ptVar37" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)ptVar37" - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "uVar14 = ((int)ptVar18 - (int)ptVar37) * 4;" (assignment_expression "uVar14 = ((int)ptVar18 - (int)ptVar37) * 4" identifier = (binary_expression "((int)ptVar18 - (int)ptVar37) * 4" (parenthesized_expression "((int)ptVar18 - (int)ptVar37)" ( (binary_expression "(int)ptVar18 - (int)ptVar37" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (if_statement "if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }" if (parenthesized_expression "(uVar14 < 0x7f01)" ( (binary_expression "uVar14 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      puVar11 = puVar19 + iVar3 + -0x58;\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      ptVar5 = ptVar18;\n      ptVar25 = ptVar34;\n    }" { (expression_statement "iVar3 = -(uVar14 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar14 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar14 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar14 + 7 & 0xfffffff8)" ( (binary_expression "uVar14 + 7 & 0xfffffff8" (binary_expression "uVar14 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar11 = puVar19 + iVar3 + -0x58;" (assignment_expression "puVar11 = puVar19 + iVar3 + -0x58" identifier = (binary_expression "puVar19 + iVar3 + -0x58" (binary_expression "puVar19 + iVar3" identifier + identifier) + number_literal)) ;) (expression_statement "ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);" (assignment_expression "ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48)" identifier = (cast_expression "(tmp_reentrant_t *)(puVar19 + iVar3 + -0x48)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + iVar3 + -0x48)" ( (binary_expression "puVar19 + iVar3 + -0x48" (binary_expression "puVar19 + iVar3" identifier + identifier) + number_literal) )))) ;) (expression_statement "ptVar5 = ptVar18;" (assignment_expression "ptVar5 = ptVar18" identifier = identifier) ;) (expression_statement "ptVar25 = ptVar34;" (assignment_expression "ptVar25 = ptVar34" identifier = identifier) ;) }) (else_clause "else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }" else (compound_statement "{\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n      ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n    }" { (expression_statement "pcVar44 = *(code **)(puVar40 + 0x61080);" (assignment_expression "pcVar44 = *(code **)(puVar40 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar40 + 0x61080)" * (cast_expression "(code **)(puVar40 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar40 + 0x61080)" ( (binary_expression "puVar40 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar34" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x38)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x38)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar18" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30);" (assignment_expression "ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30)" identifier = (cast_expression "(tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar44)(puVar19 + -0x30)" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38);" (assignment_expression "ptVar25 = *(tmp_reentrant_t **)(puVar19 + -0x38)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x38)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x38)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34);" (assignment_expression "ptVar5 = *(tmp_reentrant_t **)(puVar19 + -0x34)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "ptVar22 = ptVar36->next;" (assignment_expression "ptVar22 = ptVar36->next" identifier = (field_expression "ptVar36->next" identifier -> field_identifier)) ;) (expression_statement "ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5);" (assignment_expression "ptVar29 = (tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5)" identifier = (cast_expression "(tmp_reentrant_t *)(&ptVar31->next + (int)ptVar5)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&ptVar31->next + (int)ptVar5)" ( (binary_expression "&ptVar31->next + (int)ptVar5" (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);" (assignment_expression "ptVar31->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" (field_expression "ptVar31->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar22[-1].size + 3)" ( (binary_expression "(int)&ptVar22[-1].size + 3" (cast_expression "(int)&ptVar22[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar22[-1].size" & (field_expression "ptVar22[-1].size" (subscript_expression "ptVar22[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }\n    else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }" if (parenthesized_expression "(ptVar22 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar22 == (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      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      ptVar22 = ptVar38->next;\n    }" { (if_statement "if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }" if (parenthesized_expression "(ptVar32 != (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar32 != (tmp_reentrant_t *)0xffffffff" identifier != (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }\n      }" { (expression_statement "sVar6 = ptVar36->size;" (assignment_expression "sVar6 = ptVar36->size" identifier = (field_expression "ptVar36->size" identifier -> field_identifier)) ;) (expression_statement "ptVar31->size = sVar6 - 1;" (assignment_expression "ptVar31->size = sVar6 - 1" (field_expression "ptVar31->size" identifier -> field_identifier) = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (if_statement "if (sVar6 == 0) {\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" if (parenthesized_expression "(sVar6 == 0)" ( (binary_expression "sVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          ptVar17 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar31 + 1;\n          do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }" { (expression_statement "ptVar17 = ptVar36 + 1;" (assignment_expression "ptVar17 = ptVar36 + 1" identifier = (binary_expression "ptVar36 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "ptVar22 = ptVar31 + 1;" (assignment_expression "ptVar22 = ptVar31 + 1" identifier = (binary_expression "ptVar31 + 1" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);" do (compound_statement "{\n            if ((int)ptVar5 <= iVar3) goto LAB_000365a4;\n            ptVar26 = ptVar17->next;\n            iVar3 = iVar3 + 1;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          }" { (if_statement "if ((int)ptVar5 <= iVar3) goto LAB_000365a4;" if (parenthesized_expression "((int)ptVar5 <= iVar3)" ( (binary_expression "(int)ptVar5 <= iVar3" (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "ptVar26 = ptVar17->next;" (assignment_expression "ptVar26 = ptVar17->next" identifier = (field_expression "ptVar17->next" identifier -> field_identifier)) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar17 = (tmp_reentrant_t *)&ptVar17->size;" (assignment_expression "ptVar17 = (tmp_reentrant_t *)&ptVar17->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar17->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar17->size" & (field_expression "ptVar17->size" identifier -> field_identifier)))) ;) (expression_statement "ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);" (assignment_expression "ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3)" (field_expression "ptVar22->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar26[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar26[-1].size + 3)" ( (binary_expression "(int)&ptVar26[-1].size + 3" (cast_expression "(int)&ptVar26[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar26[-1].size" & (field_expression "ptVar26[-1].size" (subscript_expression "ptVar26[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar22 = (tmp_reentrant_t *)&ptVar22->size;" (assignment_expression "ptVar22 = (tmp_reentrant_t *)&ptVar22->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar22->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar22->size" & (field_expression "ptVar22->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(ptVar26 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar26 == (tmp_reentrant_t *)0x0" identifier == (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (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 ((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }" if (parenthesized_expression "((ptVar31 != ptVar36) && (iVar3 < (int)ptVar5))" ( (binary_expression "(ptVar31 != ptVar36) && (iVar3 < (int)ptVar5)" (parenthesized_expression "(ptVar31 != ptVar36)" ( (binary_expression "ptVar31 != ptVar36" identifier != identifier) )) && (parenthesized_expression "(iVar3 < (int)ptVar5)" ( (binary_expression "iVar3 < (int)ptVar5" identifier < (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);\n          ptVar22 = ptVar38->next;\n          goto LAB_000365a8;\n        }" { (expression_statement "pptVar12 = &ptVar36->next + iVar3;" (assignment_expression "pptVar12 = &ptVar36->next + iVar3" identifier = (binary_expression "&ptVar36->next + iVar3" (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)) + identifier)) ;) (expression_statement "ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5);" (assignment_expression "ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5)" identifier = (cast_expression "(tmp_reentrant_t *)(&ptVar36->next + (int)ptVar5)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&ptVar36->next + (int)ptVar5)" ( (binary_expression "&ptVar36->next + (int)ptVar5" (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pptVar7 = &ptVar31->next + iVar3;" (assignment_expression "pptVar7 = &ptVar31->next + iVar3" identifier = (binary_expression "&ptVar31->next + iVar3" (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)) + identifier)) ;) (do_statement "do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while ((tmp_reentrant_t *)pptVar12 != ptVar36);" do (compound_statement "{\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          }" { (expression_statement "ptVar22 = *pptVar12;" (assignment_expression "ptVar22 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pptVar7 = ptVar22;" (assignment_expression "*pptVar7 = ptVar22" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "pptVar7 = pptVar7 + 1;" (assignment_expression "pptVar7 = pptVar7 + 1" identifier = (binary_expression "pptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((tmp_reentrant_t *)pptVar12 != ptVar36)" ( (binary_expression "(tmp_reentrant_t *)pptVar12 != ptVar36" (cast_expression "(tmp_reentrant_t *)pptVar12" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "ptVar22 = ptVar38->next;" (assignment_expression "ptVar22 = ptVar38->next" identifier = (field_expression "ptVar38->next" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000365a8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000365a4:\n      ptVar22 = ptVar38->next;" statement_identifier : (expression_statement "ptVar22 = ptVar38->next;" (assignment_expression "ptVar22 = ptVar38->next" identifier = (field_expression "ptVar38->next" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }" else (compound_statement "{\n      if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar22 = ptVar31;\n      do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);\n      ptVar22 = ptVar38->next;\n    }" { (if_statement "if ((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_000365a4;" if (parenthesized_expression "((ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff))" ( (binary_expression "(ptVar31 == ptVar36) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)" (parenthesized_expression "(ptVar31 == ptVar36)" ( (binary_expression "ptVar31 == ptVar36" identifier == identifier) )) || (parenthesized_expression "(ptVar32 == (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar32 == (tmp_reentrant_t *)0xffffffff" identifier == (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "ptVar36 = (tmp_reentrant_t *)&ptVar36->size;" (assignment_expression "ptVar36 = (tmp_reentrant_t *)&ptVar36->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar36->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar36->size" & (field_expression "ptVar36->size" identifier -> field_identifier)))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "ptVar22 = ptVar31;" (assignment_expression "ptVar22 = ptVar31" identifier = identifier) ;) (do_statement "do {\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      } while (iVar3 < (int)ptVar5);" do (compound_statement "{\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar22 = sVar6;\n      }" { (expression_statement "ptVar22 = (tmp_reentrant_t *)&ptVar22->size;" (assignment_expression "ptVar22 = (tmp_reentrant_t *)&ptVar22->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar22->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar22->size" & (field_expression "ptVar22->size" identifier -> field_identifier)))) ;) (expression_statement "sVar6 = *(size_t *)ptVar36;" (assignment_expression "sVar6 = *(size_t *)ptVar36" identifier = (pointer_expression "*(size_t *)ptVar36" * (cast_expression "(size_t *)ptVar36" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);" (assignment_expression "ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar36 + 4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar36 + 4)" ( (binary_expression "(int)ptVar36 + 4" (cast_expression "(int)ptVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(size_t *)ptVar22 = sVar6;" (assignment_expression "*(size_t *)ptVar22 = sVar6" (pointer_expression "*(size_t *)ptVar22" * (cast_expression "(size_t *)ptVar22" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }) while (parenthesized_expression "(iVar3 < (int)ptVar5)" ( (binary_expression "iVar3 < (int)ptVar5" identifier < (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "ptVar22 = ptVar38->next;" (assignment_expression "ptVar22 = ptVar38->next" identifier = (field_expression "ptVar38->next" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_000365a8:\n    ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);" statement_identifier : (expression_statement "ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);" (assignment_expression "ptVar29->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" (field_expression "ptVar29->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar22[-1].size + 3)" ( (binary_expression "(int)&ptVar22[-1].size + 3" (cast_expression "(int)&ptVar22[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar22[-1].size" & (field_expression "ptVar22[-1].size" (subscript_expression "ptVar22[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;)) (if_statement "if (ptVar22 == (tmp_reentrant_t *)0x0) {\n      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }\n    else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }" if (parenthesized_expression "(ptVar22 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar22 == (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      if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }\n    }" { (if_statement "if (ptVar37 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }" if (parenthesized_expression "(ptVar37 != (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar37 != (tmp_reentrant_t *)0xffffffff" identifier != (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar6 = ptVar38->size;\n        ptVar29->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }\n      }" { (expression_statement "sVar6 = ptVar38->size;" (assignment_expression "sVar6 = ptVar38->size" identifier = (field_expression "ptVar38->size" identifier -> field_identifier)) ;) (expression_statement "ptVar29->size = sVar6 - 1;" (assignment_expression "ptVar29->size = sVar6 - 1" (field_expression "ptVar29->size" identifier -> field_identifier) = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (if_statement "if (sVar6 == 0) {\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" if (parenthesized_expression "(sVar6 == 0)" ( (binary_expression "sVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          ptVar17 = ptVar38 + 1;\n          iVar3 = 2;\n          ptVar22 = ptVar29 + 1;\n          do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);\n        }" { (expression_statement "ptVar17 = ptVar38 + 1;" (assignment_expression "ptVar17 = ptVar38 + 1" identifier = (binary_expression "ptVar38 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "ptVar22 = ptVar29 + 1;" (assignment_expression "ptVar22 = ptVar29 + 1" identifier = (binary_expression "ptVar29 + 1" identifier + number_literal)) ;) (do_statement "do {\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          } while (ptVar26 == (tmp_reentrant_t *)0x0);" do (compound_statement "{\n            bVar2 = (int)ptVar25 <= iVar3;\n            iVar3 = iVar3 + 1;\n            if (bVar2) goto LAB_00036608;\n            ptVar26 = ptVar17->next;\n            ptVar17 = (tmp_reentrant_t *)&ptVar17->size;\n            ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);\n            ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n          }" { (expression_statement "bVar2 = (int)ptVar25 <= iVar3;" (assignment_expression "bVar2 = (int)ptVar25 <= iVar3" identifier = (binary_expression "(int)ptVar25 <= iVar3" (cast_expression "(int)ptVar25" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (if_statement "if (bVar2) goto LAB_00036608;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_00036608;" goto statement_identifier ;)) (expression_statement "ptVar26 = ptVar17->next;" (assignment_expression "ptVar26 = ptVar17->next" identifier = (field_expression "ptVar17->next" identifier -> field_identifier)) ;) (expression_statement "ptVar17 = (tmp_reentrant_t *)&ptVar17->size;" (assignment_expression "ptVar17 = (tmp_reentrant_t *)&ptVar17->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar17->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar17->size" & (field_expression "ptVar17->size" identifier -> field_identifier)))) ;) (expression_statement "ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3);" (assignment_expression "ptVar22->next = (tmp_reentrant_t *)((int)&ptVar26[-1].size + 3)" (field_expression "ptVar22->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar26[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar26[-1].size + 3)" ( (binary_expression "(int)&ptVar26[-1].size + 3" (cast_expression "(int)&ptVar26[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar26[-1].size" & (field_expression "ptVar26[-1].size" (subscript_expression "ptVar26[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar22 = (tmp_reentrant_t *)&ptVar22->size;" (assignment_expression "ptVar22 = (tmp_reentrant_t *)&ptVar22->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar22->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar22->size" & (field_expression "ptVar22->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(ptVar26 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar26 == (tmp_reentrant_t *)0x0" identifier == (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (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 ((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)) {\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }" if (parenthesized_expression "((ptVar38 != ptVar29) && (iVar3 < (int)ptVar25))" ( (binary_expression "(ptVar38 != ptVar29) && (iVar3 < (int)ptVar25)" (parenthesized_expression "(ptVar38 != ptVar29)" ( (binary_expression "ptVar38 != ptVar29" identifier != identifier) )) && (parenthesized_expression "(iVar3 < (int)ptVar25)" ( (binary_expression "iVar3 < (int)ptVar25" identifier < (cast_expression "(int)ptVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          pptVar12 = &ptVar38->next + iVar3;\n          pptVar7 = &ptVar29->next + iVar3;\n          do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);\n        }" { (expression_statement "pptVar12 = &ptVar38->next + iVar3;" (assignment_expression "pptVar12 = &ptVar38->next + iVar3" identifier = (binary_expression "&ptVar38->next + iVar3" (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier)) + identifier)) ;) (expression_statement "pptVar7 = &ptVar29->next + iVar3;" (assignment_expression "pptVar7 = &ptVar29->next + iVar3" identifier = (binary_expression "&ptVar29->next + iVar3" (pointer_expression "&ptVar29->next" & (field_expression "ptVar29->next" identifier -> field_identifier)) + identifier)) ;) (do_statement "do {\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          } while (&ptVar38->next + (int)ptVar25 != pptVar12);" do (compound_statement "{\n            ptVar22 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar22;\n            pptVar7 = pptVar7 + 1;\n          }" { (expression_statement "ptVar22 = *pptVar12;" (assignment_expression "ptVar22 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pptVar7 = ptVar22;" (assignment_expression "*pptVar7 = ptVar22" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "pptVar7 = pptVar7 + 1;" (assignment_expression "pptVar7 = pptVar7 + 1" identifier = (binary_expression "pptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(&ptVar38->next + (int)ptVar25 != pptVar12)" ( (binary_expression "&ptVar38->next + (int)ptVar25 != pptVar12" (binary_expression "&ptVar38->next + (int)ptVar25" (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar25" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) }) (else_clause "else if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }" else (if_statement "if ((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)) {\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }" if (parenthesized_expression "((ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff))" ( (binary_expression "(ptVar38 != ptVar29) &&\n            (iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)" (parenthesized_expression "(ptVar38 != ptVar29)" ( (binary_expression "ptVar38 != ptVar29" identifier != identifier) )) && (parenthesized_expression "(iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff)" ( (comma_expression "iVar3 = 1, ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff" (assignment_expression "iVar3 = 1" identifier = number_literal) , (comma_expression "ptVar22 = ptVar29, ptVar37 != (tmp_reentrant_t *)0xffffffff" (assignment_expression "ptVar22 = ptVar29" identifier = identifier) , (binary_expression "ptVar37 != (tmp_reentrant_t *)0xffffffff" identifier != (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n      do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);\n    }" { (do_statement "do {\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      } while (iVar3 < (int)ptVar25);" do (compound_statement "{\n        ptVar38 = (tmp_reentrant_t *)&ptVar38->size;\n        iVar3 = iVar3 + 1;\n        ptVar22->size = *(size_t *)ptVar38;\n        ptVar22 = (tmp_reentrant_t *)&ptVar22->size;\n      }" { (expression_statement "ptVar38 = (tmp_reentrant_t *)&ptVar38->size;" (assignment_expression "ptVar38 = (tmp_reentrant_t *)&ptVar38->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar38->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar38->size" & (field_expression "ptVar38->size" identifier -> field_identifier)))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar22->size = *(size_t *)ptVar38;" (assignment_expression "ptVar22->size = *(size_t *)ptVar38" (field_expression "ptVar22->size" identifier -> field_identifier) = (pointer_expression "*(size_t *)ptVar38" * (cast_expression "(size_t *)ptVar38" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "ptVar22 = (tmp_reentrant_t *)&ptVar22->size;" (assignment_expression "ptVar22 = (tmp_reentrant_t *)&ptVar22->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar22->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar22->size" & (field_expression "ptVar22->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(iVar3 < (int)ptVar25)" ( (binary_expression "iVar3 < (int)ptVar25" identifier < (cast_expression "(int)ptVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })))) (labeled_statement "LAB_00036608:\n    ptVar38 = ptVar29;" statement_identifier : (expression_statement "ptVar38 = ptVar29;" (assignment_expression "ptVar38 = ptVar29" identifier = identifier) ;)) (expression_statement "unaff_s0 = ptVar18;" (assignment_expression "unaff_s0 = ptVar18" identifier = identifier) ;) (if_statement "if ((int)ptVar37 <= (int)ptVar32) {\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }" if (parenthesized_expression "((int)ptVar37 <= (int)ptVar32)" ( (binary_expression "(int)ptVar37 <= (int)ptVar32" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      ptVar38 = ptVar31;\n      ptVar31 = ptVar29;\n      unaff_s0 = ptVar25;\n      ptVar34 = ptVar5;\n      ptVar37 = ptVar32;\n    }" { (expression_statement "ptVar38 = ptVar31;" (assignment_expression "ptVar38 = ptVar31" identifier = identifier) ;) (expression_statement "ptVar31 = ptVar29;" (assignment_expression "ptVar31 = ptVar29" identifier = identifier) ;) (expression_statement "unaff_s0 = ptVar25;" (assignment_expression "unaff_s0 = ptVar25" identifier = identifier) ;) (expression_statement "ptVar34 = ptVar5;" (assignment_expression "ptVar34 = ptVar5" identifier = identifier) ;) (expression_statement "ptVar37 = ptVar32;" (assignment_expression "ptVar37 = ptVar32" identifier = identifier) ;) })) (expression_statement "pcVar44 = *(code **)(puVar41 + -0x7a84);" (assignment_expression "pcVar44 = *(code **)(puVar41 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar41 + -0x7a84)" * (cast_expression "(code **)(puVar41 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + -0x7a84)" ( (binary_expression "puVar41 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if ((int)ptVar15->next < (int)unaff_s0) {\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }\n    else {\n      ptVar18 = ptVar15[1].next;\n    }" if (parenthesized_expression "((int)ptVar15->next < (int)unaff_s0)" ( (binary_expression "(int)ptVar15->next < (int)unaff_s0" (cast_expression "(int)ptVar15->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar15->next" identifier -> field_identifier)) < (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;\n      ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);\n    }" { (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x38) = ptVar31" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x38)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x38)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar38" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0)" identifier = (cast_expression "(tmp_reentrant_t *)(*pcVar44)(ptVar15,unaff_s0)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar44)(ptVar15,unaff_s0)" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "(ptVar15,unaff_s0)" ( identifier , identifier ))))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34);" (assignment_expression "ptVar38 = *(tmp_reentrant_t **)(puVar19 + -0x34)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38);" (assignment_expression "ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x38)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x38)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x38)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      ptVar18 = ptVar15[1].next;\n    }" else (compound_statement "{\n      ptVar18 = ptVar15[1].next;\n    }" { (expression_statement "ptVar18 = ptVar15[1].next;" (assignment_expression "ptVar18 = ptVar15[1].next" identifier = (field_expression "ptVar15[1].next" (subscript_expression "ptVar15[1]" identifier [ number_literal ]) . field_identifier)) ;) }))) (if_statement "if (unaff_s0 == ptVar34) {\n      iVar3 = (int)unaff_s0 << 2;\n    }\n    else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }" if (parenthesized_expression "(unaff_s0 == ptVar34)" ( (binary_expression "unaff_s0 == ptVar34" identifier == identifier) )) (compound_statement "{\n      iVar3 = (int)unaff_s0 << 2;\n    }" { (expression_statement "iVar3 = (int)unaff_s0 << 2;" (assignment_expression "iVar3 = (int)unaff_s0 << 2" identifier = (binary_expression "(int)unaff_s0 << 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) }) (else_clause "else {\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }" else (compound_statement "{\n      iVar3 = (int)ptVar34 * 4;\n      pptVar12 = &ptVar31->next + (int)ptVar34;\n      puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));\n      pptVar28 = &ptVar18->next + (int)ptVar34;\n      ptVar5 = *pptVar12;\n      pptVar7 = pptVar28;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }\n      *pptVar28 = ptVar5;\n    }" { (expression_statement "iVar3 = (int)ptVar34 * 4;" (assignment_expression "iVar3 = (int)ptVar34 * 4" identifier = (binary_expression "(int)ptVar34 * 4" (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pptVar12 = &ptVar31->next + (int)ptVar34;" (assignment_expression "pptVar12 = &ptVar31->next + (int)ptVar34" identifier = (binary_expression "&ptVar31->next + (int)ptVar34" (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34));" (assignment_expression "puVar9 = (undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34))" identifier = (cast_expression "(undefined1 *)((int)unaff_s0 + (-1 - (int)ptVar34))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)ptVar34))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)ptVar34)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar34)" ( (binary_expression "-1 - (int)ptVar34" number_literal - (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "pptVar28 = &ptVar18->next + (int)ptVar34;" (assignment_expression "pptVar28 = &ptVar18->next + (int)ptVar34" identifier = (binary_expression "&ptVar18->next + (int)ptVar34" (pointer_expression "&ptVar18->next" & (field_expression "ptVar18->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptVar5 = *pptVar12;" (assignment_expression "ptVar5 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar28;" (assignment_expression "pptVar7 = pptVar28" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined1 *)0x0) {\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }" if (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));\n      }" { (do_statement "do {\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        } while (puVar9 != (undefined1 *)0x0);" do (compound_statement "{\n          pptVar12 = pptVar12 + 1;\n          *pptVar7 = ptVar5;\n          puVar9 = puVar9 + -1;\n          ptVar5 = *pptVar12;\n          pptVar7 = pptVar7 + 1;\n        }" { (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pptVar7 = ptVar5;" (assignment_expression "*pptVar7 = ptVar5" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) (expression_statement "ptVar5 = *pptVar12;" (assignment_expression "ptVar5 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar7 + 1;" (assignment_expression "pptVar7 = pptVar7 + 1" identifier = (binary_expression "pptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34));" (assignment_expression "pptVar28 = pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34))" identifier = (binary_expression "pptVar28 + (int)((int)unaff_s0 + (-1 - (int)ptVar34))" identifier + (cast_expression "(int)((int)unaff_s0 + (-1 - (int)ptVar34))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)ptVar34))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)ptVar34)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar34)" ( (binary_expression "-1 - (int)ptVar34" number_literal - (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*pptVar28 = ptVar5;" (assignment_expression "*pptVar28 = ptVar5" (pointer_expression "*pptVar28" * identifier) = identifier) ;) }))) (expression_statement "ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4);" (assignment_expression "ptVar5 = (tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)&ptVar34->next + (int)&ptVar37->next) * 4)" ( (binary_expression "(int)((int)&ptVar34->next + (int)&ptVar37->next) * 4" (cast_expression "(int)((int)&ptVar34->next + (int)&ptVar37->next)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&ptVar34->next + (int)&ptVar37->next)" ( (binary_expression "(int)&ptVar34->next + (int)&ptVar37->next" (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier))) + (cast_expression "(int)&ptVar37->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar37->next" & (field_expression "ptVar37->next" identifier -> field_identifier)))) ))) * number_literal) )))) ;) (do_statement "do {\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    } while ((tmp_reentrant_t *)iVar3 != ptVar5);" do (compound_statement "{\n      puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);\n      puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);\n      puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);\n      ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);\n      ptVar25 = (tmp_reentrant_t *)*puVar8;\n      *puVar16 = *puVar10 ^ (uint)ptVar25;\n    }" { (expression_statement "puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next);" (assignment_expression "puVar10 = (uint *)((int)ptVar5 + (int)&ptVar38->next)" identifier = (cast_expression "(uint *)((int)ptVar5 + (int)&ptVar38->next)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar5 + (int)&ptVar38->next)" ( (binary_expression "(int)ptVar5 + (int)&ptVar38->next" (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier)))) )))) ;) (expression_statement "puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next);" (assignment_expression "puVar8 = (undefined4 *)((int)ptVar5 + (int)&ptVar31->next)" identifier = (cast_expression "(undefined4 *)((int)ptVar5 + (int)&ptVar31->next)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar5 + (int)&ptVar31->next)" ( (binary_expression "(int)ptVar5 + (int)&ptVar31->next" (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)&ptVar31->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)))) )))) ;) (expression_statement "puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5);" (assignment_expression "puVar16 = (uint *)((int)&ptVar18->next + (int)ptVar5)" identifier = (cast_expression "(uint *)((int)&ptVar18->next + (int)ptVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar18->next + (int)ptVar5)" ( (binary_expression "(int)&ptVar18->next + (int)ptVar5" (cast_expression "(int)&ptVar18->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar18->next" & (field_expression "ptVar18->next" identifier -> field_identifier))) + (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4);" (assignment_expression "ptVar5 = (tmp_reentrant_t *)((int)ptVar5 + 4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar5 + 4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar5 + 4)" ( (binary_expression "(int)ptVar5 + 4" (cast_expression "(int)ptVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)*puVar8;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)*puVar8" identifier = (cast_expression "(tmp_reentrant_t *)*puVar8" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "*puVar16 = *puVar10 ^ (uint)ptVar25;" (assignment_expression "*puVar16 = *puVar10 ^ (uint)ptVar25" (pointer_expression "*puVar16" * identifier) = (binary_expression "*puVar10 ^ (uint)ptVar25" (pointer_expression "*puVar10" * identifier) ^ (cast_expression "(uint)ptVar25" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((tmp_reentrant_t *)iVar3 != ptVar5)" ( (binary_expression "(tmp_reentrant_t *)iVar3 != ptVar5" (cast_expression "(tmp_reentrant_t *)iVar3" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "pptVar7 = &ptVar18->next + (int)unaff_s0;" (assignment_expression "pptVar7 = &ptVar18->next + (int)unaff_s0" identifier = (binary_expression "&ptVar18->next + (int)unaff_s0" (pointer_expression "&ptVar18->next" & (field_expression "ptVar18->next" identifier -> field_identifier)) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    } while (unaff_s0 != (tmp_reentrant_t *)0x0);" do (compound_statement "{\n      if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      pptVar7 = pptVar7 + -1;\n    }" { (if_statement "if (pptVar7[-1] != (tmp_reentrant_t *)0x0) break;" if (parenthesized_expression "(pptVar7[-1] != (tmp_reentrant_t *)0x0)" ( (binary_expression "pptVar7[-1] != (tmp_reentrant_t *)0x0" (subscript_expression "pptVar7[-1]" identifier [ number_literal ]) != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s0[-1].size + 3)" ( (binary_expression "(int)&unaff_s0[-1].size + 3" (cast_expression "(int)&unaff_s0[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0[-1].size" & (field_expression "unaff_s0[-1].size" (subscript_expression "unaff_s0[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pptVar7 = pptVar7 + -1;" (assignment_expression "pptVar7 = pptVar7 + -1" identifier = (binary_expression "pptVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s0 != (tmp_reentrant_t *)0x0)" ( (binary_expression "unaff_s0 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }" else (compound_statement "{\n    if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }\n    ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;\n    n = p_Var20;\n    ptVar31 = ptVar37;\n    ptVar5 = ptVar38;\n    ptVar37 = ptVar32;\n    ptVar38 = ptVar36;\nLAB_0003630c:\n    ptVar36 = ptVar5;\n    ptVar32 = ptVar31;\n    uVar14 = (int)ptVar18 * 4;\n    if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }\n    ptVar5 = ptVar36->next;\n    ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);\n    if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }\nLAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;\n    mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];\n    pptVar7 = &ptVar34->next + (int)unaff_s0;\n    while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }\n    unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;\n  }" { (if_statement "if (-1 < (int)ptVar37) {\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }" if (parenthesized_expression "(-1 < (int)ptVar37)" ( (binary_expression "-1 < (int)ptVar37" number_literal < (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);\n      ptVar18 = ptVar15;\n      ptVar5 = ptVar37;\n      if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }\n      ptVar15->size = (size_t)ptVar37;\n      goto LAB_000366e0;\n    }" { (expression_statement "ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37);" (assignment_expression "ptVar25 = (tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37)" identifier = (cast_expression "(tmp_reentrant_t *)(uint)((int)ptVar32 < (int)ptVar37)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)ptVar32 < (int)ptVar37)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)ptVar32 < (int)ptVar37)" ( (binary_expression "(int)ptVar32 < (int)ptVar37" (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "ptVar18 = ptVar15;" (assignment_expression "ptVar18 = ptVar15" identifier = identifier) ;) (expression_statement "ptVar5 = ptVar37;" (assignment_expression "ptVar5 = ptVar37" identifier = identifier) ;) (if_statement "if (ptVar25 == (tmp_reentrant_t *)0x0) {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }\n      else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }" if (parenthesized_expression "(ptVar25 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar25 == (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        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }\n        iVar3 = 0;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }\n        ptVar37 = ptVar32;\n        if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;\n        ptVar37 = (tmp_reentrant_t *)0x0;\n      }" { (expression_statement "pcVar44 = *(code **)(puVar40 + 0x6134c);" (assignment_expression "pcVar44 = *(code **)(puVar40 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar40 + 0x6134c)" * (cast_expression "(code **)(puVar40 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar40 + 0x6134c)" ( (binary_expression "puVar40 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)ptVar15->next < (int)ptVar32) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)ptVar15->next < (int)ptVar32)" ( (binary_expression "(int)ptVar15->next < (int)ptVar32" (cast_expression "(int)ptVar15->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar15->next" identifier -> field_identifier)) < (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(mpz_srcptr *)(puVar19 + -0x34) = n;\n          ptVar25 = ptVar32;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }" { (expression_statement "*(mpz_srcptr *)(puVar19 + -0x34) = n;" (assignment_expression "*(mpz_srcptr *)(puVar19 + -0x34) = n" (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "ptVar25 = ptVar32;" (assignment_expression "ptVar25 = ptVar32" identifier = identifier) ;) (expression_statement "(*pcVar44)();" (call_expression "(*pcVar44)()" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "ptVar34 = ptVar15[1].next;" (assignment_expression "ptVar34 = ptVar15[1].next" identifier = (field_expression "ptVar15[1].next" (subscript_expression "ptVar15[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);" (assignment_expression "ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" identifier = (pointer_expression "*(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" * (cast_expression "(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar19 + -0x34) + 8" (pointer_expression "*(int *)(puVar19 + -0x34)" * (cast_expression "(int *)(puVar19 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((ptVar34 != ptVar36) && (ptVar32 != ptVar37)) {\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }" if (parenthesized_expression "((ptVar34 != ptVar36) && (ptVar32 != ptVar37))" ( (binary_expression "(ptVar34 != ptVar36) && (ptVar32 != ptVar37)" (parenthesized_expression "(ptVar34 != ptVar36)" ( (binary_expression "ptVar34 != ptVar36" identifier != identifier) )) && (parenthesized_expression "(ptVar32 != ptVar37)" ( (binary_expression "ptVar32 != ptVar37" identifier != identifier) ))) )) (compound_statement "{\n          pptVar12 = &ptVar36->next + (int)ptVar37;\n          puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));\n          pptVar28 = &ptVar34->next + (int)ptVar37;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }\n          *pptVar28 = ptVar25;\n        }" { (expression_statement "pptVar12 = &ptVar36->next + (int)ptVar37;" (assignment_expression "pptVar12 = &ptVar36->next + (int)ptVar37" identifier = (binary_expression "&ptVar36->next + (int)ptVar37" (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37));" (assignment_expression "puVar11 = (undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37))" identifier = (cast_expression "(undefined1 *)((int)ptVar32 + (-1 - (int)ptVar37))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar32 + (-1 - (int)ptVar37))" ( (binary_expression "(int)ptVar32 + (-1 - (int)ptVar37)" (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar37)" ( (binary_expression "-1 - (int)ptVar37" number_literal - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "pptVar28 = &ptVar34->next + (int)ptVar37;" (assignment_expression "pptVar28 = &ptVar34->next + (int)ptVar37" identifier = (binary_expression "&ptVar34->next + (int)ptVar37" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptVar25 = *pptVar12;" (assignment_expression "ptVar25 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar28;" (assignment_expression "pptVar7 = pptVar28" identifier = identifier) ;) (if_statement "if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }" if (parenthesized_expression "(puVar11 != (undefined1 *)0x0)" ( (binary_expression "puVar11 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));\n          }" { (do_statement "do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);" do (compound_statement "{\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            }" { (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1)" identifier = (cast_expression "(tmp_reentrant_t *)(pptVar7 + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pptVar7 + 1)" ( (binary_expression "pptVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "*pptVar7 = ptVar25;" (assignment_expression "*pptVar7 = ptVar25" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "puVar11 = puVar11 + -1;" (assignment_expression "puVar11 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (expression_statement "ptVar25 = *pptVar12;" (assignment_expression "ptVar25 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = (tmp_reentrant_t **)ptVar18;" (assignment_expression "pptVar7 = (tmp_reentrant_t **)ptVar18" identifier = (cast_expression "(tmp_reentrant_t **)ptVar18" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }) while (parenthesized_expression "(puVar11 != (undefined1 *)0x0)" ( (binary_expression "puVar11 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37));" (assignment_expression "pptVar28 = pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37))" identifier = (binary_expression "pptVar28 + (int)((int)ptVar32 + (-1 - (int)ptVar37))" identifier + (cast_expression "(int)((int)ptVar32 + (-1 - (int)ptVar37))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)ptVar32 + (-1 - (int)ptVar37))" ( (binary_expression "(int)ptVar32 + (-1 - (int)ptVar37)" (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar37)" ( (binary_expression "-1 - (int)ptVar37" number_literal - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*pptVar28 = ptVar25;" (assignment_expression "*pptVar28 = ptVar25" (pointer_expression "*pptVar28" * identifier) = identifier) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (ptVar37 != (tmp_reentrant_t *)0x0) {\n          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }" if (parenthesized_expression "(ptVar37 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar37 != (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          ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);\n          do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);\n        }" { (expression_statement "ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2);" (assignment_expression "ptVar5 = (tmp_reentrant_t *)((int)ptVar37 << 2)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar37 << 2)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar37 << 2)" ( (binary_expression "(int)ptVar37 << 2" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (do_statement "do {\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while (ptVar5 != (tmp_reentrant_t *)iVar3);" do (compound_statement "{\n            puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);\n            puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);\n            ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          }" { (expression_statement "puVar10 = (uint *)(iVar3 + (int)&ptVar36->next);" (assignment_expression "puVar10 = (uint *)(iVar3 + (int)&ptVar36->next)" identifier = (cast_expression "(uint *)(iVar3 + (int)&ptVar36->next)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (int)&ptVar36->next)" ( (binary_expression "iVar3 + (int)&ptVar36->next" identifier + (cast_expression "(int)&ptVar36->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)))) )))) ;) (expression_statement "puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next);" (assignment_expression "puVar8 = (undefined4 *)(iVar3 + (int)&ptVar38->next)" identifier = (cast_expression "(undefined4 *)(iVar3 + (int)&ptVar38->next)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (int)&ptVar38->next)" ( (binary_expression "iVar3 + (int)&ptVar38->next" identifier + (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier)))) )))) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next)" identifier = (cast_expression "(tmp_reentrant_t *)(iVar3 + (int)&ptVar34->next)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + (int)&ptVar34->next)" ( (binary_expression "iVar3 + (int)&ptVar34->next" identifier + (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)))) )))) ;) (expression_statement "iVar3 = iVar3 + 4;" (assignment_expression "iVar3 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)*puVar8;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)*puVar8" identifier = (cast_expression "(tmp_reentrant_t *)*puVar8" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);" (assignment_expression "ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25)" (field_expression "ptVar18->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar10 ^ (uint)ptVar25)" ( (binary_expression "*puVar10 ^ (uint)ptVar25" (pointer_expression "*puVar10" * identifier) ^ (cast_expression "(uint)ptVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) }) while (parenthesized_expression "(ptVar5 != (tmp_reentrant_t *)iVar3)" ( (binary_expression "ptVar5 != (tmp_reentrant_t *)iVar3" identifier != (cast_expression "(tmp_reentrant_t *)iVar3" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) })) (expression_statement "ptVar37 = ptVar32;" (assignment_expression "ptVar37 = ptVar32" identifier = identifier) ;) (if_statement "if (ptVar32 != (tmp_reentrant_t *)0x0) goto LAB_00036910;" if (parenthesized_expression "(ptVar32 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar32 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036910;" goto statement_identifier ;)) (expression_statement "ptVar37 = (tmp_reentrant_t *)0x0;" (assignment_expression "ptVar37 = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }" else (compound_statement "{\n        pcVar44 = *(code **)(puVar40 + 0x6134c);\n        if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }\n        if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }\n        if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }\nLAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }\n      }" { (expression_statement "pcVar44 = *(code **)(puVar40 + 0x6134c);" (assignment_expression "pcVar44 = *(code **)(puVar40 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar40 + 0x6134c)" * (cast_expression "(code **)(puVar40 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar40 + 0x6134c)" ( (binary_expression "puVar40 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)ptVar15->next < (int)ptVar37) {\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)ptVar15->next < (int)ptVar37)" ( (binary_expression "(int)ptVar15->next < (int)ptVar37" (cast_expression "(int)ptVar15->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar15->next" identifier -> field_identifier)) < (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;\n          ptVar25 = ptVar37;\n          (*pcVar44)();\n          puVar41 = *(undefined **)(puVar19 + -0x48);\n          ptVar34 = ptVar15[1].next;\n          ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);\n        }" { (expression_statement "*(mpz_srcptr *)(puVar19 + -0x34) = p_Var20;" (assignment_expression "*(mpz_srcptr *)(puVar19 + -0x34) = p_Var20" (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x34)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x34)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "ptVar25 = ptVar37;" (assignment_expression "ptVar25 = ptVar37" identifier = identifier) ;) (expression_statement "(*pcVar44)();" (call_expression "(*pcVar44)()" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "ptVar34 = ptVar15[1].next;" (assignment_expression "ptVar34 = ptVar15[1].next" identifier = (field_expression "ptVar15[1].next" (subscript_expression "ptVar15[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8);" (assignment_expression "ptVar36 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" identifier = (pointer_expression "*(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" * (cast_expression "(tmp_reentrant_t **)(*(int *)(puVar19 + -0x34) + 8)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar19 + -0x34) + 8" (pointer_expression "*(int *)(puVar19 + -0x34)" * (cast_expression "(int *)(puVar19 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (ptVar34 != ptVar38) {\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }" if (parenthesized_expression "(ptVar34 != ptVar38)" ( (binary_expression "ptVar34 != ptVar38" identifier != identifier) )) (compound_statement "{\n          pptVar12 = &ptVar38->next + (int)ptVar32;\n          puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));\n          pptVar28 = &ptVar34->next + (int)ptVar32;\n          ptVar25 = *pptVar12;\n          pptVar7 = pptVar28;\n          if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }\n          *pptVar28 = ptVar25;\n        }" { (expression_statement "pptVar12 = &ptVar38->next + (int)ptVar32;" (assignment_expression "pptVar12 = &ptVar38->next + (int)ptVar32" identifier = (binary_expression "&ptVar38->next + (int)ptVar32" (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32));" (assignment_expression "puVar11 = (undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32))" identifier = (cast_expression "(undefined1 *)((int)ptVar37 + (-1 - (int)ptVar32))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar37 + (-1 - (int)ptVar32))" ( (binary_expression "(int)ptVar37 + (-1 - (int)ptVar32)" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar32)" ( (binary_expression "-1 - (int)ptVar32" number_literal - (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "pptVar28 = &ptVar34->next + (int)ptVar32;" (assignment_expression "pptVar28 = &ptVar34->next + (int)ptVar32" identifier = (binary_expression "&ptVar34->next + (int)ptVar32" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptVar25 = *pptVar12;" (assignment_expression "ptVar25 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar28;" (assignment_expression "pptVar7 = pptVar28" identifier = identifier) ;) (if_statement "if (puVar11 != (undefined1 *)0x0) {\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }" if (parenthesized_expression "(puVar11 != (undefined1 *)0x0)" ( (binary_expression "puVar11 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);\n            pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));\n          }" { (do_statement "do {\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            } while (puVar11 != (undefined1 *)0x0);" do (compound_statement "{\n              pptVar12 = pptVar12 + 1;\n              ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);\n              *pptVar7 = ptVar25;\n              puVar11 = puVar11 + -1;\n              ptVar25 = *pptVar12;\n              pptVar7 = (tmp_reentrant_t **)ptVar18;\n            }" { (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)(pptVar7 + 1)" identifier = (cast_expression "(tmp_reentrant_t *)(pptVar7 + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pptVar7 + 1)" ( (binary_expression "pptVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "*pptVar7 = ptVar25;" (assignment_expression "*pptVar7 = ptVar25" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "puVar11 = puVar11 + -1;" (assignment_expression "puVar11 = puVar11 + -1" identifier = (binary_expression "puVar11 + -1" identifier + number_literal)) ;) (expression_statement "ptVar25 = *pptVar12;" (assignment_expression "ptVar25 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = (tmp_reentrant_t **)ptVar18;" (assignment_expression "pptVar7 = (tmp_reentrant_t **)ptVar18" identifier = (cast_expression "(tmp_reentrant_t **)ptVar18" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) }) while (parenthesized_expression "(puVar11 != (undefined1 *)0x0)" ( (binary_expression "puVar11 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32));" (assignment_expression "pptVar28 = pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32))" identifier = (binary_expression "pptVar28 + (int)((int)ptVar37 + (-1 - (int)ptVar32))" identifier + (cast_expression "(int)((int)ptVar37 + (-1 - (int)ptVar32))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)ptVar37 + (-1 - (int)ptVar32))" ( (binary_expression "(int)ptVar37 + (-1 - (int)ptVar32)" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar32)" ( (binary_expression "-1 - (int)ptVar32" number_literal - (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*pptVar28 = ptVar25;" (assignment_expression "*pptVar28 = ptVar25" (pointer_expression "*pptVar28" * identifier) = identifier) ;) })) (if_statement "if (ptVar32 != (tmp_reentrant_t *)0x0) {\n          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }" if (parenthesized_expression "(ptVar32 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar32 != (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          iVar3 = 0;\n          do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);\n        }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          } while ((int)ptVar32 << 2 != iVar3);" do (compound_statement "{\n            puVar10 = (uint *)((int)&ptVar36->next + iVar3);\n            puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);\n            ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);\n            iVar3 = iVar3 + 4;\n            ptVar25 = (tmp_reentrant_t *)*puVar8;\n            ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);\n          }" { (expression_statement "puVar10 = (uint *)((int)&ptVar36->next + iVar3);" (assignment_expression "puVar10 = (uint *)((int)&ptVar36->next + iVar3)" identifier = (cast_expression "(uint *)((int)&ptVar36->next + iVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar36->next + iVar3)" ( (binary_expression "(int)&ptVar36->next + iVar3" (cast_expression "(int)&ptVar36->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3);" (assignment_expression "puVar8 = (undefined4 *)((int)&ptVar38->next + iVar3)" identifier = (cast_expression "(undefined4 *)((int)&ptVar38->next + iVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar38->next + iVar3)" ( (binary_expression "(int)&ptVar38->next + iVar3" (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)((int)&ptVar34->next + iVar3)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar34->next + iVar3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next + iVar3)" ( (binary_expression "(int)&ptVar34->next + iVar3" (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "iVar3 = iVar3 + 4;" (assignment_expression "iVar3 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)*puVar8;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)*puVar8" identifier = (cast_expression "(tmp_reentrant_t *)*puVar8" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25);" (assignment_expression "ptVar18->next = (tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25)" (field_expression "ptVar18->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)(*puVar10 ^ (uint)ptVar25)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*puVar10 ^ (uint)ptVar25)" ( (binary_expression "*puVar10 ^ (uint)ptVar25" (pointer_expression "*puVar10" * identifier) ^ (cast_expression "(uint)ptVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ;) }) while (parenthesized_expression "((int)ptVar32 << 2 != iVar3)" ( (binary_expression "(int)ptVar32 << 2 != iVar3" (binary_expression "(int)ptVar32 << 2" (cast_expression "(int)ptVar32" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (labeled_statement "LAB_00036910:\n        if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }" statement_identifier : (if_statement "if (*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0) {\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }" if (parenthesized_expression "(*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0)" ( (binary_expression "*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4) == 0" (pointer_expression "*(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4)" * (cast_expression "(int *)((int)ptVar34 + (int)ptVar37 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar34 + (int)ptVar37 * 4 + -4)" ( (binary_expression "(int)ptVar34 + (int)ptVar37 * 4 + -4" (binary_expression "(int)ptVar34 + (int)ptVar37 * 4" (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)ptVar37 * 4" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) == number_literal) )) (compound_statement "{\n          pptVar7 = &ptVar34->next + (int)ptVar37;\n          do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);\n        }" { (expression_statement "pptVar7 = &ptVar34->next + (int)ptVar37;" (assignment_expression "pptVar7 = &ptVar34->next + (int)ptVar37" identifier = (binary_expression "&ptVar34->next + (int)ptVar37" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          } while (*pmVar1 == 0);" do (compound_statement "{\n            ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);\n            if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }\n            pmVar1 = (mp_limb_t *)(pptVar7 + -2);\n            pptVar7 = pptVar7 + -1;\n          }" { (expression_statement "ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3);" (assignment_expression "ptVar37 = (tmp_reentrant_t *)((int)&ptVar37[-1].size + 3)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar37[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar37[-1].size + 3)" ( (binary_expression "(int)&ptVar37[-1].size + 3" (cast_expression "(int)&ptVar37[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar37[-1].size" & (field_expression "ptVar37[-1].size" (subscript_expression "ptVar37[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (ptVar37 == (tmp_reentrant_t *)0x0) {\n              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }" if (parenthesized_expression "(ptVar37 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar37 == (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              ptVar37 = (tmp_reentrant_t *)0x0;\n              break;\n            }" { (expression_statement "ptVar37 = (tmp_reentrant_t *)0x0;" (assignment_expression "ptVar37 = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pmVar1 = (mp_limb_t *)(pptVar7 + -2);" (assignment_expression "pmVar1 = (mp_limb_t *)(pptVar7 + -2)" identifier = (cast_expression "(mp_limb_t *)(pptVar7 + -2)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pptVar7 + -2)" ( (binary_expression "pptVar7 + -2" identifier + number_literal) )))) ;) (expression_statement "pptVar7 = pptVar7 + -1;" (assignment_expression "pptVar7 = pptVar7 + -1" identifier = (binary_expression "pptVar7 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pmVar1 == 0)" ( (binary_expression "*pmVar1 == 0" (pointer_expression "*pmVar1" * identifier) == number_literal) )) ;) }))) }))) (expression_statement "ptVar15->size = (size_t)ptVar37;" (assignment_expression "ptVar15->size = (size_t)ptVar37" (field_expression "ptVar15->size" identifier -> field_identifier) = (cast_expression "(size_t)ptVar37" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (goto_statement "goto LAB_000366e0;" goto statement_identifier ;) })) (expression_statement "ptVar18 = (tmp_reentrant_t *)-(int)ptVar37;" (assignment_expression "ptVar18 = (tmp_reentrant_t *)-(int)ptVar37" identifier = (cast_expression "(tmp_reentrant_t *)-(int)ptVar37" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)ptVar37" - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "n = p_Var20;" (assignment_expression "n = p_Var20" identifier = identifier) ;) (expression_statement "ptVar31 = ptVar37;" (assignment_expression "ptVar31 = ptVar37" identifier = identifier) ;) (expression_statement "ptVar5 = ptVar38;" (assignment_expression "ptVar5 = ptVar38" identifier = identifier) ;) (expression_statement "ptVar37 = ptVar32;" (assignment_expression "ptVar37 = ptVar32" identifier = identifier) ;) (expression_statement "ptVar38 = ptVar36;" (assignment_expression "ptVar38 = ptVar36" identifier = identifier) ;) (labeled_statement "LAB_0003630c:\n    ptVar36 = ptVar5;" statement_identifier : (expression_statement "ptVar36 = ptVar5;" (assignment_expression "ptVar36 = ptVar5" identifier = identifier) ;)) (expression_statement "ptVar32 = ptVar31;" (assignment_expression "ptVar32 = ptVar31" identifier = identifier) ;) (expression_statement "uVar14 = (int)ptVar18 * 4;" (assignment_expression "uVar14 = (int)ptVar18 * 4" identifier = (binary_expression "(int)ptVar18 * 4" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (uVar14 < 0x7f01) {\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }\n    else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }" if (parenthesized_expression "(uVar14 < 0x7f01)" ( (binary_expression "uVar14 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar3 = -(uVar14 + 7 & 0xfffffff8);\n      ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);\n      puVar11 = puVar19 + iVar3 + -0x58;\n    }" { (expression_statement "iVar3 = -(uVar14 + 7 & 0xfffffff8);" (assignment_expression "iVar3 = -(uVar14 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar14 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar14 + 7 & 0xfffffff8)" ( (binary_expression "uVar14 + 7 & 0xfffffff8" (binary_expression "uVar14 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48);" (assignment_expression "ptVar31 = (tmp_reentrant_t *)(puVar19 + iVar3 + -0x48)" identifier = (cast_expression "(tmp_reentrant_t *)(puVar19 + iVar3 + -0x48)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + iVar3 + -0x48)" ( (binary_expression "puVar19 + iVar3 + -0x48" (binary_expression "puVar19 + iVar3" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar11 = puVar19 + iVar3 + -0x58;" (assignment_expression "puVar11 = puVar19 + iVar3 + -0x58" identifier = (binary_expression "puVar19 + iVar3 + -0x58" (binary_expression "puVar19 + iVar3" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }" else (compound_statement "{\n      pcVar44 = *(code **)(puVar40 + 0x61080);\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(uint *)(puVar19 + -0x34) = uVar14;\n      ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      n = *(mpz_srcptr *)(puVar19 + -0x38);\n      uVar14 = *(uint *)(puVar19 + -0x34);\n      puVar11 = puVar19 + -0x58;\n    }" { (expression_statement "pcVar44 = *(code **)(puVar40 + 0x61080);" (assignment_expression "pcVar44 = *(code **)(puVar40 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar40 + 0x61080)" * (cast_expression "(code **)(puVar40 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar40 + 0x61080)" ( (binary_expression "puVar40 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(mpz_srcptr *)(puVar19 + -0x38) = n;" (assignment_expression "*(mpz_srcptr *)(puVar19 + -0x38) = n" (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x38)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x38)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar19 + -0x34) = uVar14;" (assignment_expression "*(uint *)(puVar19 + -0x34) = uVar14" (pointer_expression "*(uint *)(puVar19 + -0x34)" * (cast_expression "(uint *)(puVar19 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14);" (assignment_expression "ptVar31 = (tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14)" identifier = (cast_expression "(tmp_reentrant_t *)(*pcVar44)(puVar19 + -0x30,uVar14)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar44)(puVar19 + -0x30,uVar14)" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "(puVar19 + -0x30,uVar14)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "n = *(mpz_srcptr *)(puVar19 + -0x38);" (assignment_expression "n = *(mpz_srcptr *)(puVar19 + -0x38)" identifier = (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x38)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x38)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = *(uint *)(puVar19 + -0x34);" (assignment_expression "uVar14 = *(uint *)(puVar19 + -0x34)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x34)" * (cast_expression "(uint *)(puVar19 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar11 = puVar19 + -0x58;" (assignment_expression "puVar11 = puVar19 + -0x58" identifier = (binary_expression "puVar19 + -0x58" identifier + number_literal)) ;) }))) (expression_statement "ptVar5 = ptVar36->next;" (assignment_expression "ptVar5 = ptVar36->next" identifier = (field_expression "ptVar36->next" identifier -> field_identifier)) ;) (expression_statement "ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3);" (assignment_expression "ptVar31->next = (tmp_reentrant_t *)((int)&ptVar5[-1].size + 3)" (field_expression "ptVar31->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar5[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar5[-1].size + 3)" ( (binary_expression "(int)&ptVar5[-1].size + 3" (cast_expression "(int)&ptVar5[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar5[-1].size" & (field_expression "ptVar5[-1].size" (subscript_expression "ptVar5[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (ptVar5 == (tmp_reentrant_t *)0x0) {\n      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }\n    else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }" if (parenthesized_expression "(ptVar5 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar5 == (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      if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }\nLAB_00036390:\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      pcVar44 = *(code **)(puVar41 + -0x7a84);\n      if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;\n      *(mpz_srcptr *)(puVar19 + -0x38) = n;\n      *(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;\n      (*pcVar44)(ptVar15);\n      puVar41 = *(undefined **)(puVar19 + -0x48);\n      ptVar34 = ptVar15[1].next;\n      uVar14 = *(uint *)(puVar19 + -0x3c);\n      ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);\n      ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);\n      if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;\nLAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);\n      puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);\n      puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);\n      puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);\n      uVar23 = *puVar27;\n      puVar8 = puVar13;\n      ptVar32 = ptVar18;\n      if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }\n      uVar33 = 0;\n      *puVar13 = uVar23;\n      do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      ptVar18 = ptVar37;\n      if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;\nLAB_00036438:\n      sVar6 = ptVar34->size + 1;\n      ptVar34->size = sVar6;\n      ptVar37 = ptVar18;\n      if (sVar6 != 0) goto LAB_00036840;\n      iVar3 = 2;\n      ptVar37 = ptVar34 + 1;\n      do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n    }" { (if_statement "if (ptVar32 != (tmp_reentrant_t *)0xffffffff) {\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }" if (parenthesized_expression "(ptVar32 != (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar32 != (tmp_reentrant_t *)0xffffffff" identifier != (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar6 = ptVar36->size;\n        ptVar31->size = sVar6 - 1;\n        if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }\n        if ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }\n      }" { (expression_statement "sVar6 = ptVar36->size;" (assignment_expression "sVar6 = ptVar36->size" identifier = (field_expression "ptVar36->size" identifier -> field_identifier)) ;) (expression_statement "ptVar31->size = sVar6 - 1;" (assignment_expression "ptVar31->size = sVar6 - 1" (field_expression "ptVar31->size" identifier -> field_identifier) = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (if_statement "if (sVar6 == 0) {\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }\n        else {\n          iVar3 = 2;\n        }" if (parenthesized_expression "(sVar6 == 0)" ( (binary_expression "sVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          ptVar25 = ptVar36 + 1;\n          iVar3 = 2;\n          ptVar5 = ptVar31 + 1;\n          do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);\n        }" { (expression_statement "ptVar25 = ptVar36 + 1;" (assignment_expression "ptVar25 = ptVar36 + 1" identifier = (binary_expression "ptVar36 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "ptVar5 = ptVar31 + 1;" (assignment_expression "ptVar5 = ptVar31 + 1" identifier = (binary_expression "ptVar31 + 1" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          } while (ptVar22 == (tmp_reentrant_t *)0x0);" do (compound_statement "{\n            if ((int)ptVar18 <= iVar3) goto LAB_00036390;\n            ptVar22 = ptVar25->next;\n            iVar3 = iVar3 + 1;\n            ptVar25 = (tmp_reentrant_t *)&ptVar25->size;\n            ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);\n            ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n          }" { (if_statement "if ((int)ptVar18 <= iVar3) goto LAB_00036390;" if (parenthesized_expression "((int)ptVar18 <= iVar3)" ( (binary_expression "(int)ptVar18 <= iVar3" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "ptVar22 = ptVar25->next;" (assignment_expression "ptVar22 = ptVar25->next" identifier = (field_expression "ptVar25->next" identifier -> field_identifier)) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)&ptVar25->size;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)&ptVar25->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar25->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar25->size" & (field_expression "ptVar25->size" identifier -> field_identifier)))) ;) (expression_statement "ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3);" (assignment_expression "ptVar5->next = (tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" (field_expression "ptVar5->next" identifier -> field_identifier) = (cast_expression "(tmp_reentrant_t *)((int)&ptVar22[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar22[-1].size + 3)" ( (binary_expression "(int)&ptVar22[-1].size + 3" (cast_expression "(int)&ptVar22[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar22[-1].size" & (field_expression "ptVar22[-1].size" (subscript_expression "ptVar22[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar5 = (tmp_reentrant_t *)&ptVar5->size;" (assignment_expression "ptVar5 = (tmp_reentrant_t *)&ptVar5->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar5->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar5->size" & (field_expression "ptVar5->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(ptVar22 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar22 == (tmp_reentrant_t *)0x0" identifier == (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (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 ((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)) {\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }" if (parenthesized_expression "((ptVar36 != ptVar31) && (iVar3 < (int)ptVar18))" ( (binary_expression "(ptVar36 != ptVar31) && (iVar3 < (int)ptVar18)" (parenthesized_expression "(ptVar36 != ptVar31)" ( (binary_expression "ptVar36 != ptVar31" identifier != identifier) )) && (parenthesized_expression "(iVar3 < (int)ptVar18)" ( (binary_expression "iVar3 < (int)ptVar18" identifier < (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          pptVar12 = &ptVar36->next + iVar3;\n          ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);\n          pptVar7 = &ptVar31->next + iVar3;\n          do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);\n        }" { (expression_statement "pptVar12 = &ptVar36->next + iVar3;" (assignment_expression "pptVar12 = &ptVar36->next + iVar3" identifier = (binary_expression "&ptVar36->next + iVar3" (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)) + identifier)) ;) (expression_statement "ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18);" (assignment_expression "ptVar36 = (tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18)" identifier = (cast_expression "(tmp_reentrant_t *)(&ptVar36->next + (int)ptVar18)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&ptVar36->next + (int)ptVar18)" ( (binary_expression "&ptVar36->next + (int)ptVar18" (pointer_expression "&ptVar36->next" & (field_expression "ptVar36->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pptVar7 = &ptVar31->next + iVar3;" (assignment_expression "pptVar7 = &ptVar31->next + iVar3" identifier = (binary_expression "&ptVar31->next + iVar3" (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)) + identifier)) ;) (do_statement "do {\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          } while (ptVar36 != (tmp_reentrant_t *)pptVar12);" do (compound_statement "{\n            ptVar5 = *pptVar12;\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            pptVar7 = pptVar7 + 1;\n          }" { (expression_statement "ptVar5 = *pptVar12;" (assignment_expression "ptVar5 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pptVar7 = ptVar5;" (assignment_expression "*pptVar7 = ptVar5" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "pptVar7 = pptVar7 + 1;" (assignment_expression "pptVar7 = pptVar7 + 1" identifier = (binary_expression "pptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(ptVar36 != (tmp_reentrant_t *)pptVar12)" ( (binary_expression "ptVar36 != (tmp_reentrant_t *)pptVar12" identifier != (cast_expression "(tmp_reentrant_t *)pptVar12" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) })) })) (labeled_statement "LAB_00036390:\n      ptVar5 = ptVar18;" statement_identifier : (expression_statement "ptVar5 = ptVar18;" (assignment_expression "ptVar5 = ptVar18" identifier = identifier) ;)) (if_statement "if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }" if (parenthesized_expression "((int)ptVar18 <= (int)ptVar37)" ( (binary_expression "(int)ptVar18 <= (int)ptVar37" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        ptVar5 = ptVar37;\n      }" { (expression_statement "ptVar5 = ptVar37;" (assignment_expression "ptVar5 = ptVar37" identifier = identifier) ;) })) (expression_statement "pcVar44 = *(code **)(puVar41 + -0x7a84);" (assignment_expression "pcVar44 = *(code **)(puVar41 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar41 + -0x7a84)" * (cast_expression "(code **)(puVar41 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + -0x7a84)" ( (binary_expression "puVar41 + -0x7a84" identifier + number_literal) ))))) ;) (if_statement "if ((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next) goto LAB_000363b0;" if (parenthesized_expression "((int)((int)&ptVar5->next + 1) <= (int)ptVar15->next)" ( (binary_expression "(int)((int)&ptVar5->next + 1) <= (int)ptVar15->next" (cast_expression "(int)((int)&ptVar5->next + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&ptVar5->next + 1)" ( (binary_expression "(int)&ptVar5->next + 1" (cast_expression "(int)&ptVar5->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar5->next" & (field_expression "ptVar5->next" identifier -> field_identifier))) + number_literal) ))) <= (cast_expression "(int)ptVar15->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar15->next" identifier -> field_identifier))) )) (goto_statement "goto LAB_000363b0;" goto statement_identifier ;)) (labeled_statement "LAB_00036778:\n      *(uint *)(puVar19 + -0x3c) = uVar14;" statement_identifier : (expression_statement "*(uint *)(puVar19 + -0x3c) = uVar14;" (assignment_expression "*(uint *)(puVar19 + -0x3c) = uVar14" (pointer_expression "*(uint *)(puVar19 + -0x3c)" * (cast_expression "(uint *)(puVar19 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x3c)" ( (binary_expression "puVar19 + -0x3c" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(mpz_srcptr *)(puVar19 + -0x38) = n;" (assignment_expression "*(mpz_srcptr *)(puVar19 + -0x38) = n" (pointer_expression "*(mpz_srcptr *)(puVar19 + -0x38)" * (cast_expression "(mpz_srcptr *)(puVar19 + -0x38)" ( (type_descriptor "mpz_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31;" (assignment_expression "*(tmp_reentrant_t **)(puVar19 + -0x34) = ptVar31" (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar44)(ptVar15);" (call_expression "(*pcVar44)(ptVar15)" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "(ptVar15)" ( identifier ))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "ptVar34 = ptVar15[1].next;" (assignment_expression "ptVar34 = ptVar15[1].next" identifier = (field_expression "ptVar15[1].next" (subscript_expression "ptVar15[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar14 = *(uint *)(puVar19 + -0x3c);" (assignment_expression "uVar14 = *(uint *)(puVar19 + -0x3c)" identifier = (pointer_expression "*(uint *)(puVar19 + -0x3c)" * (cast_expression "(uint *)(puVar19 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x3c)" ( (binary_expression "puVar19 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8);" (assignment_expression "ptVar38 = *(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8)" identifier = (pointer_expression "*(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8)" * (cast_expression "(tmp_reentrant_t **)(*(int *)(puVar19 + -0x38) + 8)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar19 + -0x38) + 8)" ( (binary_expression "*(int *)(puVar19 + -0x38) + 8" (pointer_expression "*(int *)(puVar19 + -0x38)" * (cast_expression "(int *)(puVar19 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x38)" ( (binary_expression "puVar19 + -0x38" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34);" (assignment_expression "ptVar31 = *(tmp_reentrant_t **)(puVar19 + -0x34)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x34)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x34)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x34)" ( (binary_expression "puVar19 + -0x34" identifier + number_literal) ))))) ;) (if_statement "if ((int)ptVar37 <= (int)ptVar18) goto LAB_000367b0;" if (parenthesized_expression "((int)ptVar37 <= (int)ptVar18)" ( (binary_expression "(int)ptVar37 <= (int)ptVar18" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000367b0;" goto statement_identifier ;)) (labeled_statement "LAB_000363b8:\n      ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);" statement_identifier : (expression_statement "ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next);" (assignment_expression "ptVar18 = (tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar37->next + (int)&ptVar32->next)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar37->next + (int)&ptVar32->next)" ( (binary_expression "(int)&ptVar37->next + (int)&ptVar32->next" (cast_expression "(int)&ptVar37->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar37->next" & (field_expression "ptVar37->next" identifier -> field_identifier))) + (cast_expression "(int)&ptVar32->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar32->next" & (field_expression "ptVar32->next" identifier -> field_identifier)))) )))) ;)) (expression_statement "puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14);" (assignment_expression "puVar27 = (undefined4 *)((int)&ptVar38->next + uVar14)" identifier = (cast_expression "(undefined4 *)((int)&ptVar38->next + uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar38->next + uVar14)" ( (binary_expression "(int)&ptVar38->next + uVar14" (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3);" (assignment_expression "puVar9 = (undefined1 *)((int)&ptVar18[-1].size + 3)" identifier = (cast_expression "(undefined1 *)((int)&ptVar18[-1].size + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar18[-1].size + 3)" ( (binary_expression "(int)&ptVar18[-1].size + 3" (cast_expression "(int)&ptVar18[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar18[-1].size" & (field_expression "ptVar18[-1].size" (subscript_expression "ptVar18[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14);" (assignment_expression "puVar13 = (undefined4 *)((int)&ptVar34->next + uVar14)" identifier = (cast_expression "(undefined4 *)((int)&ptVar34->next + uVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next + uVar14)" ( (binary_expression "(int)&ptVar34->next + uVar14" (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "uVar23 = *puVar27;" (assignment_expression "uVar23 = *puVar27" identifier = (pointer_expression "*puVar27" * identifier)) ;) (expression_statement "puVar8 = puVar13;" (assignment_expression "puVar8 = puVar13" identifier = identifier) ;) (expression_statement "ptVar32 = ptVar18;" (assignment_expression "ptVar32 = ptVar18" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined1 *)0x0) {\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }" if (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);\n        ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);\n        puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);\n      }" { (do_statement "do {\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        } while (puVar9 != (undefined1 *)0x0);" do (compound_statement "{\n          puVar27 = puVar27 + 1;\n          *puVar8 = uVar23;\n          puVar9 = puVar9 + -1;\n          uVar23 = *puVar27;\n          puVar8 = puVar8 + 1;\n        }" { (expression_statement "puVar27 = puVar27 + 1;" (assignment_expression "puVar27 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) (expression_statement "*puVar8 = uVar23;" (assignment_expression "*puVar8 = uVar23" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar23 = *puVar27;" (assignment_expression "uVar23 = *puVar27" identifier = (pointer_expression "*puVar27" * identifier)) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4);" (assignment_expression "ptVar32 = (tmp_reentrant_t *)((int)ptVar18 * 4 + -4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar18 * 4 + -4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar18 * 4 + -4)" ( (binary_expression "(int)ptVar18 * 4 + -4" (binary_expression "(int)ptVar18 * 4" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3);" (assignment_expression "puVar13 = puVar13 + (int)((int)&ptVar18[-1].size + 3)" identifier = (binary_expression "puVar13 + (int)((int)&ptVar18[-1].size + 3)" identifier + (cast_expression "(int)((int)&ptVar18[-1].size + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&ptVar18[-1].size + 3)" ( (binary_expression "(int)&ptVar18[-1].size + 3" (cast_expression "(int)&ptVar18[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar18[-1].size" & (field_expression "ptVar18[-1].size" (subscript_expression "ptVar18[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) })) (expression_statement "uVar33 = 0;" (assignment_expression "uVar33 = 0" identifier = number_literal) ;) (expression_statement "*puVar13 = uVar23;" (assignment_expression "*puVar13 = uVar23" (pointer_expression "*puVar13" * identifier) = identifier) ;) (do_statement "do {\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      } while (uVar14 != uVar33);" do (compound_statement "{\n        puVar10 = (uint *)((int)&ptVar38->next + uVar33);\n        puVar24 = (uint *)((int)&ptVar31->next + uVar33);\n        puVar16 = (uint *)((int)&ptVar34->next + uVar33);\n        uVar33 = uVar33 + 4;\n        *puVar16 = *puVar10 ^ *puVar24;\n      }" { (expression_statement "puVar10 = (uint *)((int)&ptVar38->next + uVar33);" (assignment_expression "puVar10 = (uint *)((int)&ptVar38->next + uVar33)" identifier = (cast_expression "(uint *)((int)&ptVar38->next + uVar33)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar38->next + uVar33)" ( (binary_expression "(int)&ptVar38->next + uVar33" (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar24 = (uint *)((int)&ptVar31->next + uVar33);" (assignment_expression "puVar24 = (uint *)((int)&ptVar31->next + uVar33)" identifier = (cast_expression "(uint *)((int)&ptVar31->next + uVar33)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar31->next + uVar33)" ( (binary_expression "(int)&ptVar31->next + uVar33" (cast_expression "(int)&ptVar31->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar16 = (uint *)((int)&ptVar34->next + uVar33);" (assignment_expression "puVar16 = (uint *)((int)&ptVar34->next + uVar33)" identifier = (cast_expression "(uint *)((int)&ptVar34->next + uVar33)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next + uVar33)" ( (binary_expression "(int)&ptVar34->next + uVar33" (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "uVar33 = uVar33 + 4;" (assignment_expression "uVar33 = uVar33 + 4" identifier = (binary_expression "uVar33 + 4" identifier + number_literal)) ;) (expression_statement "*puVar16 = *puVar10 ^ *puVar24;" (assignment_expression "*puVar16 = *puVar10 ^ *puVar24" (pointer_expression "*puVar16" * identifier) = (binary_expression "*puVar10 ^ *puVar24" (pointer_expression "*puVar10" * identifier) ^ (pointer_expression "*puVar24" * identifier))) ;) }) while (parenthesized_expression "(uVar14 != uVar33)" ( (binary_expression "uVar14 != uVar33" identifier != identifier) )) ;) (expression_statement "ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);" (assignment_expression "ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar34->next->next + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next->next + 1)" ( (binary_expression "(int)&ptVar34->next->next + 1" (cast_expression "(int)&ptVar34->next->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next->next" & (field_expression "ptVar34->next->next" (field_expression "ptVar34->next" identifier -> field_identifier) -> field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar34->next = ptVar38;" (assignment_expression "ptVar34->next = ptVar38" (field_expression "ptVar34->next" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar18 = ptVar37;" (assignment_expression "ptVar18 = ptVar37" identifier = identifier) ;) (if_statement "if (ptVar38 != (tmp_reentrant_t *)0x0) goto LAB_00036840;" if (parenthesized_expression "(ptVar38 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar38 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (labeled_statement "LAB_00036438:\n      sVar6 = ptVar34->size + 1;" statement_identifier : (expression_statement "sVar6 = ptVar34->size + 1;" (assignment_expression "sVar6 = ptVar34->size + 1" identifier = (binary_expression "ptVar34->size + 1" (field_expression "ptVar34->size" identifier -> field_identifier) + number_literal)) ;)) (expression_statement "ptVar34->size = sVar6;" (assignment_expression "ptVar34->size = sVar6" (field_expression "ptVar34->size" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar37 = ptVar18;" (assignment_expression "ptVar37 = ptVar18" identifier = identifier) ;) (if_statement "if (sVar6 != 0) goto LAB_00036840;" if (parenthesized_expression "(sVar6 != 0)" ( (binary_expression "sVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "ptVar37 = ptVar34 + 1;" (assignment_expression "ptVar37 = ptVar34 + 1" identifier = (binary_expression "ptVar34 + 1" identifier + number_literal)) ;) (do_statement "do {\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      } while (ptVar38 == (tmp_reentrant_t *)0x0);" do (compound_statement "{\n        ptVar5 = ptVar18;\n        if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }\n        iVar3 = iVar3 + 1;\n        ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);\n        ptVar37->next = ptVar38;\n        ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n      }" { (expression_statement "ptVar5 = ptVar18;" (assignment_expression "ptVar5 = ptVar18" identifier = identifier) ;) (if_statement "if ((int)ptVar18 <= iVar3) {\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }" if (parenthesized_expression "((int)ptVar18 <= iVar3)" ( (binary_expression "(int)ptVar18 <= iVar3" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n          unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n          goto LAB_00036844;\n        }" { (expression_statement "ptVar25 = (tmp_reentrant_t *)&DAT_00000001;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)&DAT_00000001" identifier = (cast_expression "(tmp_reentrant_t *)&DAT_00000001" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar18->next + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar18->next + 1)" ( (binary_expression "(int)&ptVar18->next + 1" (cast_expression "(int)&ptVar18->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar18->next" & (field_expression "ptVar18->next" identifier -> field_identifier))) + number_literal) )))) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1);" (assignment_expression "ptVar38 = (tmp_reentrant_t *)((int)&ptVar37->next->next + 1)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar37->next->next + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar37->next->next + 1)" ( (binary_expression "(int)&ptVar37->next->next + 1" (cast_expression "(int)&ptVar37->next->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar37->next->next" & (field_expression "ptVar37->next->next" (field_expression "ptVar37->next" identifier -> field_identifier) -> field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar37->next = ptVar38;" (assignment_expression "ptVar37->next = ptVar38" (field_expression "ptVar37->next" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar37 = (tmp_reentrant_t *)&ptVar37->size;" (assignment_expression "ptVar37 = (tmp_reentrant_t *)&ptVar37->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar37->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar37->size" & (field_expression "ptVar37->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(ptVar38 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar38 == (tmp_reentrant_t *)0x0" identifier == (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)0x0;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = ptVar18;" (assignment_expression "unaff_s0 = ptVar18" identifier = identifier) ;) }) (else_clause "else {\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }" else (compound_statement "{\n      if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;\n      ptVar36 = (tmp_reentrant_t *)&ptVar36->size;\n      iVar3 = 1;\n      ptVar5 = ptVar31;\n      do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);\n      ptVar5 = ptVar18;\n      if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }\n      if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;\nLAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }\n      ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);\n      ptVar34->next = ptVar38;\n      if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;\n      unaff_s0 = ptVar18;\n      ptVar5 = ptVar37;\n    }" { (if_statement "if ((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)) goto LAB_00036390;" if (parenthesized_expression "((ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff))" ( (binary_expression "(ptVar36 == ptVar31) || (ptVar32 == (tmp_reentrant_t *)0xffffffff)" (parenthesized_expression "(ptVar36 == ptVar31)" ( (binary_expression "ptVar36 == ptVar31" identifier == identifier) )) || (parenthesized_expression "(ptVar32 == (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar32 == (tmp_reentrant_t *)0xffffffff" identifier == (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "ptVar36 = (tmp_reentrant_t *)&ptVar36->size;" (assignment_expression "ptVar36 = (tmp_reentrant_t *)&ptVar36->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar36->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar36->size" & (field_expression "ptVar36->size" identifier -> field_identifier)))) ;) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "ptVar5 = ptVar31;" (assignment_expression "ptVar5 = ptVar31" identifier = identifier) ;) (do_statement "do {\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      } while (iVar3 < (int)ptVar18);" do (compound_statement "{\n        ptVar5 = (tmp_reentrant_t *)&ptVar5->size;\n        sVar6 = *(size_t *)ptVar36;\n        iVar3 = iVar3 + 1;\n        ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);\n        *(size_t *)ptVar5 = sVar6;\n      }" { (expression_statement "ptVar5 = (tmp_reentrant_t *)&ptVar5->size;" (assignment_expression "ptVar5 = (tmp_reentrant_t *)&ptVar5->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar5->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar5->size" & (field_expression "ptVar5->size" identifier -> field_identifier)))) ;) (expression_statement "sVar6 = *(size_t *)ptVar36;" (assignment_expression "sVar6 = *(size_t *)ptVar36" identifier = (pointer_expression "*(size_t *)ptVar36" * (cast_expression "(size_t *)ptVar36" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4);" (assignment_expression "ptVar36 = (tmp_reentrant_t *)((int)ptVar36 + 4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar36 + 4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar36 + 4)" ( (binary_expression "(int)ptVar36 + 4" (cast_expression "(int)ptVar36" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*(size_t *)ptVar5 = sVar6;" (assignment_expression "*(size_t *)ptVar5 = sVar6" (pointer_expression "*(size_t *)ptVar5" * (cast_expression "(size_t *)ptVar5" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }) while (parenthesized_expression "(iVar3 < (int)ptVar18)" ( (binary_expression "iVar3 < (int)ptVar18" identifier < (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "ptVar5 = ptVar18;" (assignment_expression "ptVar5 = ptVar18" identifier = identifier) ;) (if_statement "if ((int)ptVar18 <= (int)ptVar37) {\n        ptVar5 = ptVar37;\n      }" if (parenthesized_expression "((int)ptVar18 <= (int)ptVar37)" ( (binary_expression "(int)ptVar18 <= (int)ptVar37" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        ptVar5 = ptVar37;\n      }" { (expression_statement "ptVar5 = ptVar37;" (assignment_expression "ptVar5 = ptVar37" identifier = identifier) ;) })) (if_statement "if ((int)ptVar15->next < (int)((int)&ptVar5->next + 1)) {\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }" if (parenthesized_expression "((int)ptVar15->next < (int)((int)&ptVar5->next + 1))" ( (binary_expression "(int)ptVar15->next < (int)((int)&ptVar5->next + 1)" (cast_expression "(int)ptVar15->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar15->next" identifier -> field_identifier)) < (cast_expression "(int)((int)&ptVar5->next + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&ptVar5->next + 1)" ( (binary_expression "(int)&ptVar5->next + 1" (cast_expression "(int)&ptVar5->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar5->next" & (field_expression "ptVar5->next" identifier -> field_identifier))) + number_literal) )))) )) (compound_statement "{\n        pcVar44 = *(code **)(puVar41 + -0x7a84);\n        goto LAB_00036778;\n      }" { (expression_statement "pcVar44 = *(code **)(puVar41 + -0x7a84);" (assignment_expression "pcVar44 = *(code **)(puVar41 + -0x7a84)" identifier = (pointer_expression "*(code **)(puVar41 + -0x7a84)" * (cast_expression "(code **)(puVar41 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + -0x7a84)" ( (binary_expression "puVar41 + -0x7a84" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00036778;" goto statement_identifier ;) })) (labeled_statement "LAB_000363b0:\n      if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;" statement_identifier : (if_statement "if ((int)ptVar18 < (int)ptVar37) goto LAB_000363b8;" if (parenthesized_expression "((int)ptVar18 < (int)ptVar37)" ( (binary_expression "(int)ptVar18 < (int)ptVar37" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000363b8;" goto statement_identifier ;))) (labeled_statement "LAB_000367b0:\n      if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }" statement_identifier : (if_statement "if (ptVar37 == ptVar18) {\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }\n      else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }" if (parenthesized_expression "(ptVar37 == ptVar18)" ( (binary_expression "ptVar37 == ptVar18" identifier == identifier) )) (compound_statement "{\n        iVar3 = (int)ptVar18 << 2;\nLAB_00036804:\n        iVar30 = 0;\n        do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);\n      }" { (expression_statement "iVar3 = (int)ptVar18 << 2;" (assignment_expression "iVar3 = (int)ptVar18 << 2" identifier = (binary_expression "(int)ptVar18 << 2" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (labeled_statement "LAB_00036804:\n        iVar30 = 0;" statement_identifier : (expression_statement "iVar30 = 0;" (assignment_expression "iVar30 = 0" identifier = number_literal) ;)) (do_statement "do {\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        } while (iVar3 != iVar30);" do (compound_statement "{\n          puVar10 = (uint *)((int)&ptVar38->next + iVar30);\n          puVar24 = (uint *)((int)&ptVar31->next + iVar30);\n          puVar16 = (uint *)((int)&ptVar34->next + iVar30);\n          iVar30 = iVar30 + 4;\n          *puVar16 = *puVar10 ^ *puVar24;\n        }" { (expression_statement "puVar10 = (uint *)((int)&ptVar38->next + iVar30);" (assignment_expression "puVar10 = (uint *)((int)&ptVar38->next + iVar30)" identifier = (cast_expression "(uint *)((int)&ptVar38->next + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar38->next + iVar30)" ( (binary_expression "(int)&ptVar38->next + iVar30" (cast_expression "(int)&ptVar38->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar38->next" & (field_expression "ptVar38->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar24 = (uint *)((int)&ptVar31->next + iVar30);" (assignment_expression "puVar24 = (uint *)((int)&ptVar31->next + iVar30)" identifier = (cast_expression "(uint *)((int)&ptVar31->next + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar31->next + iVar30)" ( (binary_expression "(int)&ptVar31->next + iVar30" (cast_expression "(int)&ptVar31->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar16 = (uint *)((int)&ptVar34->next + iVar30);" (assignment_expression "puVar16 = (uint *)((int)&ptVar34->next + iVar30)" identifier = (cast_expression "(uint *)((int)&ptVar34->next + iVar30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next + iVar30)" ( (binary_expression "(int)&ptVar34->next + iVar30" (cast_expression "(int)&ptVar34->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "iVar30 = iVar30 + 4;" (assignment_expression "iVar30 = iVar30 + 4" identifier = (binary_expression "iVar30 + 4" identifier + number_literal)) ;) (expression_statement "*puVar16 = *puVar10 ^ *puVar24;" (assignment_expression "*puVar16 = *puVar10 ^ *puVar24" (pointer_expression "*puVar16" * identifier) = (binary_expression "*puVar10 ^ *puVar24" (pointer_expression "*puVar10" * identifier) ^ (pointer_expression "*puVar24" * identifier))) ;) }) while (parenthesized_expression "(iVar3 != iVar30)" ( (binary_expression "iVar3 != iVar30" identifier != identifier) )) ;) }) (else_clause "else {\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }" else (compound_statement "{\n        iVar3 = (int)ptVar37 * 4;\n        pptVar12 = &ptVar31->next + (int)ptVar37;\n        puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));\n        pptVar28 = &ptVar34->next + (int)ptVar37;\n        ptVar5 = *pptVar12;\n        pptVar7 = pptVar28;\n        if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }\n        *pptVar28 = ptVar5;\n        if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;\n      }" { (expression_statement "iVar3 = (int)ptVar37 * 4;" (assignment_expression "iVar3 = (int)ptVar37 * 4" identifier = (binary_expression "(int)ptVar37 * 4" (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "pptVar12 = &ptVar31->next + (int)ptVar37;" (assignment_expression "pptVar12 = &ptVar31->next + (int)ptVar37" identifier = (binary_expression "&ptVar31->next + (int)ptVar37" (pointer_expression "&ptVar31->next" & (field_expression "ptVar31->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37));" (assignment_expression "puVar9 = (undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37))" identifier = (cast_expression "(undefined1 *)((int)ptVar18 + (-1 - (int)ptVar37))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar18 + (-1 - (int)ptVar37))" ( (binary_expression "(int)ptVar18 + (-1 - (int)ptVar37)" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar37)" ( (binary_expression "-1 - (int)ptVar37" number_literal - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "pptVar28 = &ptVar34->next + (int)ptVar37;" (assignment_expression "pptVar28 = &ptVar34->next + (int)ptVar37" identifier = (binary_expression "&ptVar34->next + (int)ptVar37" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptVar5 = *pptVar12;" (assignment_expression "ptVar5 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar28;" (assignment_expression "pptVar7 = pptVar28" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined1 *)0x0) {\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }" if (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);\n          pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));\n        }" { (do_statement "do {\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          } while (puVar9 != (undefined1 *)0x0);" do (compound_statement "{\n            pptVar12 = pptVar12 + 1;\n            *pptVar7 = ptVar5;\n            puVar9 = puVar9 + -1;\n            ptVar5 = *pptVar12;\n            pptVar7 = pptVar7 + 1;\n          }" { (expression_statement "pptVar12 = pptVar12 + 1;" (assignment_expression "pptVar12 = pptVar12 + 1" identifier = (binary_expression "pptVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pptVar7 = ptVar5;" (assignment_expression "*pptVar7 = ptVar5" (pointer_expression "*pptVar7" * identifier) = identifier) ;) (expression_statement "puVar9 = puVar9 + -1;" (assignment_expression "puVar9 = puVar9 + -1" identifier = (binary_expression "puVar9 + -1" identifier + number_literal)) ;) (expression_statement "ptVar5 = *pptVar12;" (assignment_expression "ptVar5 = *pptVar12" identifier = (pointer_expression "*pptVar12" * identifier)) ;) (expression_statement "pptVar7 = pptVar7 + 1;" (assignment_expression "pptVar7 = pptVar7 + 1" identifier = (binary_expression "pptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 != (undefined1 *)0x0)" ( (binary_expression "puVar9 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37));" (assignment_expression "pptVar28 = pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37))" identifier = (binary_expression "pptVar28 + (int)((int)ptVar18 + (-1 - (int)ptVar37))" identifier + (cast_expression "(int)((int)ptVar18 + (-1 - (int)ptVar37))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)ptVar18 + (-1 - (int)ptVar37))" ( (binary_expression "(int)ptVar18 + (-1 - (int)ptVar37)" (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)ptVar37)" ( (binary_expression "-1 - (int)ptVar37" number_literal - (cast_expression "(int)ptVar37" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*pptVar28 = ptVar5;" (assignment_expression "*pptVar28 = ptVar5" (pointer_expression "*pptVar28" * identifier) = identifier) ;) (if_statement "if (ptVar37 != (tmp_reentrant_t *)0x0) goto LAB_00036804;" if (parenthesized_expression "(ptVar37 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar37 != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036804;" goto statement_identifier ;)) })))) (expression_statement "ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1);" (assignment_expression "ptVar38 = (tmp_reentrant_t *)((int)&ptVar34->next->next + 1)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar34->next->next + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar34->next->next + 1)" ( (binary_expression "(int)&ptVar34->next->next + 1" (cast_expression "(int)&ptVar34->next->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar34->next->next" & (field_expression "ptVar34->next->next" (field_expression "ptVar34->next" identifier -> field_identifier) -> field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar34->next = ptVar38;" (assignment_expression "ptVar34->next = ptVar38" (field_expression "ptVar34->next" identifier -> field_identifier) = identifier) ;) (if_statement "if (ptVar38 == (tmp_reentrant_t *)0x0) {\n        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }" if (parenthesized_expression "(ptVar38 == (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar38 == (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        if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);\n        ptVar25 = (tmp_reentrant_t *)&DAT_00000001;\n        ptVar5 = ptVar18;\n        goto LAB_00036844;\n      }" { (if_statement "if (ptVar32 != (tmp_reentrant_t *)0xffffffff) goto LAB_00036438;" if (parenthesized_expression "(ptVar32 != (tmp_reentrant_t *)0xffffffff)" ( (binary_expression "ptVar32 != (tmp_reentrant_t *)0xffffffff" identifier != (cast_expression "(tmp_reentrant_t *)0xffffffff" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036438;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)((int)&ptVar18->next + 1)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&ptVar18->next + 1)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar18->next + 1)" ( (binary_expression "(int)&ptVar18->next + 1" (cast_expression "(int)&ptVar18->next" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar18->next" & (field_expression "ptVar18->next" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "ptVar25 = (tmp_reentrant_t *)&DAT_00000001;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)&DAT_00000001" identifier = (cast_expression "(tmp_reentrant_t *)&DAT_00000001" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) (expression_statement "ptVar5 = ptVar18;" (assignment_expression "ptVar5 = ptVar18" identifier = identifier) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (labeled_statement "LAB_00036840:\n      ptVar25 = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "ptVar25 = (tmp_reentrant_t *)0x0;" (assignment_expression "ptVar25 = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "unaff_s0 = ptVar18;" (assignment_expression "unaff_s0 = ptVar18" identifier = identifier) ;) (expression_statement "ptVar5 = ptVar37;" (assignment_expression "ptVar5 = ptVar37" identifier = identifier) ;) }))) (labeled_statement "LAB_00036844:\n    (&ptVar34->next)[(int)ptVar18] = ptVar25;" statement_identifier : (expression_statement "(&ptVar34->next)[(int)ptVar18] = ptVar25;" (assignment_expression "(&ptVar34->next)[(int)ptVar18] = ptVar25" (subscript_expression "(&ptVar34->next)[(int)ptVar18]" (parenthesized_expression "(&ptVar34->next)" ( (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) )) [ (cast_expression "(int)ptVar18" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;)) (expression_statement "mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1];" (assignment_expression "mVar4 = (mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1]" identifier = (subscript_expression "(mp_limb_t)(&ptVar34->next + (int)unaff_s0)[-1]" (call_expression "(mp_limb_t)(&ptVar34->next + (int)unaff_s0)" (parenthesized_expression "(mp_limb_t)" ( identifier )) (argument_list "(&ptVar34->next + (int)unaff_s0)" ( (binary_expression "&ptVar34->next + (int)unaff_s0" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) ))) [ number_literal ])) ;) (expression_statement "pptVar7 = &ptVar34->next + (int)unaff_s0;" (assignment_expression "pptVar7 = &ptVar34->next + (int)unaff_s0" identifier = (binary_expression "&ptVar34->next + (int)unaff_s0" (pointer_expression "&ptVar34->next" & (field_expression "ptVar34->next" identifier -> field_identifier)) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while (mVar4 == 0) {\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }" while (parenthesized_expression "(mVar4 == 0)" ( (binary_expression "mVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);\n      if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;\n      mVar4 = (mp_limb_t)pptVar7[-2];\n      pptVar7 = pptVar7 + -1;\n    }" { (expression_statement "unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3);" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3)" identifier = (cast_expression "(tmp_reentrant_t *)((int)&unaff_s0[-1].size + 3)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s0[-1].size + 3)" ( (binary_expression "(int)&unaff_s0[-1].size + 3" (cast_expression "(int)&unaff_s0[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0[-1].size" & (field_expression "unaff_s0[-1].size" (subscript_expression "unaff_s0[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if (unaff_s0 == (tmp_reentrant_t *)0x0) goto LAB_000366d4;" if (parenthesized_expression "(unaff_s0 == (tmp_reentrant_t *)0x0)" ( (binary_expression "unaff_s0 == (tmp_reentrant_t *)0x0" identifier == (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d4;" goto statement_identifier ;)) (expression_statement "mVar4 = (mp_limb_t)pptVar7[-2];" (assignment_expression "mVar4 = (mp_limb_t)pptVar7[-2]" identifier = (cast_expression "(mp_limb_t)pptVar7[-2]" ( (type_descriptor "mp_limb_t" type_identifier) ) (subscript_expression "pptVar7[-2]" identifier [ number_literal ]))) ;) (expression_statement "pptVar7 = pptVar7 + -1;" (assignment_expression "pptVar7 = pptVar7 + -1" identifier = (binary_expression "pptVar7 + -1" identifier + number_literal)) ;) })) (expression_statement "unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0;" (assignment_expression "unaff_s0 = (tmp_reentrant_t *)-(int)unaff_s0" identifier = (cast_expression "(tmp_reentrant_t *)-(int)unaff_s0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)unaff_s0" - (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }))) (labeled_statement "LAB_000366d4:\n  ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);" statement_identifier : (expression_statement "ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30);" (assignment_expression "ptVar18 = *(tmp_reentrant_t **)(puVar19 + -0x30)" identifier = (pointer_expression "*(tmp_reentrant_t **)(puVar19 + -0x30)" * (cast_expression "(tmp_reentrant_t **)(puVar19 + -0x30)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x30)" ( (binary_expression "puVar19 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "ptVar15->size = (size_t)unaff_s0;" (assignment_expression "ptVar15->size = (size_t)unaff_s0" (field_expression "ptVar15->size" identifier -> field_identifier) = (cast_expression "(size_t)unaff_s0" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "ptVar37 = ptVar32;" (assignment_expression "ptVar37 = ptVar32" identifier = identifier) ;) (expression_statement "puVar9 = puVar11;" (assignment_expression "puVar9 = puVar11" identifier = identifier) ;) (if_statement "if (ptVar18 != (tmp_reentrant_t *)0x0) {\n    (**(code **)(puVar41 + -0x7a2c))();\n    puVar41 = *(undefined **)(puVar19 + -0x48);\n  }" if (parenthesized_expression "(ptVar18 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar18 != (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 **)(puVar41 + -0x7a2c))();\n    puVar41 = *(undefined **)(puVar19 + -0x48);\n  }" { (expression_statement "(**(code **)(puVar41 + -0x7a2c))();" (call_expression "(**(code **)(puVar41 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar41 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar41 + -0x7a2c)" * (pointer_expression "*(code **)(puVar41 + -0x7a2c)" * (cast_expression "(code **)(puVar41 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + -0x7a2c)" ( (binary_expression "puVar41 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar41 = *(undefined **)(puVar19 + -0x48);" (assignment_expression "puVar41 = *(undefined **)(puVar19 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar19 + -0x48)" * (cast_expression "(undefined **)(puVar19 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar19 + -0x48)" ( (binary_expression "puVar19 + -0x48" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_000366e0:\n  if (*(int *)(puVar19 + -0x2c) == *piVar39) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar19 + -0x2c) == *piVar39) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar19 + -0x2c) == *piVar39)" ( (binary_expression "*(int *)(puVar19 + -0x2c) == *piVar39" (pointer_expression "*(int *)(puVar19 + -0x2c)" * (cast_expression "(int *)(puVar19 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar19 + -0x2c)" ( (binary_expression "puVar19 + -0x2c" identifier + number_literal) )))) == (pointer_expression "*piVar39" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar44 = *(code **)(puVar41 + -0x7b70);" (assignment_expression "pcVar44 = *(code **)(puVar41 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar41 + -0x7b70)" * (cast_expression "(code **)(puVar41 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + -0x7b70)" ( (binary_expression "puVar41 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = 0x36bd8;" (assignment_expression "uVar23 = 0x36bd8" identifier = number_literal) ;) (expression_statement "(*pcVar44)();" (call_expression "(*pcVar44)()" (parenthesized_expression "(*pcVar44)" ( (pointer_expression "*pcVar44" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar42 = pcVar44 + 0x68460;" (assignment_expression "pcVar42 = pcVar44 + 0x68460" identifier = (binary_expression "pcVar44 + 0x68460" identifier + number_literal)) ;) (expression_statement "*(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34;" (assignment_expression "*(tmp_reentrant_t **)(puVar9 + -0x10) = ptVar34" (pointer_expression "*(tmp_reentrant_t **)(puVar9 + -0x10)" * (cast_expression "(tmp_reentrant_t **)(puVar9 + -0x10)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x10)" ( (binary_expression "puVar9 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar9 + -0x20) = pcVar42;" (assignment_expression "*(code **)(puVar9 + -0x20) = pcVar42" (pointer_expression "*(code **)(puVar9 + -0x20)" * (cast_expression "(code **)(puVar9 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x20)" ( (binary_expression "puVar9 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37;" (assignment_expression "*(tmp_reentrant_t **)(puVar9 + -0x14) = ptVar37" (pointer_expression "*(tmp_reentrant_t **)(puVar9 + -0x14)" * (cast_expression "(tmp_reentrant_t **)(puVar9 + -0x14)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x14)" ( (binary_expression "puVar9 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0;" (assignment_expression "*(tmp_reentrant_t **)(puVar9 + -0x18) = unaff_s0" (pointer_expression "*(tmp_reentrant_t **)(puVar9 + -0x18)" * (cast_expression "(tmp_reentrant_t **)(puVar9 + -0x18)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x18)" ( (binary_expression "puVar9 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar9 + -4) = uVar23;" (assignment_expression "*(undefined4 *)(puVar9 + -4) = uVar23" (pointer_expression "*(undefined4 *)(puVar9 + -4)" * (cast_expression "(undefined4 *)(puVar9 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + -4)" ( (binary_expression "puVar9 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar9 + -8) = ptVar5;" (assignment_expression "*(tmp_reentrant_t **)(puVar9 + -8) = ptVar5" (pointer_expression "*(tmp_reentrant_t **)(puVar9 + -8)" * (cast_expression "(tmp_reentrant_t **)(puVar9 + -8)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -8)" ( (binary_expression "puVar9 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36;" (assignment_expression "*(tmp_reentrant_t **)(puVar9 + -0xc) = ptVar36" (pointer_expression "*(tmp_reentrant_t **)(puVar9 + -0xc)" * (cast_expression "(tmp_reentrant_t **)(puVar9 + -0xc)" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0xc)" ( (binary_expression "puVar9 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "sVar35 = ptVar25->size;" (assignment_expression "sVar35 = ptVar25->size" identifier = (field_expression "ptVar25->size" identifier -> field_identifier)) ;) (expression_statement "sVar6 = sVar35;" (assignment_expression "sVar6 = sVar35" identifier = identifier) ;) (if_statement "if ((int)sVar35 < 0) {\n    sVar6 = -sVar35;\n  }" if (parenthesized_expression "((int)sVar35 < 0)" ( (binary_expression "(int)sVar35 < 0" (cast_expression "(int)sVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    sVar6 = -sVar35;\n  }" { (expression_statement "sVar6 = -sVar35;" (assignment_expression "sVar6 = -sVar35" identifier = (unary_expression "-sVar35" - identifier)) ;) })) (if_statement "if (ptVar25 != ptVar18) {\n    ptVar15 = ptVar25[2].next;\n    if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }\n    if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }\n    if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }\n    ptVar18[2].next = ptVar15;\n    if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }\n  }" if (parenthesized_expression "(ptVar25 != ptVar18)" ( (binary_expression "ptVar25 != ptVar18" identifier != identifier) )) (compound_statement "{\n    ptVar15 = ptVar25[2].next;\n    if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }\n    if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }\n    if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }\n    ptVar18[2].next = ptVar15;\n    if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }\n  }" { (expression_statement "ptVar15 = ptVar25[2].next;" (assignment_expression "ptVar15 = ptVar25[2].next" identifier = (field_expression "ptVar25[2].next" (subscript_expression "ptVar25[2]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if ((int)ptVar18->next < (int)sVar6) {\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }\n    else {\n      ptVar34 = ptVar18[1].next;\n    }" if (parenthesized_expression "((int)ptVar18->next < (int)sVar6)" ( (binary_expression "(int)ptVar18->next < (int)sVar6" (cast_expression "(int)ptVar18->next" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar18->next" identifier -> field_identifier)) < (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);\n      pcVar42 = *(code **)(puVar9 + -0x20);\n    }" { (expression_statement "ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6);" (assignment_expression "ptVar34 = (tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6)" identifier = (cast_expression "(tmp_reentrant_t *)(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar44 + 0x609dc))(ptVar18,sVar6)" (parenthesized_expression "(**(code **)(pcVar44 + 0x609dc))" ( (pointer_expression "**(code **)(pcVar44 + 0x609dc)" * (pointer_expression "*(code **)(pcVar44 + 0x609dc)" * (cast_expression "(code **)(pcVar44 + 0x609dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar44 + 0x609dc)" ( (binary_expression "pcVar44 + 0x609dc" identifier + number_literal) ))))) )) (argument_list "(ptVar18,sVar6)" ( identifier , identifier ))))) ;) (expression_statement "pcVar42 = *(code **)(puVar9 + -0x20);" (assignment_expression "pcVar42 = *(code **)(puVar9 + -0x20)" identifier = (pointer_expression "*(code **)(puVar9 + -0x20)" * (cast_expression "(code **)(puVar9 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + -0x20)" ( (binary_expression "puVar9 + -0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      ptVar34 = ptVar18[1].next;\n    }" else (compound_statement "{\n      ptVar34 = ptVar18[1].next;\n    }" { (expression_statement "ptVar34 = ptVar18[1].next;" (assignment_expression "ptVar34 = ptVar18[1].next" identifier = (field_expression "ptVar18[1].next" (subscript_expression "ptVar18[1]" identifier [ number_literal ]) . field_identifier)) ;) }))) (if_statement "if (sVar35 != 0) {\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }" if (parenthesized_expression "(sVar35 != 0)" ( (binary_expression "sVar35 != 0" identifier != number_literal) )) (compound_statement "{\n      ptVar32 = ptVar25[1].next;\n      iVar3 = sVar6 - 1;\n      ptVar38 = ptVar32->next;\n      ptVar37 = ptVar34;\n      if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }\n      ptVar34->next = ptVar38;\n    }" { (expression_statement "ptVar32 = ptVar25[1].next;" (assignment_expression "ptVar32 = ptVar25[1].next" identifier = (field_expression "ptVar25[1].next" (subscript_expression "ptVar25[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar3 = sVar6 - 1;" (assignment_expression "iVar3 = sVar6 - 1" identifier = (binary_expression "sVar6 - 1" identifier - number_literal)) ;) (expression_statement "ptVar38 = ptVar32->next;" (assignment_expression "ptVar38 = ptVar32->next" identifier = (field_expression "ptVar32->next" identifier -> field_identifier)) ;) (expression_statement "ptVar37 = ptVar34;" (assignment_expression "ptVar37 = ptVar34" identifier = identifier) ;) (if_statement "if (iVar3 != 0) {\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);\n        ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);\n      }" { (do_statement "do {\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        } while (iVar3 != 0);" do (compound_statement "{\n          ptVar32 = (tmp_reentrant_t *)&ptVar32->size;\n          ptVar37->next = ptVar38;\n          iVar3 = iVar3 + -1;\n          ptVar38 = *(tmp_reentrant_t **)ptVar32;\n          ptVar37 = (tmp_reentrant_t *)&ptVar37->size;\n        }" { (expression_statement "ptVar32 = (tmp_reentrant_t *)&ptVar32->size;" (assignment_expression "ptVar32 = (tmp_reentrant_t *)&ptVar32->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar32->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar32->size" & (field_expression "ptVar32->size" identifier -> field_identifier)))) ;) (expression_statement "ptVar37->next = ptVar38;" (assignment_expression "ptVar37->next = ptVar38" (field_expression "ptVar37->next" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "ptVar38 = *(tmp_reentrant_t **)ptVar32;" (assignment_expression "ptVar38 = *(tmp_reentrant_t **)ptVar32" identifier = (pointer_expression "*(tmp_reentrant_t **)ptVar32" * (cast_expression "(tmp_reentrant_t **)ptVar32" ( (type_descriptor "tmp_reentrant_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "ptVar37 = (tmp_reentrant_t *)&ptVar37->size;" (assignment_expression "ptVar37 = (tmp_reentrant_t *)&ptVar37->size" identifier = (cast_expression "(tmp_reentrant_t *)&ptVar37->size" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ptVar37->size" & (field_expression "ptVar37->size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) ;) (expression_statement "ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4);" (assignment_expression "ptVar34 = (tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4)" identifier = (cast_expression "(tmp_reentrant_t *)((int)ptVar34 + (sVar6 - 1) * 4)" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ptVar34 + (sVar6 - 1) * 4)" ( (binary_expression "(int)ptVar34 + (sVar6 - 1) * 4" (cast_expression "(int)ptVar34" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(sVar6 - 1) * 4" (parenthesized_expression "(sVar6 - 1)" ( (binary_expression "sVar6 - 1" identifier - number_literal) )) * number_literal)) )))) ;) })) (expression_statement "ptVar34->next = ptVar38;" (assignment_expression "ptVar34->next = ptVar38" (field_expression "ptVar34->next" identifier -> field_identifier) = identifier) ;) })) (if_statement "if ((int)ptVar18[1].size < (int)ptVar15) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }\n    else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }" if (parenthesized_expression "((int)ptVar18[1].size < (int)ptVar15)" ( (binary_expression "(int)ptVar18[1].size < (int)ptVar15" (cast_expression "(int)ptVar18[1].size" ( (type_descriptor "int" primitive_type) ) (field_expression "ptVar18[1].size" (subscript_expression "ptVar18[1]" identifier [ number_literal ]) . field_identifier)) < (cast_expression "(int)ptVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);\n    }" { (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar42 + -0x7a84))(&ptVar18[1].size,ptVar15)" (parenthesized_expression "(**(code **)(pcVar42 + -0x7a84))" ( (pointer_expression "**(code **)(pcVar42 + -0x7a84)" * (pointer_expression "*(code **)(pcVar42 + -0x7a84)" * (cast_expression "(code **)(pcVar42 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + -0x7a84)" ( (binary_expression "pcVar42 + -0x7a84" identifier + number_literal) ))))) )) (argument_list "(&ptVar18[1].size,ptVar15)" ( (pointer_expression "&ptVar18[1].size" & (field_expression "ptVar18[1].size" (subscript_expression "ptVar18[1]" identifier [ number_literal ]) . field_identifier)) , identifier ))))) ;) }) (else_clause "else {\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)ptVar18[2].size;\n    }" { (expression_statement "puVar8 = (undefined4 *)ptVar18[2].size;" (assignment_expression "puVar8 = (undefined4 *)ptVar18[2].size" identifier = (cast_expression "(undefined4 *)ptVar18[2].size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "ptVar18[2].size" (subscript_expression "ptVar18[2]" identifier [ number_literal ]) . field_identifier))) ;) }))) (expression_statement "ptVar18[2].next = ptVar15;" (assignment_expression "ptVar18[2].next = ptVar15" (field_expression "ptVar18[2].next" (subscript_expression "ptVar18[2]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (ptVar15 != (tmp_reentrant_t *)0x0) {\n      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }" if (parenthesized_expression "(ptVar15 != (tmp_reentrant_t *)0x0)" ( (binary_expression "ptVar15 != (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      puVar13 = (undefined4 *)ptVar25[2].size;\n      puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);\n      uVar23 = *puVar13;\n      puVar27 = puVar8;\n      if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }\n      *puVar8 = uVar23;\n    }" { (expression_statement "puVar13 = (undefined4 *)ptVar25[2].size;" (assignment_expression "puVar13 = (undefined4 *)ptVar25[2].size" identifier = (cast_expression "(undefined4 *)ptVar25[2].size" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "ptVar25[2].size" (subscript_expression "ptVar25[2]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3);" (assignment_expression "puVar19 = (undefined1 *)((int)&ptVar15[-1].size + 3)" identifier = (cast_expression "(undefined1 *)((int)&ptVar15[-1].size + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ptVar15[-1].size + 3)" ( (binary_expression "(int)&ptVar15[-1].size + 3" (cast_expression "(int)&ptVar15[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar15[-1].size" & (field_expression "ptVar15[-1].size" (subscript_expression "ptVar15[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "uVar23 = *puVar13;" (assignment_expression "uVar23 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar27 = puVar8;" (assignment_expression "puVar27 = puVar8" identifier = identifier) ;) (if_statement "if (puVar19 != (undefined1 *)0x0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }" if (parenthesized_expression "(puVar19 != (undefined1 *)0x0)" ( (binary_expression "puVar19 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);\n        puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        } while (puVar19 != (undefined1 *)0x0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar27 = uVar23;\n          puVar19 = puVar19 + -1;\n          uVar23 = *puVar13;\n          puVar27 = puVar27 + 1;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar27 = uVar23;" (assignment_expression "*puVar27 = uVar23" (pointer_expression "*puVar27" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) (expression_statement "uVar23 = *puVar13;" (assignment_expression "uVar23 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar27 = puVar27 + 1;" (assignment_expression "puVar27 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar19 != (undefined1 *)0x0)" ( (binary_expression "puVar19 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3);" (assignment_expression "puVar8 = puVar8 + (int)((int)&ptVar15[-1].size + 3)" identifier = (binary_expression "puVar8 + (int)((int)&ptVar15[-1].size + 3)" identifier + (cast_expression "(int)((int)&ptVar15[-1].size + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&ptVar15[-1].size + 3)" ( (binary_expression "(int)&ptVar15[-1].size + 3" (cast_expression "(int)&ptVar15[-1].size" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ptVar15[-1].size" & (field_expression "ptVar15[-1].size" (subscript_expression "ptVar15[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) })) (expression_statement "*puVar8 = uVar23;" (assignment_expression "*puVar8 = uVar23" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) })) (expression_statement "ptVar18->size = sVar6;" (assignment_expression "ptVar18->size = sVar6" (field_expression "ptVar18->size" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}\n\n" (function_definition "void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" primitive_type (function_declarator "__gmpz_urandomm(uint *param_1,int param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,int param_2,uint *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 uVar17;" type_identifier identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined4 *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "uint uVar24;" type_identifier identifier ;) (declaration "uint *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "uint *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "uint *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "int unaff_s5;" primitive_type identifier ;) (declaration "uint *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "uint unaff_s6;" type_identifier identifier ;) (declaration "int unaff_s7;" primitive_type identifier ;) (declaration "undefined *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "code *pcVar31;" type_identifier (pointer_declarator "*pcVar31" * 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 "undefined1 *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "undefined1 auStack_60 [16];" type_identifier (array_declarator "auStack_60 [16]" identifier [ number_literal ]) ;) (declaration "uint *local_3c;" type_identifier (pointer_declarator "*local_3c" * identifier) ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "uint *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar29 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar29 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" identifier = identifier) ;) (expression_statement "puVar33 = auStack_60;" (assignment_expression "puVar33 = auStack_60" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (if_statement "if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }" { (expression_statement "local_34 = -uVar2;" (assignment_expression "local_34 = -uVar2" identifier = (unary_expression "-uVar2" - identifier)) ;) (if_statement "if (uVar2 == 0) goto LAB_000361ac;" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000361ac;" goto statement_identifier ;)) (labeled_statement "LAB_00035f20:\n    uVar24 = local_34 * 4;" statement_identifier : (expression_statement "uVar24 = local_34 * 4;" (assignment_expression "uVar24 = local_34 * 4" identifier = (binary_expression "local_34 * 4" identifier * number_literal)) ;)) (expression_statement "local_3c = (uint *)param_3[2];" (assignment_expression "local_3c = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s2 = (undefined4 *)(uVar24 - 4);" (assignment_expression "unaff_s2 = (undefined4 *)(uVar24 - 4)" identifier = (cast_expression "(undefined4 *)(uVar24 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar24 - 4)" ( (binary_expression "uVar24 - 4" identifier - number_literal) )))) ;) (expression_statement "puVar16 = local_3c + (local_34 - 1);" (assignment_expression "puVar16 = local_3c + (local_34 - 1)" identifier = (binary_expression "local_3c + (local_34 - 1)" identifier + (parenthesized_expression "(local_34 - 1)" ( (binary_expression "local_34 - 1" identifier - number_literal) )))) ;) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (if_statement "if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" if (parenthesized_expression "((uVar2 - 1 & uVar2) == 0)" ( (binary_expression "(uVar2 - 1 & uVar2) == 0" (parenthesized_expression "(uVar2 - 1 & uVar2)" ( (binary_expression "uVar2 - 1 & uVar2" (binary_expression "uVar2 - 1" identifier - number_literal) & identifier) )) == number_literal) )) (compound_statement "{\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" { (if_statement "if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" if (parenthesized_expression "(local_3c < puVar16)" ( (binary_expression "local_3c < puVar16" identifier < identifier) )) (compound_statement "{\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" { (expression_statement "uVar3 = *local_3c;" (assignment_expression "uVar3 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = local_3c;" (assignment_expression "puVar14 = local_3c" identifier = identifier) ;) (while_statement "while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" { (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (if_statement "if (puVar16 <= puVar14) goto LAB_00035f84;" if (parenthesized_expression "(puVar16 <= puVar14)" ( (binary_expression "puVar16 <= puVar14" identifier <= identifier) )) (goto_statement "goto LAB_00035f84;" goto statement_identifier ;)) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) })) (goto_statement "goto LAB_00036124;" goto statement_identifier ;) })) (labeled_statement "LAB_00035f84:\n      puVar16 = (uint *)0x1;" statement_identifier : (expression_statement "puVar16 = (uint *)0x1;" (assignment_expression "puVar16 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (0xffff < uVar2) goto LAB_00035f90;" if (parenthesized_expression "(0xffff < uVar2)" ( (binary_expression "0xffff < uVar2" number_literal < identifier) )) (goto_statement "goto LAB_00035f90;" goto statement_identifier ;)) (labeled_statement "LAB_00036130:\n      iVar4 = 0x20;" statement_identifier : (expression_statement "iVar4 = 0x20;" (assignment_expression "iVar4 = 0x20" identifier = number_literal) ;)) (if_statement "if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }" if (parenthesized_expression "(0xff < uVar2)" ( (binary_expression "0xff < uVar2" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 0x18;\n      }" { (expression_statement "iVar4 = 0x18;" (assignment_expression "iVar4 = 0x18" identifier = number_literal) ;) })) (expression_statement "iVar21 = 9;" (assignment_expression "iVar21 = 9" identifier = number_literal) ;) (if_statement "if (0xff >= uVar2) {\n        iVar21 = 1;\n      }" if (parenthesized_expression "(0xff >= uVar2)" ( (binary_expression "0xff >= uVar2" number_literal >= identifier) )) (compound_statement "{\n        iVar21 = 1;\n      }" { (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) })) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" identifier = (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" identifier + (parenthesized_expression "(uVar2 >> iVar21)" ( (binary_expression "uVar2 >> iVar21" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" identifier = (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" ( (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" ( (binary_expression "iVar4 - (uint)*(byte *)puVar14" identifier - (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) (else_clause "else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" else (compound_statement "{\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" { (labeled_statement "LAB_00036124:\n      puVar16 = (uint *)0x0;" statement_identifier : (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (uVar2 < 0x10000) goto LAB_00036130;" if (parenthesized_expression "(uVar2 < 0x10000)" ( (binary_expression "uVar2 < 0x10000" identifier < number_literal) )) (goto_statement "goto LAB_00036130;" goto statement_identifier ;)) (labeled_statement "LAB_00035f90:\n      iVar4 = 0x10;" statement_identifier : (expression_statement "iVar4 = 0x10;" (assignment_expression "iVar4 = 0x10" identifier = number_literal) ;)) (if_statement "if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }" if (parenthesized_expression "(0xffffff < uVar2)" ( (binary_expression "0xffffff < uVar2" number_literal < identifier) )) (compound_statement "{\n        iVar4 = 8;\n      }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) })) (expression_statement "iVar21 = 0x19;" (assignment_expression "iVar21 = 0x19" identifier = number_literal) ;) (if_statement "if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }" if (parenthesized_expression "(0xffffff >= uVar2)" ( (binary_expression "0xffffff >= uVar2" number_literal >= identifier) )) (compound_statement "{\n        iVar21 = 0x11;\n      }" { (expression_statement "iVar21 = 0x11;" (assignment_expression "iVar21 = 0x11" identifier = number_literal) ;) })) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" identifier = (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" ( (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" identifier + (parenthesized_expression "(uVar2 >> iVar21)" ( (binary_expression "uVar2 >> iVar21" identifier >> identifier) ))) )))) ;) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" identifier = (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" ( (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" ( (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" identifier * number_literal) - (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" ( (binary_expression "iVar4 - (uint)*(byte *)puVar14" identifier - (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }))) (if_statement "if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" if (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" { (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s6 = uVar24;" (assignment_expression "unaff_s6 = uVar24" identifier = identifier) ;) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" identifier = identifier) ;) (if_statement "if (param_3 == param_1) goto LAB_000361b8;" if (parenthesized_expression "(param_3 == param_1)" ( (binary_expression "param_3 == param_1" identifier == identifier) )) (goto_statement "goto LAB_000361b8;" goto statement_identifier ;)) (goto_statement "goto LAB_00035fe8;" goto statement_identifier ;) })) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "local_34 = uVar2;" (assignment_expression "local_34 = uVar2" identifier = identifier) ;) (if_statement "if (uVar2 != 0) goto LAB_00035f20;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00035f20;" goto statement_identifier ;)) (labeled_statement "LAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();" statement_identifier : (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" ( (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" * (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" statement_identifier : (if_statement "if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" if (parenthesized_expression "(unaff_s6 < 0x7f01)" ( (binary_expression "unaff_s6 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }" { (expression_statement "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);" (assignment_expression "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8)" identifier = (unary_expression "-((int)unaff_s2 + 0xbU & 0xfffffff8)" - (parenthesized_expression "((int)unaff_s2 + 0xbU & 0xfffffff8)" ( (binary_expression "(int)unaff_s2 + 0xbU & 0xfffffff8" (binary_expression "(int)unaff_s2 + 0xbU" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "puVar33 = auStack_60 + iVar4;" (assignment_expression "puVar33 = auStack_60 + iVar4" identifier = (binary_expression "auStack_60 + iVar4" identifier + identifier)) ;) (expression_statement "puVar16 = (uint *)(&stack0xffffffb0 + iVar4);" (assignment_expression "puVar16 = (uint *)(&stack0xffffffb0 + iVar4)" identifier = (cast_expression "(uint *)(&stack0xffffffb0 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb0 + iVar4)" ( (binary_expression "&stack0xffffffb0 + iVar4" (pointer_expression "&stack0xffffffb0" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" else (compound_statement "{\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" { (expression_statement "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);" (assignment_expression "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,unaff_s6)" ( (pointer_expression "&local_30" & identifier) , identifier ))))) ;) })))) (expression_statement "iVar4 = local_34 - 1;" (assignment_expression "iVar4 = local_34 - 1" identifier = (binary_expression "local_34 - 1" identifier - number_literal)) ;) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = puVar16;" (assignment_expression "puVar14 = puVar16" identifier = identifier) ;) (expression_statement "puVar32 = puVar33;" (assignment_expression "puVar32 = puVar33" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }" { (expression_statement "*puVar16 = uVar2;" (assignment_expression "*puVar16 = uVar2" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" identifier = identifier) ;) }) (else_clause "else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" else (compound_statement "{\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" { (do_statement "do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      }" { (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = uVar2;" (assignment_expression "*puVar14 = uVar2" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" identifier = (pointer_expression "*local_3c" * identifier)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;" (assignment_expression "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2" (pointer_expression "*(uint *)((int)puVar16 + (int)unaff_s2)" * (cast_expression "(uint *)((int)puVar16 + (int)unaff_s2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (int)unaff_s2)" ( (binary_expression "(int)puVar16 + (int)unaff_s2" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) = identifier) ;) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" identifier = identifier) ;) }))) (labeled_statement "LAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" statement_identifier : (if_statement "if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" if (parenthesized_expression "((int)*param_1 < (int)local_34)" ( (binary_expression "(int)*param_1 < (int)local_34" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)local_34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }" { (expression_statement "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);" (assignment_expression "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" ( (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" * (cast_expression "(code *)PTR___gmpz_realloc_000975bc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,local_34)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      unaff_s3 = (uint *)param_1[2];\n    }" else (compound_statement "{\n      unaff_s3 = (uint *)param_1[2];\n    }" { (expression_statement "unaff_s3 = (uint *)param_1[2];" (assignment_expression "unaff_s3 = (uint *)param_1[2]" identifier = (cast_expression "(uint *)param_1[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) })))) (expression_statement "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);" (assignment_expression "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2)" identifier = (cast_expression "(int *)((int)unaff_s3 + (int)unaff_s2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)unaff_s2)" ( (binary_expression "(int)unaff_s3 + (int)unaff_s2" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "unaff_s7 = (int)unaff_s3 + unaff_s6;" (assignment_expression "unaff_s7 = (int)unaff_s3 + unaff_s6" identifier = (binary_expression "(int)unaff_s3 + unaff_s6" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (expression_statement "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);" (assignment_expression "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6)" identifier = (cast_expression "(undefined4 *)((int)local_3c + unaff_s6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + unaff_s6)" ( (binary_expression "(int)local_3c + unaff_s6" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" * identifier) = number_literal) ;) (expression_statement "unaff_s6 = 0xffffffff;" (assignment_expression "unaff_s6 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar4 = 0x50;" (assignment_expression "iVar4 = 0x50" identifier = number_literal) ;) (do_statement "do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);" do (compound_statement "{\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    }" { (expression_statement "unaff_s5 = iVar4;" (assignment_expression "unaff_s5 = iVar4" identifier = identifier) ;) (expression_statement "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);" (call_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0)" (parenthesized_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(param_2 + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(param_2 + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(param_2 + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_2 + 0x10) + 4)" ( (binary_expression "*(int *)(param_2 + 0x10) + 4" (pointer_expression "*(int *)(param_2 + 0x10)" * (cast_expression "(int *)(param_2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(param_2,unaff_s3,unaff_s0)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" identifier = identifier) ;) (expression_statement "iVar4 = unaff_s7;" (assignment_expression "iVar4 = unaff_s7" identifier = identifier) ;) (expression_statement "puVar8 = unaff_s2;" (assignment_expression "puVar8 = unaff_s2" identifier = identifier) ;) (do_statement "do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);" do (compound_statement "{\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      }" { (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" identifier = (binary_expression "puVar8 + -1" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) goto joined_r0x00036070;" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto joined_r0x00036070;" goto statement_identifier ;)) (expression_statement "puVar20 = (undefined4 *)(iVar4 + -4);" (assignment_expression "puVar20 = (undefined4 *)(iVar4 + -4)" identifier = (cast_expression "(undefined4 *)(iVar4 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4)" ( (binary_expression "iVar4 + -4" identifier + number_literal) )))) ;) (expression_statement "param_3 = (uint *)*puVar8;" (assignment_expression "param_3 = (uint *)*puVar8" identifier = (cast_expression "(uint *)*puVar8" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier))) ;) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "((uint *)*puVar20 == param_3)" ( (binary_expression "(uint *)*puVar20 == param_3" (cast_expression "(uint *)*puVar20" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier)) == identifier) )) ;) (expression_statement "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);" (assignment_expression "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20)" identifier = (cast_expression "(uint *)(uint)(param_3 < (uint *)*puVar20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(param_3 < (uint *)*puVar20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 < (uint *)*puVar20)" ( (binary_expression "param_3 < (uint *)*puVar20" identifier < (cast_expression "(uint *)*puVar20" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier))) ))))) ;) (if_statement "if (puVar16 == (uint *)0x0) goto LAB_00036094;" if (parenthesized_expression "(puVar16 == (uint *)0x0)" ( (binary_expression "puVar16 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036094;" goto statement_identifier ;)) (labeled_statement "joined_r0x00036070:\n      iVar4 = unaff_s5 + -1;" statement_identifier : (expression_statement "iVar4 = unaff_s5 + -1;" (assignment_expression "iVar4 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(unaff_s5 + -1 != 0)" ( (binary_expression "unaff_s5 + -1 != 0" (binary_expression "unaff_s5 + -1" identifier + number_literal) != number_literal) )) ;) (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) (expression_statement "puVar16 = unaff_s3;" (assignment_expression "puVar16 = unaff_s3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);" (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,unaff_s3,local_3c,local_34)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "param_3 = local_3c;" (assignment_expression "param_3 = local_3c" identifier = identifier) ;) (labeled_statement "LAB_00036094:\n    iVar4 = *piVar5;" statement_identifier : (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;)) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" identifier = identifier) ;) (while_statement "while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" while (parenthesized_expression "((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)))" ( (parenthesized_expression "(iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))" ( (binary_expression "iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)" (binary_expression "iVar4 == 0" identifier == number_literal) && (parenthesized_expression "(uVar2 = uVar2 - 1, uVar2 != 0)" ( (comma_expression "uVar2 = uVar2 - 1, uVar2 != 0" (assignment_expression "uVar2 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) , (binary_expression "uVar2 != 0" identifier != number_literal)) ))) )) )) (compound_statement "{\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" { (expression_statement "iVar4 = *(int *)(unaff_s7 + -8);" (assignment_expression "iVar4 = *(int *)(unaff_s7 + -8)" identifier = (pointer_expression "*(int *)(unaff_s7 + -8)" * (cast_expression "(int *)(unaff_s7 + -8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s7 + -8)" ( (binary_expression "unaff_s7 + -8" identifier + number_literal) ))))) ;) (expression_statement "unaff_s7 = unaff_s7 + -4;" (assignment_expression "unaff_s7 = unaff_s7 + -4" identifier = (binary_expression "unaff_s7 + -4" identifier + number_literal)) ;) })) (expression_statement "param_1[1] = uVar2;" (assignment_expression "param_1[1] = uVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar14 = local_30;" (assignment_expression "puVar14 = local_30" identifier = identifier) ;) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (uint *)0x0)" ( (binary_expression "local_30 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (local_2c == *(int *)puVar29) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar29)" ( (binary_expression "local_2c == *(int *)puVar29" identifier == (pointer_expression "*(int *)puVar29" * (cast_expression "(int *)puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar36 = __gmpz_xor;" (assignment_expression "pcVar36 = __gmpz_xor" identifier = identifier) ;) (expression_statement "puVar29 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar29 + 0x68dd0;" (assignment_expression "puVar30 = puVar29 + 0x68dd0" identifier = (binary_expression "puVar29 + 0x68dd0" identifier + number_literal)) ;) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) (expression_statement "puVar35 = puVar32 + -0x58;" (assignment_expression "puVar35 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) (expression_statement "*(uint *)(puVar32 + -0x10) = unaff_s6;" (assignment_expression "*(uint *)(puVar32 + -0x10) = unaff_s6" (pointer_expression "*(uint *)(puVar32 + -0x10)" * (cast_expression "(uint *)(puVar32 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x10)" ( (binary_expression "puVar32 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar32 + -0x24) = local_34;" (assignment_expression "*(uint *)(puVar32 + -0x24) = local_34" (pointer_expression "*(uint *)(puVar32 + -0x24)" * (cast_expression "(uint *)(puVar32 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x24)" ( (binary_expression "puVar32 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar5 = *(int **)(puVar29 + 0x612d0);" (assignment_expression "piVar5 = *(int **)(puVar29 + 0x612d0)" identifier = (pointer_expression "*(int **)(puVar29 + 0x612d0)" * (cast_expression "(int **)(puVar29 + 0x612d0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x612d0)" ( (binary_expression "puVar29 + 0x612d0" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = (uint *)puVar16[1];" (assignment_expression "puVar23 = (uint *)puVar16[1]" identifier = (cast_expression "(uint *)puVar16[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar32 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar32 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar32 + -8)" * (cast_expression "(undefined1 **)(puVar32 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -8)" ( (binary_expression "puVar32 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0xc) = unaff_s7;" (assignment_expression "*(int *)(puVar32 + -0xc) = unaff_s7" (pointer_expression "*(int *)(puVar32 + -0xc)" * (cast_expression "(int *)(puVar32 + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xc)" ( (binary_expression "puVar32 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar32 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar32 + -0x14)" * (cast_expression "(int *)(puVar32 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x14)" ( (binary_expression "puVar32 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x18) = param_2;" (assignment_expression "*(int *)(puVar32 + -0x18) = param_2" (pointer_expression "*(int *)(puVar32 + -0x18)" * (cast_expression "(int *)(puVar32 + -0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x18)" ( (binary_expression "puVar32 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)(puVar32 + -0x1c)" * (cast_expression "(uint **)(puVar32 + -0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x1c)" ( (binary_expression "puVar32 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0x20) = unaff_s2;" (assignment_expression "*(undefined4 **)(puVar32 + -0x20) = unaff_s2" (pointer_expression "*(undefined4 **)(puVar32 + -0x20)" * (cast_expression "(undefined4 **)(puVar32 + -0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x20)" ( (binary_expression "puVar32 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar32 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar36" (pointer_expression "*(code **)(puVar32 + -4)" * (cast_expression "(code **)(puVar32 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -4)" ( (binary_expression "puVar32 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)(puVar32 + -0x28) = unaff_s0" (pointer_expression "*(uint **)(puVar32 + -0x28)" * (cast_expression "(uint **)(puVar32 + -0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar32 + -0x48) = puVar30;" (assignment_expression "*(undefined **)(puVar32 + -0x48) = puVar30" (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar32 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar32 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar32 + -0x30)" * (cast_expression "(undefined4 *)(puVar32 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar27 = (uint *)param_3[1];" (assignment_expression "puVar27 = (uint *)param_3[1]" identifier = (cast_expression "(uint *)param_3[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[1]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = (uint *)puVar16[2];" (assignment_expression "puVar26 = (uint *)puVar16[2]" identifier = (cast_expression "(uint *)puVar16[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar28 = (uint *)param_3[2];" (assignment_expression "puVar28 = (uint *)param_3[2]" identifier = (cast_expression "(uint *)param_3[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "*(int *)(puVar32 + -0x2c) = *piVar5;" (assignment_expression "*(int *)(puVar32 + -0x2c) = *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" * (cast_expression "(int *)(puVar32 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puVar10 = (uint *)-(int)puVar23;" (assignment_expression "puVar10 = (uint *)-(int)puVar23" identifier = (cast_expression "(uint *)-(int)puVar23" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar23" - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (if_statement "if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" if (parenthesized_expression "((int)puVar23 < 0)" ( (binary_expression "(int)puVar23 < 0" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }" { (expression_statement "puVar16 = puVar23;" (assignment_expression "puVar16 = puVar23" identifier = identifier) ;) (expression_statement "puVar15 = puVar26;" (assignment_expression "puVar15 = puVar26" identifier = identifier) ;) (if_statement "if (-1 < (int)puVar27) goto LAB_0003630c;" if (parenthesized_expression "(-1 < (int)puVar27)" ( (binary_expression "-1 < (int)puVar27" number_literal < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0003630c;" goto statement_identifier ;)) (expression_statement "puVar25 = (uint *)-(int)puVar27;" (assignment_expression "puVar25 = (uint *)-(int)puVar27" identifier = (cast_expression "(uint *)-(int)puVar27" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar27" - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "uVar2 = ((int)puVar10 - (int)puVar27) * 4;" (assignment_expression "uVar2 = ((int)puVar10 - (int)puVar27) * 4" identifier = (binary_expression "((int)puVar10 - (int)puVar27) * 4" (parenthesized_expression "((int)puVar10 - (int)puVar27)" ( (binary_expression "(int)puVar10 - (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }" { (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar2 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" ( (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" identifier = (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal)) ;) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" identifier = (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + iVar4 + -0x48)" ( (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" identifier = identifier) ;) }) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" else (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar29 + 0x61080)" * (cast_expression "(code **)(puVar29 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x61080)" ( (binary_expression "puVar29 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar32 + -0x38) = puVar25;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar25" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar10;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar10" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30)" identifier = (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar36)(puVar32 + -0x30)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar18 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar18 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "puVar15 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar15 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) }))) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "puVar19 = puVar16 + (int)puVar15;" (assignment_expression "puVar19 = puVar16 + (int)puVar15" identifier = (binary_expression "puVar16 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar16 = uVar2 - 1;" (assignment_expression "*puVar16 = uVar2 - 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }" { (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" { (expression_statement "uVar2 = puVar26[1];" (assignment_expression "uVar2 = puVar26[1]" identifier = (subscript_expression "puVar26[1]" identifier [ number_literal ])) ;) (expression_statement "puVar16[1] = uVar2 - 1;" (assignment_expression "puVar16[1] = uVar2 - 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" { (expression_statement "puVar12 = puVar26 + 2;" (assignment_expression "puVar12 = puVar26 + 2" identifier = (binary_expression "puVar26 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar7 = puVar16 + 2;" (assignment_expression "puVar7 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" do (compound_statement "{\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" { (if_statement "if ((int)puVar15 <= iVar4) goto LAB_000365a4;" if (parenthesized_expression "((int)puVar15 <= iVar4)" ( (binary_expression "(int)puVar15 <= iVar4" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" 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 ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" if (parenthesized_expression "((puVar16 != puVar26) && (iVar4 < (int)puVar15))" ( (binary_expression "(puVar16 != puVar26) && (iVar4 < (int)puVar15)" (parenthesized_expression "(puVar16 != puVar26)" ( (binary_expression "puVar16 != puVar26" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar15)" ( (binary_expression "iVar4 < (int)puVar15" identifier < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" { (expression_statement "puVar12 = puVar26 + iVar4;" (assignment_expression "puVar12 = puVar26 + iVar4" identifier = (binary_expression "puVar26 + iVar4" identifier + identifier)) ;) (expression_statement "puVar26 = puVar26 + (int)puVar15;" (assignment_expression "puVar26 = puVar26 + (int)puVar15" identifier = (binary_expression "puVar26 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar7 = puVar16 + iVar4;" (assignment_expression "puVar7 = puVar16 + iVar4" identifier = (binary_expression "puVar16 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);" do (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != puVar26)" ( (binary_expression "puVar12 != puVar26" identifier != identifier) )) ;) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) (goto_statement "goto LAB_000365a8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000365a4:\n      uVar2 = *puVar28;" statement_identifier : (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;)) }) (else_clause "else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" else (compound_statement "{\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" { (if_statement "if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;" if (parenthesized_expression "((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff))" ( (binary_expression "(puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar16 == puVar26)" ( (binary_expression "puVar16 == puVar26" identifier == identifier) )) || (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" ( (binary_expression "puVar23 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_000365a4;" goto statement_identifier ;)) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" identifier = identifier) ;) (do_statement "do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);" do (compound_statement "{\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      }" { (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar15)" ( (binary_expression "iVar4 < (int)puVar15" identifier < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" identifier = (pointer_expression "*puVar28" * identifier)) ;) }))) (labeled_statement "LAB_000365a8:\n    *puVar19 = uVar2 - 1;" statement_identifier : (expression_statement "*puVar19 = uVar2 - 1;" (assignment_expression "*puVar19 = uVar2 - 1" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;)) (if_statement "if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }" { (if_statement "if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" if (parenthesized_expression "(puVar27 != (uint *)0xffffffff)" ( (binary_expression "puVar27 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" { (expression_statement "uVar2 = puVar28[1];" (assignment_expression "uVar2 = puVar28[1]" identifier = (subscript_expression "puVar28[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar2 - 1;" (assignment_expression "puVar19[1] = uVar2 - 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" { (expression_statement "puVar12 = puVar28 + 2;" (assignment_expression "puVar12 = puVar28 + 2" identifier = (binary_expression "puVar28 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar7 = puVar19 + 2;" (assignment_expression "puVar7 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" do (compound_statement "{\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "bVar1 = (int)puVar18 <= iVar4;" (assignment_expression "bVar1 = (int)puVar18 <= iVar4" identifier = (binary_expression "(int)puVar18 <= iVar4" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_00036608;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00036608;" goto statement_identifier ;)) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" * identifier) = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" 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 ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" if (parenthesized_expression "((puVar28 != puVar19) && (iVar4 < (int)puVar18))" ( (binary_expression "(puVar28 != puVar19) && (iVar4 < (int)puVar18)" (parenthesized_expression "(puVar28 != puVar19)" ( (binary_expression "puVar28 != puVar19" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar18)" ( (binary_expression "iVar4 < (int)puVar18" identifier < (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" { (expression_statement "puVar12 = puVar28 + iVar4;" (assignment_expression "puVar12 = puVar28 + iVar4" identifier = (binary_expression "puVar28 + iVar4" identifier + identifier)) ;) (expression_statement "puVar7 = puVar19 + iVar4;" (assignment_expression "puVar7 = puVar19 + iVar4" identifier = (binary_expression "puVar19 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);" do (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" { (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" * identifier) = identifier) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar28 + (int)puVar18 != puVar12)" ( (binary_expression "puVar28 + (int)puVar18 != puVar12" (binary_expression "puVar28 + (int)puVar18" identifier + (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) != identifier) )) ;) })) })) }) (else_clause "else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" else (if_statement "if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" if (parenthesized_expression "((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff))" ( (binary_expression "(puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" (parenthesized_expression "(puVar28 != puVar19)" ( (binary_expression "puVar28 != puVar19" identifier != identifier) )) && (parenthesized_expression "(iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" ( (comma_expression "iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "iVar4 = 1" identifier = number_literal) , (comma_expression "puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "puVar7 = puVar19" identifier = identifier) , (binary_expression "puVar27 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" { (do_statement "do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);" do (compound_statement "{\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      }" { (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" identifier = (binary_expression "puVar28 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar7[1] = *puVar28;" (assignment_expression "puVar7[1] = *puVar28" (subscript_expression "puVar7[1]" identifier [ number_literal ]) = (pointer_expression "*puVar28" * identifier)) ;) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar18)" ( (binary_expression "iVar4 < (int)puVar18" identifier < (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) })))) (labeled_statement "LAB_00036608:\n    puVar28 = puVar19;" statement_identifier : (expression_statement "puVar28 = puVar19;" (assignment_expression "puVar28 = puVar19" identifier = identifier) ;)) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" if (parenthesized_expression "((int)puVar27 <= (int)puVar23)" ( (binary_expression "(int)puVar27 <= (int)puVar23" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" { (expression_statement "puVar28 = puVar16;" (assignment_expression "puVar28 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = puVar19;" (assignment_expression "puVar16 = puVar19" identifier = identifier) ;) (expression_statement "unaff_s0 = puVar18;" (assignment_expression "unaff_s0 = puVar18" identifier = identifier) ;) (expression_statement "puVar25 = puVar15;" (assignment_expression "puVar25 = puVar15" identifier = identifier) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) })) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }" if (parenthesized_expression "((int)*puVar14 < (int)unaff_s0)" ( (binary_expression "(int)*puVar14 < (int)unaff_s0" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }" { (expression_statement "*(uint **)(puVar32 + -0x38) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar28;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar28" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar2 = (*pcVar36)(puVar14,unaff_s0);" (assignment_expression "uVar2 = (*pcVar36)(puVar14,unaff_s0)" identifier = (call_expression "(*pcVar36)(puVar14,unaff_s0)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar14,unaff_s0)" ( identifier , identifier )))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar28 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      uVar2 = puVar14[2];\n    }" else (compound_statement "{\n      uVar2 = puVar14[2];\n    }" { (expression_statement "uVar2 = puVar14[2];" (assignment_expression "uVar2 = puVar14[2]" identifier = (subscript_expression "puVar14[2]" identifier [ number_literal ])) ;) }))) (if_statement "if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" if (parenthesized_expression "(unaff_s0 == puVar25)" ( (binary_expression "unaff_s0 == puVar25" identifier == identifier) )) (compound_statement "{\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }" { (expression_statement "puVar10 = (uint *)((int)unaff_s0 << 2);" (assignment_expression "puVar10 = (uint *)((int)unaff_s0 << 2)" identifier = (cast_expression "(uint *)((int)unaff_s0 << 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 << 2)" ( (binary_expression "(int)unaff_s0 << 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) }) (else_clause "else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" else (compound_statement "{\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" { (expression_statement "puVar10 = (uint *)((int)puVar25 * 4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 * 4)" identifier = (cast_expression "(uint *)((int)puVar25 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 * 4)" ( (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "puVar18 = puVar16 + (int)puVar25;" (assignment_expression "puVar18 = puVar16 + (int)puVar25" identifier = (binary_expression "puVar16 + (int)puVar25" identifier + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25))" identifier = (cast_expression "(byte *)((int)unaff_s0 + (-1 - (int)puVar25))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar25)" ( (binary_expression "-1 - (int)puVar25" number_literal - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar10);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar10)" identifier = (cast_expression "(uint *)(uVar2 + (int)puVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + (int)puVar10)" ( (binary_expression "uVar2 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" { (do_statement "do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" identifier = (binary_expression "puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" identifier + (cast_expression "(int)((int)unaff_s0 + (-1 - (int)puVar25))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" ( (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar25)" ( (binary_expression "-1 - (int)puVar25" number_literal - (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar19 = uVar24;" (assignment_expression "*puVar19 = uVar24" (pointer_expression "*puVar19" * identifier) = identifier) ;) }))) (expression_statement "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);" (assignment_expression "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4)" identifier = (cast_expression "(uint *)((int)((int)puVar27 + (int)puVar25) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)puVar27 + (int)puVar25) * 4)" ( (binary_expression "(int)((int)puVar27 + (int)puVar25) * 4" (cast_expression "(int)((int)puVar27 + (int)puVar25)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + (int)puVar25)" ( (binary_expression "(int)puVar27 + (int)puVar25" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ))) * number_literal) )))) ;) (do_statement "do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);" do (compound_statement "{\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    }" { (expression_statement "puVar27 = (uint *)((int)puVar28 + (int)puVar15);" (assignment_expression "puVar27 = (uint *)((int)puVar28 + (int)puVar15)" identifier = (cast_expression "(uint *)((int)puVar28 + (int)puVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + (int)puVar15)" ( (binary_expression "(int)puVar28 + (int)puVar15" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar16 + (int)puVar15);" (assignment_expression "pbVar11 = (byte *)((int)puVar16 + (int)puVar15)" identifier = (cast_expression "(byte *)((int)puVar16 + (int)puVar15)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + (int)puVar15)" ( (binary_expression "(int)puVar16 + (int)puVar15" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar15);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar15)" identifier = (cast_expression "(uint *)(uVar2 + (int)puVar15)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 + (int)puVar15)" ( (binary_expression "uVar2 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar19 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar19 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar19" * identifier) = (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(puVar10 != puVar15)" ( (binary_expression "puVar10 != puVar15" identifier != identifier) )) ;) (expression_statement "iVar4 = uVar2 + (int)unaff_s0 * 4;" (assignment_expression "iVar4 = uVar2 + (int)unaff_s0 * 4" identifier = (binary_expression "uVar2 + (int)unaff_s0 * 4" identifier + (binary_expression "(int)unaff_s0 * 4" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (do_statement "do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);" do (compound_statement "{\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    }" { (if_statement "if (*(int *)(iVar4 + -4) != 0) break;" if (parenthesized_expression "(*(int *)(iVar4 + -4) != 0)" ( (binary_expression "*(int *)(iVar4 + -4) != 0" (pointer_expression "*(int *)(iVar4 + -4)" * (cast_expression "(int *)(iVar4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -4)" ( (binary_expression "iVar4 + -4" identifier + number_literal) )))) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" identifier = (cast_expression "(uint *)((int)unaff_s0 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + -1)" ( (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" identifier = (binary_expression "iVar4 + -4" identifier + number_literal)) ;) }) while (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }) (else_clause "else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" else (compound_statement "{\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" { (if_statement "if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" if (parenthesized_expression "(-1 < (int)puVar27)" ( (binary_expression "-1 < (int)puVar27" number_literal < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" { (expression_statement "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);" (assignment_expression "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27)" identifier = (cast_expression "(uint *)(uint)((int)puVar23 < (int)puVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)puVar23 < (int)puVar27)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar23 < (int)puVar27)" ( (binary_expression "(int)puVar23 < (int)puVar27" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar10 = puVar14;" (assignment_expression "puVar10 = puVar14" identifier = identifier) ;) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) (if_statement "if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" if (parenthesized_expression "(puVar18 == (uint *)0x0)" ( (binary_expression "puVar18 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar29 + 0x6134c)" * (cast_expression "(code **)(puVar29 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x6134c)" ( (binary_expression "puVar29 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar14 < (int)puVar23)" ( (binary_expression "(int)*puVar14 < (int)puVar23" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" { (expression_statement "*(uint **)(puVar32 + -0x34) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x34) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = puVar23;" (assignment_expression "puVar18 = puVar23" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" * (cast_expression "(int *)(puVar32 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" if (parenthesized_expression "((puVar25 != puVar26) && (puVar23 != puVar27))" ( (binary_expression "(puVar25 != puVar26) && (puVar23 != puVar27)" (parenthesized_expression "(puVar25 != puVar26)" ( (binary_expression "puVar25 != puVar26" identifier != identifier) )) && (parenthesized_expression "(puVar23 != puVar27)" ( (binary_expression "puVar23 != puVar27" identifier != identifier) ))) )) (compound_statement "{\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" { (expression_statement "puVar19 = puVar26 + (int)puVar27;" (assignment_expression "puVar19 = puVar26 + (int)puVar27" identifier = (binary_expression "puVar26 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27))" identifier = (cast_expression "(byte *)((int)puVar23 + (-1 - (int)puVar27))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar7 = puVar25 + (int)puVar27;" (assignment_expression "puVar7 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" { (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" identifier = (binary_expression "puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" identifier + (cast_expression "(int)((int)puVar23 + (-1 - (int)puVar27))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" if (parenthesized_expression "(puVar27 != (uint *)0x0)" ( (binary_expression "puVar27 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" { (expression_statement "puVar15 = (uint *)((int)puVar27 << 2);" (assignment_expression "puVar15 = (uint *)((int)puVar27 << 2)" identifier = (cast_expression "(uint *)((int)puVar27 << 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 << 2)" ( (binary_expression "(int)puVar27 << 2" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )))) ;) (do_statement "do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);" do (compound_statement "{\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          }" { (expression_statement "puVar27 = (uint *)((int)puVar26 + (int)puVar16);" (assignment_expression "puVar27 = (uint *)((int)puVar26 + (int)puVar16)" identifier = (cast_expression "(uint *)((int)puVar26 + (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + (int)puVar16)" ( (binary_expression "(int)puVar26 + (int)puVar16" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar28 + (int)puVar16);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + (int)puVar16)" identifier = (cast_expression "(byte *)((int)puVar28 + (int)puVar16)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + (int)puVar16)" ( (binary_expression "(int)puVar28 + (int)puVar16" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar25 + (int)puVar16);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + (int)puVar16)" identifier = (cast_expression "(uint *)((int)puVar25 + (int)puVar16)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + (int)puVar16)" ( (binary_expression "(int)puVar25 + (int)puVar16" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar10 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "(puVar15 != puVar16)" ( (binary_expression "puVar15 != puVar16" identifier != identifier) )) ;) })) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (if_statement "if (puVar23 != (uint *)0x0) goto LAB_00036910;" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036910;" goto statement_identifier ;)) (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" else (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" identifier = (pointer_expression "*(code **)(puVar29 + 0x6134c)" * (cast_expression "(code **)(puVar29 + 0x6134c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x6134c)" ( (binary_expression "puVar29 + 0x6134c" identifier + number_literal) ))))) ;) (if_statement "if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" if (parenthesized_expression "((int)*puVar14 < (int)puVar27)" ( (binary_expression "(int)*puVar14 < (int)puVar27" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" { (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar18 = puVar27;" (assignment_expression "puVar18 = puVar27" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" * (cast_expression "(int *)(puVar32 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) + number_literal) ))))) ;) })) (if_statement "if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" if (parenthesized_expression "(puVar25 != puVar28)" ( (binary_expression "puVar25 != puVar28" identifier != identifier) )) (compound_statement "{\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" { (expression_statement "puVar19 = puVar28 + (int)puVar23;" (assignment_expression "puVar19 = puVar28 + (int)puVar23" identifier = (binary_expression "puVar28 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23))" identifier = (cast_expression "(byte *)((int)puVar27 + (-1 - (int)puVar23))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" ( (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar23)" ( (binary_expression "-1 - (int)puVar23" number_literal - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar7 = puVar25 + (int)puVar23;" (assignment_expression "puVar7 = puVar25 + (int)puVar23" identifier = (binary_expression "puVar25 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" { (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" identifier = (cast_expression "(uint *)*puVar19" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" identifier = (binary_expression "puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" identifier + (cast_expression "(int)((int)puVar27 + (-1 - (int)puVar23))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" ( (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar23)" ( (binary_expression "-1 - (int)puVar23" number_literal - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" * identifier) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) (if_statement "if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" if (parenthesized_expression "(puVar23 != (uint *)0x0)" ( (binary_expression "puVar23 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);" do (compound_statement "{\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          }" { (expression_statement "puVar16 = (uint *)((int)puVar26 + iVar4);" (assignment_expression "puVar16 = (uint *)((int)puVar26 + iVar4)" identifier = (cast_expression "(uint *)((int)puVar26 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + iVar4)" ( (binary_expression "(int)puVar26 + iVar4" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar28 + iVar4);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + iVar4)" identifier = (cast_expression "(byte *)((int)puVar28 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + iVar4)" ( (binary_expression "(int)puVar28 + iVar4" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar25 + iVar4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + iVar4)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar4)" ( (binary_expression "(int)puVar25 + iVar4" (cast_expression "(int)puVar25" ( (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 "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" identifier = (pointer_expression "*(uint **)pbVar11" * (cast_expression "(uint **)pbVar11" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "*puVar10 = *puVar16 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar16 ^ (uint)puVar18" (pointer_expression "*puVar10" * identifier) = (binary_expression "*puVar16 ^ (uint)puVar18" (pointer_expression "*puVar16" * identifier) ^ (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) }) while (parenthesized_expression "((int)puVar23 << 2 != iVar4)" ( (binary_expression "(int)puVar23 << 2 != iVar4" (binary_expression "(int)puVar23 << 2" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) != identifier) )) ;) })) (labeled_statement "LAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" statement_identifier : (if_statement "if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" if (parenthesized_expression "(puVar25[(int)((int)puVar27 + -1)] == 0)" ( (binary_expression "puVar25[(int)((int)puVar27 + -1)] == 0" (subscript_expression "puVar25[(int)((int)puVar27 + -1)]" identifier [ (cast_expression "(int)((int)puVar27 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar27 + -1)" ( (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ]) == number_literal) )) (compound_statement "{\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" { (expression_statement "puVar16 = puVar25 + (int)puVar27;" (assignment_expression "puVar16 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);" do (compound_statement "{\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          }" { (expression_statement "puVar27 = (uint *)((int)puVar27 + -1);" (assignment_expression "puVar27 = (uint *)((int)puVar27 + -1)" identifier = (cast_expression "(uint *)((int)puVar27 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar27 + -1)" ( (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }" if (parenthesized_expression "(puVar27 == (uint *)0x0)" ( (binary_expression "puVar27 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              puVar27 = (uint *)0x0;\n              break;\n            }" { (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "puVar28 = puVar16 + -2;" (assignment_expression "puVar28 = puVar16 + -2" identifier = (binary_expression "puVar16 + -2" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" identifier = (binary_expression "puVar16 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*puVar28 == 0)" ( (binary_expression "*puVar28 == 0" (pointer_expression "*puVar28" * identifier) == number_literal) )) ;) }))) }))) (expression_statement "puVar14[1] = (uint)puVar27;" (assignment_expression "puVar14[1] = (uint)puVar27" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (cast_expression "(uint)puVar27" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_000366e0;" goto statement_identifier ;) })) (expression_statement "puVar10 = (uint *)-(int)puVar27;" (assignment_expression "puVar10 = (uint *)-(int)puVar27" identifier = (cast_expression "(uint *)-(int)puVar27" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)puVar27" - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "param_3 = puVar16;" (assignment_expression "param_3 = puVar16" identifier = identifier) ;) (expression_statement "puVar16 = puVar27;" (assignment_expression "puVar16 = puVar27" identifier = identifier) ;) (expression_statement "puVar15 = puVar28;" (assignment_expression "puVar15 = puVar28" identifier = identifier) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (expression_statement "puVar28 = puVar26;" (assignment_expression "puVar28 = puVar26" identifier = identifier) ;) (labeled_statement "LAB_0003630c:\n    puVar26 = puVar15;" statement_identifier : (expression_statement "puVar26 = puVar15;" (assignment_expression "puVar26 = puVar15" identifier = identifier) ;)) (expression_statement "puVar23 = puVar16;" (assignment_expression "puVar23 = puVar16" identifier = identifier) ;) (expression_statement "uVar2 = (int)puVar10 * 4;" (assignment_expression "uVar2 = (int)puVar10 * 4" identifier = (binary_expression "(int)puVar10 * 4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" if (parenthesized_expression "(uVar2 < 0x7f01)" ( (binary_expression "uVar2 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }" { (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar2 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" ( (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" identifier = (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + iVar4 + -0x48)" ( (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" identifier = (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" identifier + identifier) + number_literal)) ;) }) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" else (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" { (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" identifier = (pointer_expression "*(code **)(puVar29 + 0x61080)" * (cast_expression "(code **)(puVar29 + 0x61080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29 + 0x61080)" ( (binary_expression "puVar29 + 0x61080" identifier + number_literal) ))))) ;) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar32 + -0x34) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x34) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x34)" * (cast_expression "(uint *)(puVar32 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" identifier = (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar36)(puVar32 + -0x30,uVar2)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar32 + -0x30,uVar2)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "param_3 = *(uint **)(puVar32 + -0x38);" (assignment_expression "param_3 = *(uint **)(puVar32 + -0x38)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x34);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint *)(puVar32 + -0x34)" * (cast_expression "(uint *)(puVar32 + -0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" identifier = (binary_expression "puVar32 + -0x58" identifier + number_literal)) ;) }))) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "*puVar16 = uVar24 - 1;" (assignment_expression "*puVar16 = uVar24 - 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (if_statement "if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }" { (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" { (expression_statement "uVar24 = puVar26[1];" (assignment_expression "uVar24 = puVar26[1]" identifier = (subscript_expression "puVar26[1]" identifier [ number_literal ])) ;) (expression_statement "puVar16[1] = uVar24 - 1;" (assignment_expression "puVar16[1] = uVar24 - 1" (subscript_expression "puVar16[1]" identifier [ number_literal ]) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (if_statement "if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" if (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }" { (expression_statement "puVar18 = puVar26 + 2;" (assignment_expression "puVar18 = puVar26 + 2" identifier = (binary_expression "puVar26 + 2" identifier + number_literal)) ;) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar15 = puVar16 + 2;" (assignment_expression "puVar15 = puVar16 + 2" identifier = (binary_expression "puVar16 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);" do (compound_statement "{\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          }" { (if_statement "if ((int)puVar10 <= iVar4) goto LAB_00036390;" if (parenthesized_expression "((int)puVar10 <= iVar4)" ( (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24 - 1;" (assignment_expression "*puVar15 = uVar24 - 1" (pointer_expression "*puVar15" * identifier) = (binary_expression "uVar24 - 1" identifier - number_literal)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar24 == 0)" ( (binary_expression "uVar24 == 0" 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 ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" if (parenthesized_expression "((puVar26 != puVar16) && (iVar4 < (int)puVar10))" ( (binary_expression "(puVar26 != puVar16) && (iVar4 < (int)puVar10)" (parenthesized_expression "(puVar26 != puVar16)" ( (binary_expression "puVar26 != puVar16" identifier != identifier) )) && (parenthesized_expression "(iVar4 < (int)puVar10)" ( (binary_expression "iVar4 < (int)puVar10" identifier < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" { (expression_statement "puVar18 = puVar26 + iVar4;" (assignment_expression "puVar18 = puVar26 + iVar4" identifier = (binary_expression "puVar26 + iVar4" identifier + identifier)) ;) (expression_statement "puVar26 = puVar26 + (int)puVar10;" (assignment_expression "puVar26 = puVar26 + (int)puVar10" identifier = (binary_expression "puVar26 + (int)puVar10" identifier + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar15 = puVar16 + iVar4;" (assignment_expression "puVar15 = puVar16 + iVar4" identifier = (binary_expression "puVar16 + iVar4" identifier + identifier)) ;) (do_statement "do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);" do (compound_statement "{\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          }" { (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar26 != puVar18)" ( (binary_expression "puVar26 != puVar18" identifier != identifier) )) ;) })) })) (labeled_statement "LAB_00036390:\n      puVar15 = puVar10;" statement_identifier : (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;)) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" if (parenthesized_expression "((int)puVar10 <= (int)puVar27)" ( (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        puVar15 = puVar27;\n      }" { (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) })) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;" if (parenthesized_expression "((int)((int)puVar15 + 1) <= (int)*puVar14)" ( (binary_expression "(int)((int)puVar15 + 1) <= (int)*puVar14" (cast_expression "(int)((int)puVar15 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) <= (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier))) )) (goto_statement "goto LAB_000363b0;" goto statement_identifier ;)) (labeled_statement "LAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;" statement_identifier : (expression_statement "*(uint *)(puVar32 + -0x3c) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x3c) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x3c)" * (cast_expression "(uint *)(puVar32 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x3c)" ( (binary_expression "puVar32 + -0x3c" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" * (cast_expression "(uint **)(puVar32 + -0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "(*pcVar36)(puVar14);" (call_expression "(*pcVar36)(puVar14)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(puVar14)" ( identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" identifier = (cast_expression "(uint *)puVar14[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar14[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x3c);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x3c)" identifier = (pointer_expression "*(uint *)(puVar32 + -0x3c)" * (cast_expression "(uint *)(puVar32 + -0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x3c)" ( (binary_expression "puVar32 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8)" identifier = (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x38) + 8)" * (cast_expression "(uint **)(*(int *)(puVar32 + -0x38) + 8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x38) + 8)" ( (binary_expression "*(int *)(puVar32 + -0x38) + 8" (pointer_expression "*(int *)(puVar32 + -0x38)" * (cast_expression "(int *)(puVar32 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x38)" ( (binary_expression "puVar32 + -0x38" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x34)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x34)" * (cast_expression "(uint **)(puVar32 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x34)" ( (binary_expression "puVar32 + -0x34" identifier + number_literal) ))))) ;) (if_statement "if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;" if (parenthesized_expression "((int)puVar27 <= (int)puVar10)" ( (binary_expression "(int)puVar27 <= (int)puVar10" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000367b0;" goto statement_identifier ;)) (labeled_statement "LAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);" statement_identifier : (expression_statement "puVar23 = (uint *)((int)puVar23 + (int)puVar27);" (assignment_expression "puVar23 = (uint *)((int)puVar23 + (int)puVar27)" identifier = (cast_expression "(uint *)((int)puVar23 + (int)puVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + (int)puVar27)" ( (binary_expression "(int)puVar23 + (int)puVar27" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;)) (expression_statement "pbVar6 = (byte *)((int)puVar28 + uVar2);" (assignment_expression "pbVar6 = (byte *)((int)puVar28 + uVar2)" identifier = (cast_expression "(byte *)((int)puVar28 + uVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + uVar2)" ( (binary_expression "(int)puVar28 + uVar2" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pbVar9 = (byte *)((int)puVar23 + -1);" (assignment_expression "pbVar9 = (byte *)((int)puVar23 + -1)" identifier = (cast_expression "(byte *)((int)puVar23 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 + -1)" ( (binary_expression "(int)puVar23 + -1" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pbVar22 = (byte *)((int)puVar25 + uVar2);" (assignment_expression "pbVar22 = (byte *)((int)puVar25 + uVar2)" identifier = (cast_expression "(byte *)((int)puVar25 + uVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar2)" ( (binary_expression "(int)puVar25 + uVar2" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" identifier = (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar11 = pbVar22;" (assignment_expression "pbVar11 = pbVar22" identifier = identifier) ;) (if_statement "if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" if (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" { (do_statement "do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);" do (compound_statement "{\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        }" { (expression_statement "pbVar6 = pbVar6 + 4;" (assignment_expression "pbVar6 = pbVar6 + 4" identifier = (binary_expression "pbVar6 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)pbVar11 = uVar17;" (assignment_expression "*(undefined4 *)pbVar11 = uVar17" (pointer_expression "*(undefined4 *)pbVar11" * (cast_expression "(undefined4 *)pbVar11" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" identifier = (binary_expression "pbVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" identifier = (pointer_expression "*(undefined4 *)pbVar6" * (cast_expression "(undefined4 *)pbVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 4;" (assignment_expression "pbVar11 = pbVar11 + 4" identifier = (binary_expression "pbVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar9 != (byte *)0x0)" ( (binary_expression "pbVar9 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar23 = (uint *)((int)puVar23 * 4 + -4);" (assignment_expression "puVar23 = (uint *)((int)puVar23 * 4 + -4)" identifier = (cast_expression "(uint *)((int)puVar23 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar23 * 4 + -4)" ( (binary_expression "(int)puVar23 * 4 + -4" (binary_expression "(int)puVar23 * 4" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "pbVar22 = pbVar22 + (int)puVar23;" (assignment_expression "pbVar22 = pbVar22 + (int)puVar23" identifier = (binary_expression "pbVar22 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)pbVar22 = uVar17;" (assignment_expression "*(undefined4 *)pbVar22 = uVar17" (pointer_expression "*(undefined4 *)pbVar22" * (cast_expression "(undefined4 *)pbVar22" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (do_statement "do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);" do (compound_statement "{\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      }" { (expression_statement "puVar10 = (uint *)((int)puVar28 + uVar24);" (assignment_expression "puVar10 = (uint *)((int)puVar28 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar28 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + uVar24)" ( (binary_expression "(int)puVar28 + uVar24" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar16 + uVar24);" (assignment_expression "puVar18 = (uint *)((int)puVar16 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar16 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + uVar24)" ( (binary_expression "(int)puVar16 + uVar24" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar15 = (uint *)((int)puVar25 + uVar24);" (assignment_expression "puVar15 = (uint *)((int)puVar25 + uVar24)" identifier = (cast_expression "(uint *)((int)puVar25 + uVar24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + uVar24)" ( (binary_expression "(int)puVar25 + uVar24" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "uVar24 = uVar24 + 4;" (assignment_expression "uVar24 = uVar24 + 4" identifier = (binary_expression "uVar24 + 4" identifier + number_literal)) ;) (expression_statement "*puVar15 = *puVar10 ^ *puVar18;" (assignment_expression "*puVar15 = *puVar10 ^ *puVar18" (pointer_expression "*puVar15" * identifier) = (binary_expression "*puVar10 ^ *puVar18" (pointer_expression "*puVar10" * identifier) ^ (pointer_expression "*puVar18" * identifier))) ;) }) while (parenthesized_expression "(uVar2 != uVar24)" ( (binary_expression "uVar2 != uVar24" identifier != identifier) )) ;) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar27;" (assignment_expression "puVar10 = puVar27" identifier = identifier) ;) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" if (parenthesized_expression "(uVar2 + 1 != 0)" ( (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (labeled_statement "LAB_00036438:\n      uVar2 = puVar25[1];" statement_identifier : (expression_statement "uVar2 = puVar25[1];" (assignment_expression "uVar2 = puVar25[1]" identifier = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;)) (expression_statement "puVar25[1] = uVar2 + 1;" (assignment_expression "puVar25[1] = uVar2 + 1" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar10;" (assignment_expression "puVar27 = puVar10" identifier = identifier) ;) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" if (parenthesized_expression "(uVar2 + 1 != 0)" ( (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_00036840;" goto statement_identifier ;)) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "puVar16 = puVar25 + 2;" (assignment_expression "puVar16 = puVar25 + 2" identifier = (binary_expression "puVar25 + 2" identifier + number_literal)) ;) (do_statement "do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);" do (compound_statement "{\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      }" { (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" if (parenthesized_expression "((int)puVar10 <= iVar4)" ( (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" { (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" identifier = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*puVar16 = uVar2 + 1;" (assignment_expression "*puVar16 = uVar2 + 1" (pointer_expression "*puVar16" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" identifier = (binary_expression "puVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 + 1 == 0)" ( (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" identifier + number_literal) == number_literal) )) ;) (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) }) (else_clause "else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" else (compound_statement "{\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" { (if_statement "if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;" if (parenthesized_expression "((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff))" ( (binary_expression "(puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar26 == puVar16)" ( (binary_expression "puVar26 == puVar16" identifier == identifier) )) || (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" ( (binary_expression "puVar23 == (uint *)0xffffffff" identifier == (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00036390;" goto statement_identifier ;)) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) (do_statement "do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);" do (compound_statement "{\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      }" { (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar4 < (int)puVar10)" ( (binary_expression "iVar4 < (int)puVar10" identifier < (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" if (parenthesized_expression "((int)puVar10 <= (int)puVar27)" ( (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        puVar15 = puVar27;\n      }" { (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) })) (if_statement "if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" if (parenthesized_expression "((int)*puVar14 < (int)((int)puVar15 + 1))" ( (binary_expression "(int)*puVar14 < (int)((int)puVar15 + 1)" (cast_expression "(int)*puVar14" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar14" * identifier)) < (cast_expression "(int)((int)puVar15 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar15 + 1)" ( (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) )) (compound_statement "{\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" { (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(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) ))))) ;) (goto_statement "goto LAB_00036778;" goto statement_identifier ;) })) (labeled_statement "LAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" statement_identifier : (if_statement "if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" if (parenthesized_expression "((int)puVar10 < (int)puVar27)" ( (binary_expression "(int)puVar10 < (int)puVar27" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000363b8;" goto statement_identifier ;))) (labeled_statement "LAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" statement_identifier : (if_statement "if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" if (parenthesized_expression "(puVar27 == puVar10)" ( (binary_expression "puVar27 == puVar10" identifier == identifier) )) (compound_statement "{\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }" { (expression_statement "iVar4 = (int)puVar10 << 2;" (assignment_expression "iVar4 = (int)puVar10 << 2" identifier = (binary_expression "(int)puVar10 << 2" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ;) (labeled_statement "LAB_00036804:\n        iVar21 = 0;" statement_identifier : (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" identifier = number_literal) ;)) (do_statement "do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);" do (compound_statement "{\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        }" { (expression_statement "puVar15 = (uint *)((int)puVar28 + iVar21);" (assignment_expression "puVar15 = (uint *)((int)puVar28 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar28 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar28 + iVar21)" ( (binary_expression "(int)puVar28 + iVar21" (cast_expression "(int)puVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = (uint *)((int)puVar16 + iVar21);" (assignment_expression "puVar19 = (uint *)((int)puVar16 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar16 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + iVar21)" ( (binary_expression "(int)puVar16 + iVar21" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar18 = (uint *)((int)puVar25 + iVar21);" (assignment_expression "puVar18 = (uint *)((int)puVar25 + iVar21)" identifier = (cast_expression "(uint *)((int)puVar25 + iVar21)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar25 + iVar21)" ( (binary_expression "(int)puVar25 + iVar21" (cast_expression "(int)puVar25" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar21 = iVar21 + 4;" (assignment_expression "iVar21 = iVar21 + 4" identifier = (binary_expression "iVar21 + 4" identifier + number_literal)) ;) (expression_statement "*puVar18 = *puVar15 ^ *puVar19;" (assignment_expression "*puVar18 = *puVar15 ^ *puVar19" (pointer_expression "*puVar18" * identifier) = (binary_expression "*puVar15 ^ *puVar19" (pointer_expression "*puVar15" * identifier) ^ (pointer_expression "*puVar19" * identifier))) ;) }) while (parenthesized_expression "(iVar4 != iVar21)" ( (binary_expression "iVar4 != iVar21" identifier != identifier) )) ;) }) (else_clause "else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" else (compound_statement "{\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" { (expression_statement "iVar4 = (int)puVar27 * 4;" (assignment_expression "iVar4 = (int)puVar27 * 4" identifier = (binary_expression "(int)puVar27 * 4" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "puVar18 = puVar16 + (int)puVar27;" (assignment_expression "puVar18 = puVar16 + (int)puVar27" identifier = (binary_expression "puVar16 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27))" identifier = (cast_expression "(byte *)((int)puVar10 + (-1 - (int)puVar27))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "puVar19 = puVar25 + (int)puVar27;" (assignment_expression "puVar19 = puVar25 + (int)puVar27" identifier = (binary_expression "puVar25 + (int)puVar27" identifier + (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" identifier = identifier) ;) (if_statement "if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" if (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" { (do_statement "do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);" do (compound_statement "{\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          }" { (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) ;) (expression_statement "*puVar15 = uVar2;" (assignment_expression "*puVar15 = uVar2" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" identifier = (binary_expression "puVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar11 != (byte *)0x0)" ( (binary_expression "pbVar11 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" identifier = (binary_expression "puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" identifier + (cast_expression "(int)((int)puVar10 + (-1 - (int)puVar27))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" ( (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(-1 - (int)puVar27)" ( (binary_expression "-1 - (int)puVar27" number_literal - (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))))) ;) })) (expression_statement "*puVar19 = uVar2;" (assignment_expression "*puVar19 = uVar2" (pointer_expression "*puVar19" * identifier) = identifier) ;) (if_statement "if (puVar27 != (uint *)0x0) goto LAB_00036804;" if (parenthesized_expression "(puVar27 != (uint *)0x0)" ( (binary_expression "puVar27 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036804;" goto statement_identifier ;)) })))) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" identifier = (pointer_expression "*puVar25" * identifier)) ;) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" * identifier) = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (if_statement "if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" if (parenthesized_expression "(uVar2 + 1 == 0)" ( (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" { (if_statement "if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;" if (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" ( (binary_expression "puVar23 != (uint *)0xffffffff" identifier != (cast_expression "(uint *)0xffffffff" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00036438;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" identifier = (cast_expression "(uint *)((int)puVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 1)" ( (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" identifier = (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" identifier = identifier) ;) (goto_statement "goto LAB_00036844;" goto statement_identifier ;) })) (labeled_statement "LAB_00036840:\n      puVar18 = (uint *)0x0;" statement_identifier : (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" identifier = identifier) ;) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" identifier = identifier) ;) }))) (labeled_statement "LAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;" statement_identifier : (expression_statement "puVar25[(int)puVar10] = (uint)puVar18;" (assignment_expression "puVar25[(int)puVar10] = (uint)puVar18" (subscript_expression "puVar25[(int)puVar10]" identifier [ (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (expression_statement "uVar2 = (puVar25 + (int)unaff_s0)[-1];" (assignment_expression "uVar2 = (puVar25 + (int)unaff_s0)[-1]" identifier = (subscript_expression "(puVar25 + (int)unaff_s0)[-1]" (parenthesized_expression "(puVar25 + (int)unaff_s0)" ( (binary_expression "puVar25 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )) [ number_literal ])) ;) (expression_statement "puVar16 = puVar25 + (int)unaff_s0;" (assignment_expression "puVar16 = puVar25 + (int)unaff_s0" identifier = (binary_expression "puVar25 + (int)unaff_s0" identifier + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (while_statement "while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" { (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" identifier = (cast_expression "(uint *)((int)unaff_s0 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 + -1)" ( (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;" if (parenthesized_expression "(unaff_s0 == (uint *)0x0)" ( (binary_expression "unaff_s0 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000366d4;" goto statement_identifier ;)) (expression_statement "uVar2 = puVar16[-2];" (assignment_expression "uVar2 = puVar16[-2]" identifier = (subscript_expression "puVar16[-2]" identifier [ number_literal ])) ;) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" identifier = (binary_expression "puVar16 + -1" identifier + number_literal)) ;) })) (expression_statement "unaff_s0 = (uint *)-(int)unaff_s0;" (assignment_expression "unaff_s0 = (uint *)-(int)unaff_s0" identifier = (cast_expression "(uint *)-(int)unaff_s0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)unaff_s0" - (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) }))) (labeled_statement "LAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);" statement_identifier : (expression_statement "puVar10 = *(uint **)(puVar32 + -0x30);" (assignment_expression "puVar10 = *(uint **)(puVar32 + -0x30)" identifier = (pointer_expression "*(uint **)(puVar32 + -0x30)" * (cast_expression "(uint **)(puVar32 + -0x30)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x30)" ( (binary_expression "puVar32 + -0x30" identifier + number_literal) ))))) ;)) (expression_statement "puVar14[1] = (uint)unaff_s0;" (assignment_expression "puVar14[1] = (uint)unaff_s0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" identifier = identifier) ;) (expression_statement "puVar35 = puVar34;" (assignment_expression "puVar35 = puVar34" identifier = identifier) ;) (if_statement "if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }" if (parenthesized_expression "(puVar10 != (uint *)0x0)" ( (binary_expression "puVar10 != (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 **)(puVar32 + -0x48);\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 **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" identifier = (pointer_expression "*(undefined **)(puVar32 + -0x48)" * (cast_expression "(undefined **)(puVar32 + -0x48)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x48)" ( (binary_expression "puVar32 + -0x48" identifier + number_literal) ))))) ;) })) (labeled_statement "LAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar32 + -0x2c) == *piVar5)" ( (binary_expression "*(int *)(puVar32 + -0x2c) == *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" * (cast_expression "(int *)(puVar32 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) )))) == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar36 = *(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 "uVar17 = 0x36bd8;" (assignment_expression "uVar17 = 0x36bd8" identifier = number_literal) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar31 = pcVar36 + 0x68460;" (assignment_expression "pcVar31 = pcVar36 + 0x68460" identifier = (binary_expression "pcVar36 + 0x68460" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar35 + -0x10) = puVar25;" (assignment_expression "*(uint **)(puVar35 + -0x10) = puVar25" (pointer_expression "*(uint **)(puVar35 + -0x10)" * (cast_expression "(uint **)(puVar35 + -0x10)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x10)" ( (binary_expression "puVar35 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x20) = pcVar31;" (assignment_expression "*(code **)(puVar35 + -0x20) = pcVar31" (pointer_expression "*(code **)(puVar35 + -0x20)" * (cast_expression "(code **)(puVar35 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0x14) = puVar27;" (assignment_expression "*(uint **)(puVar35 + -0x14) = puVar27" (pointer_expression "*(uint **)(puVar35 + -0x14)" * (cast_expression "(uint **)(puVar35 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14)" ( (binary_expression "puVar35 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0x18) = unaff_s0;" (assignment_expression "*(uint **)(puVar35 + -0x18) = unaff_s0" (pointer_expression "*(uint **)(puVar35 + -0x18)" * (cast_expression "(uint **)(puVar35 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18)" ( (binary_expression "puVar35 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -4) = uVar17;" (assignment_expression "*(undefined4 *)(puVar35 + -4) = uVar17" (pointer_expression "*(undefined4 *)(puVar35 + -4)" * (cast_expression "(undefined4 *)(puVar35 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -4)" ( (binary_expression "puVar35 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -8) = puVar15;" (assignment_expression "*(uint **)(puVar35 + -8) = puVar15" (pointer_expression "*(uint **)(puVar35 + -8)" * (cast_expression "(uint **)(puVar35 + -8)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -8)" ( (binary_expression "puVar35 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar35 + -0xc) = puVar26;" (assignment_expression "*(uint **)(puVar35 + -0xc) = puVar26" (pointer_expression "*(uint **)(puVar35 + -0xc)" * (cast_expression "(uint **)(puVar35 + -0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc)" ( (binary_expression "puVar35 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar24 = puVar18[1];" (assignment_expression "uVar24 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = uVar24;" (assignment_expression "uVar2 = uVar24" identifier = identifier) ;) (if_statement "if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }" if (parenthesized_expression "((int)uVar24 < 0)" ( (binary_expression "(int)uVar24 < 0" (cast_expression "(int)uVar24" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar2 = -uVar24;\n  }" { (expression_statement "uVar2 = -uVar24;" (assignment_expression "uVar2 = -uVar24" identifier = (unary_expression "-uVar24" - identifier)) ;) })) (if_statement "if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" if (parenthesized_expression "(puVar18 != puVar10)" ( (binary_expression "puVar18 != puVar10" identifier != identifier) )) (compound_statement "{\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" { (expression_statement "uVar3 = puVar18[4];" (assignment_expression "uVar3 = puVar18[4]" identifier = (subscript_expression "puVar18[4]" identifier [ number_literal ])) ;) (if_statement "if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" if (parenthesized_expression "((int)*puVar10 < (int)uVar2)" ( (binary_expression "(int)*puVar10 < (int)uVar2" (cast_expression "(int)*puVar10" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar10" * identifier)) < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }" { (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" (parenthesized_expression "(**(code **)(pcVar36 + 0x609dc))" ( (pointer_expression "**(code **)(pcVar36 + 0x609dc)" * (pointer_expression "*(code **)(pcVar36 + 0x609dc)" * (cast_expression "(code **)(pcVar36 + 0x609dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x609dc)" ( (binary_expression "pcVar36 + 0x609dc" identifier + number_literal) ))))) )) (argument_list "(puVar10,uVar2)" ( identifier , identifier ))))) ;) (expression_statement "pcVar31 = *(code **)(puVar35 + -0x20);" (assignment_expression "pcVar31 = *(code **)(puVar35 + -0x20)" identifier = (pointer_expression "*(code **)(puVar35 + -0x20)" * (cast_expression "(code **)(puVar35 + -0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[2];\n    }" { (expression_statement "puVar8 = (undefined4 *)puVar10[2];" (assignment_expression "puVar8 = (undefined4 *)puVar10[2]" identifier = (cast_expression "(undefined4 *)puVar10[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" if (parenthesized_expression "(uVar24 != 0)" ( (binary_expression "uVar24 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" { (expression_statement "puVar13 = (undefined4 *)puVar18[2];" (assignment_expression "puVar13 = (undefined4 *)puVar18[2]" identifier = (cast_expression "(undefined4 *)puVar18[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = uVar2 - 1;" (assignment_expression "iVar4 = uVar2 - 1" identifier = (binary_expression "uVar2 - 1" identifier - number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" identifier = (binary_expression "puVar8 + (uVar2 - 1)" identifier + (parenthesized_expression "(uVar2 - 1)" ( (binary_expression "uVar2 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) (if_statement "if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" if (parenthesized_expression "((int)puVar10[3] < (int)uVar3)" ( (binary_expression "(int)puVar10[3] < (int)uVar3" (cast_expression "(int)puVar10[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar10[3]" identifier [ number_literal ])) < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }" { (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" (parenthesized_expression "(**(code **)(pcVar31 + -0x7a84))" ( (pointer_expression "**(code **)(pcVar31 + -0x7a84)" * (pointer_expression "*(code **)(pcVar31 + -0x7a84)" * (cast_expression "(code **)(pcVar31 + -0x7a84)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar31 + -0x7a84)" ( (binary_expression "pcVar31 + -0x7a84" identifier + number_literal) ))))) )) (argument_list "(puVar10 + 3,uVar3)" ( (binary_expression "puVar10 + 3" identifier + number_literal) , identifier ))))) ;) }) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" else (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[5];\n    }" { (expression_statement "puVar8 = (undefined4 *)puVar10[5];" (assignment_expression "puVar8 = (undefined4 *)puVar10[5]" identifier = (cast_expression "(undefined4 *)puVar10[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[5]" identifier [ number_literal ]))) ;) }))) (expression_statement "puVar10[4] = uVar3;" (assignment_expression "puVar10[4] = uVar3" (subscript_expression "puVar10[4]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" { (expression_statement "puVar13 = (undefined4 *)puVar18[5];" (assignment_expression "puVar13 = (undefined4 *)puVar18[5]" identifier = (cast_expression "(undefined4 *)puVar18[5]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[5]" identifier [ number_literal ]))) ;) (expression_statement "iVar4 = uVar3 - 1;" (assignment_expression "iVar4 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" * identifier) = identifier) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) (expression_statement "puVar8 = puVar8 + (uVar3 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar3 - 1)" identifier = (binary_expression "puVar8 + (uVar3 - 1)" identifier + (parenthesized_expression "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" * identifier) = identifier) ;) })) })) (expression_statement "puVar10[1] = uVar2;" (assignment_expression "puVar10[1] = uVar2" (subscript_expression "puVar10[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression IDENT - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ))) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT >= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> IDENT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression IDENT - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ))) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT ))))) ;) })))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (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 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 ))))) ;) }) (else_clause else (compound_statement { (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_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 = (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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) == IDENT) )) ;) (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 (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - LIT)) , (binary_expression IDENT != LIT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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 = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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) ))))) ;) (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 IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) 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 { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression 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 + (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) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) }) (else_clause else (compound_statement { (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)) ))) )) (goto_statement goto statement_identifier ;)) (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 = (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) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (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 = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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 IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT == LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression 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) )) ;) })) })) }) (else_clause else (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)))) ))) )) (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 (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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 { (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) 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) + (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) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 (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 = (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 (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) + (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) + (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) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 != IDENT) )) ;) })) (expression_statement (assignment_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 *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (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 = (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 IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (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)) )) (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) ;) }))) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 = 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) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (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 { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression 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 + (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 = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression 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) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) <= (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ) 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) + (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) + 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (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)) ))) )) (goto_statement goto statement_identifier ;)) (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 = (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) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT)) ;) (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 (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }) (else_clause else (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (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 = (pointer_expression * 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 { (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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))))) ;) })) (expression_statement (assignment_expression (pointer_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 = (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)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_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 IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression 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) ;) (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 : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != 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) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (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) , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ;) })))
(function_definition "void __gmpz_urandomm(uint *param_1,int param_2,uint *param_3)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" (primitive_type "void") (function_declarator "__gmpz_urandomm(uint *param_1,int param_2,uint *param_3)" (identifier "__gmpz_urandomm") (parameter_list "(uint *param_1,int param_2,uint *param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  uint *puVar7;\n  undefined4 *puVar8;\n  byte *pbVar9;\n  uint *puVar10;\n  byte *pbVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  uint *puVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 uVar17;\n  uint *puVar18;\n  uint *puVar19;\n  undefined4 *puVar20;\n  int iVar21;\n  byte *pbVar22;\n  uint *unaff_s0;\n  uint *puVar23;\n  undefined4 *unaff_s2;\n  uint uVar24;\n  uint *puVar25;\n  uint *unaff_s3;\n  uint *puVar26;\n  uint *puVar27;\n  int unaff_s5;\n  uint *puVar28;\n  uint unaff_s6;\n  int unaff_s7;\n  undefined *puVar29;\n  undefined *puVar30;\n  code *pcVar31;\n  undefined1 *puVar32;\n  undefined1 *puVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  code *pcVar36;\n  undefined1 auStack_60 [16];\n  uint *local_3c;\n  uint local_34;\n  uint *local_30;\n  int local_2c;\n  \n  puVar29 = PTR___stack_chk_guard_00097540;\n  puVar32 = auStack_60;\n  puVar33 = auStack_60;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  uVar2 = param_3[1];\n  if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (local_2c == *(int *)puVar29) {\n    return;\n  }\n  pcVar36 = __gmpz_xor;\n  puVar29 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar29 + 0x68dd0;\n  puVar34 = puVar32 + -0x58;\n  puVar35 = puVar32 + -0x58;\n  *(uint *)(puVar32 + -0x10) = unaff_s6;\n  *(uint *)(puVar32 + -0x24) = local_34;\n  piVar5 = *(int **)(puVar29 + 0x612d0);\n  puVar23 = (uint *)puVar16[1];\n  *(undefined1 **)(puVar32 + -8) = auStack_60;\n  *(int *)(puVar32 + -0xc) = unaff_s7;\n  *(int *)(puVar32 + -0x14) = unaff_s5;\n  *(int *)(puVar32 + -0x18) = param_2;\n  *(uint **)(puVar32 + -0x1c) = unaff_s3;\n  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;\n  *(code **)(puVar32 + -4) = pcVar36;\n  *(uint **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0x48) = puVar30;\n  *(undefined4 *)(puVar32 + -0x30) = 0;\n  puVar27 = (uint *)param_3[1];\n  puVar26 = (uint *)puVar16[2];\n  puVar28 = (uint *)param_3[2];\n  puVar25 = (uint *)puVar14[2];\n  *(int *)(puVar32 + -0x2c) = *piVar5;\n  puVar10 = (uint *)-(int)puVar23;\n  if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }\nLAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);\n  puVar14[1] = (uint)unaff_s0;\n  puVar27 = puVar23;\n  puVar35 = puVar34;\n  if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }\nLAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }\n  pcVar36 = *(code **)(puVar30 + -0x7b70);\n  uVar17 = 0x36bd8;\n  (*pcVar36)();\n  pcVar31 = pcVar36 + 0x68460;\n  *(uint **)(puVar35 + -0x10) = puVar25;\n  *(code **)(puVar35 + -0x20) = pcVar31;\n  *(uint **)(puVar35 + -0x14) = puVar27;\n  *(uint **)(puVar35 + -0x18) = unaff_s0;\n  *(undefined4 *)(puVar35 + -4) = uVar17;\n  *(uint **)(puVar35 + -8) = puVar15;\n  *(uint **)(puVar35 + -0xc) = puVar26;\n  uVar24 = puVar18[1];\n  uVar2 = uVar24;\n  if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }\n  if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }\n  puVar10[1] = uVar2;\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "uint *puVar15;" (type_identifier "uint") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined4 uVar17;" (type_identifier "undefined4") (identifier "uVar17") (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined4 *puVar20;" (type_identifier "undefined4") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "byte *pbVar22;" (type_identifier "byte") (pointer_declarator "*pbVar22" (* "*") (identifier "pbVar22")) (; ";")) (declaration "uint *unaff_s0;" (type_identifier "uint") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "uint *puVar23;" (type_identifier "uint") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "undefined4 *unaff_s2;" (type_identifier "undefined4") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "uint uVar24;" (type_identifier "uint") (identifier "uVar24") (; ";")) (declaration "uint *puVar25;" (type_identifier "uint") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "uint *unaff_s3;" (type_identifier "uint") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "uint *puVar26;" (type_identifier "uint") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "uint *puVar27;" (type_identifier "uint") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "int unaff_s5;" (primitive_type "int") (identifier "unaff_s5") (; ";")) (declaration "uint *puVar28;" (type_identifier "uint") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "uint unaff_s6;" (type_identifier "uint") (identifier "unaff_s6") (; ";")) (declaration "int unaff_s7;" (primitive_type "int") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar29;" (type_identifier "undefined") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "undefined *puVar30;" (type_identifier "undefined") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "code *pcVar31;" (type_identifier "code") (pointer_declarator "*pcVar31" (* "*") (identifier "pcVar31")) (; ";")) (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 "undefined1 *puVar35;" (type_identifier "undefined1") (pointer_declarator "*puVar35" (* "*") (identifier "puVar35")) (; ";")) (declaration "code *pcVar36;" (type_identifier "code") (pointer_declarator "*pcVar36" (* "*") (identifier "pcVar36")) (; ";")) (declaration "undefined1 auStack_60 [16];" (type_identifier "undefined1") (array_declarator "auStack_60 [16]" (identifier "auStack_60") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint *local_3c;" (type_identifier "uint") (pointer_declarator "*local_3c" (* "*") (identifier "local_3c")) (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "uint *local_30;" (type_identifier "uint") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar29 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar29 = PTR___stack_chk_guard_00097540" (identifier "puVar29") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" (identifier "puVar32") (= "=") (identifier "auStack_60")) (; ";")) (expression_statement "puVar33 = auStack_60;" (assignment_expression "puVar33 = auStack_60" (identifier "puVar33") (= "=") (identifier "auStack_60")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (expression_statement "uVar2 = param_3[1];" (assignment_expression "uVar2 = param_3[1]" (identifier "uVar2") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((int)uVar2 < 0) {\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }\n  else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (if "if") (parenthesized_expression "((int)uVar2 < 0)" (( "(") (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    local_34 = -uVar2;\n    if (uVar2 == 0) goto LAB_000361ac;\nLAB_00035f20:\n    uVar24 = local_34 * 4;\n    local_3c = (uint *)param_3[2];\n    unaff_s2 = (undefined4 *)(uVar24 - 4);\n    puVar16 = local_3c + (local_34 - 1);\n    uVar2 = *puVar16;\n    if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }\n    param_1[1] = 0;\n  }" ({ "{") (expression_statement "local_34 = -uVar2;" (assignment_expression "local_34 = -uVar2" (identifier "local_34") (= "=") (unary_expression "-uVar2" (- "-") (identifier "uVar2"))) (; ";")) (if_statement "if (uVar2 == 0) goto LAB_000361ac;" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000361ac;" (goto "goto") (statement_identifier "LAB_000361ac") (; ";"))) (labeled_statement "LAB_00035f20:\n    uVar24 = local_34 * 4;" (statement_identifier "LAB_00035f20") (: ":") (expression_statement "uVar24 = local_34 * 4;" (assignment_expression "uVar24 = local_34 * 4" (identifier "uVar24") (= "=") (binary_expression "local_34 * 4" (identifier "local_34") (* "*") (number_literal "4"))) (; ";"))) (expression_statement "local_3c = (uint *)param_3[2];" (assignment_expression "local_3c = (uint *)param_3[2]" (identifier "local_3c") (= "=") (cast_expression "(uint *)param_3[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "unaff_s2 = (undefined4 *)(uVar24 - 4);" (assignment_expression "unaff_s2 = (undefined4 *)(uVar24 - 4)" (identifier "unaff_s2") (= "=") (cast_expression "(undefined4 *)(uVar24 - 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar24 - 4)" (( "(") (binary_expression "uVar24 - 4" (identifier "uVar24") (- "-") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar16 = local_3c + (local_34 - 1);" (assignment_expression "puVar16 = local_3c + (local_34 - 1)" (identifier "puVar16") (= "=") (binary_expression "local_3c + (local_34 - 1)" (identifier "local_3c") (+ "+") (parenthesized_expression "(local_34 - 1)" (( "(") (binary_expression "local_34 - 1" (identifier "local_34") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" (identifier "uVar2") (= "=") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (if_statement "if ((uVar2 - 1 & uVar2) == 0) {\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }\n    else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" (if "if") (parenthesized_expression "((uVar2 - 1 & uVar2) == 0)" (( "(") (binary_expression "(uVar2 - 1 & uVar2) == 0" (parenthesized_expression "(uVar2 - 1 & uVar2)" (( "(") (binary_expression "uVar2 - 1 & uVar2" (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) (& "&") (identifier "uVar2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }\nLAB_00035f84:\n      puVar16 = (uint *)0x1;\n      if (0xffff < uVar2) goto LAB_00035f90;\nLAB_00036130:\n      iVar4 = 0x20;\n      if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }\n      iVar21 = 9;\n      if (0xff >= uVar2) {\n        iVar21 = 1;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" ({ "{") (if_statement "if (local_3c < puVar16) {\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" (if "if") (parenthesized_expression "(local_3c < puVar16)" (( "(") (binary_expression "local_3c < puVar16" (identifier "local_3c") (< "<") (identifier "puVar16")) () ")")) (compound_statement "{\n        uVar3 = *local_3c;\n        puVar14 = local_3c;\n        while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }\n        goto LAB_00036124;\n      }" ({ "{") (expression_statement "uVar3 = *local_3c;" (assignment_expression "uVar3 = *local_3c" (identifier "uVar3") (= "=") (pointer_expression "*local_3c" (* "*") (identifier "local_3c"))) (; ";")) (expression_statement "puVar14 = local_3c;" (assignment_expression "puVar14 = local_3c" (identifier "puVar14") (= "=") (identifier "local_3c")) (; ";")) (while_statement "while (uVar3 == 0) {\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar14 = puVar14 + 1;\n          if (puVar16 <= puVar14) goto LAB_00035f84;\n          uVar3 = *puVar14;\n        }" ({ "{") (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar16 <= puVar14) goto LAB_00035f84;" (if "if") (parenthesized_expression "(puVar16 <= puVar14)" (( "(") (binary_expression "puVar16 <= puVar14" (identifier "puVar16") (<= "<=") (identifier "puVar14")) () ")")) (goto_statement "goto LAB_00035f84;" (goto "goto") (statement_identifier "LAB_00035f84") (; ";"))) (expression_statement "uVar3 = *puVar14;" (assignment_expression "uVar3 = *puVar14" (identifier "uVar3") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00036124;" (goto "goto") (statement_identifier "LAB_00036124") (; ";")) (} "}"))) (labeled_statement "LAB_00035f84:\n      puVar16 = (uint *)0x1;" (statement_identifier "LAB_00035f84") (: ":") (expression_statement "puVar16 = (uint *)0x1;" (assignment_expression "puVar16 = (uint *)0x1" (identifier "puVar16") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";"))) (if_statement "if (0xffff < uVar2) goto LAB_00035f90;" (if "if") (parenthesized_expression "(0xffff < uVar2)" (( "(") (binary_expression "0xffff < uVar2" (number_literal "0xffff") (< "<") (identifier "uVar2")) () ")")) (goto_statement "goto LAB_00035f90;" (goto "goto") (statement_identifier "LAB_00035f90") (; ";"))) (labeled_statement "LAB_00036130:\n      iVar4 = 0x20;" (statement_identifier "LAB_00036130") (: ":") (expression_statement "iVar4 = 0x20;" (assignment_expression "iVar4 = 0x20" (identifier "iVar4") (= "=") (number_literal "0x20")) (; ";"))) (if_statement "if (0xff < uVar2) {\n        iVar4 = 0x18;\n      }" (if "if") (parenthesized_expression "(0xff < uVar2)" (( "(") (binary_expression "0xff < uVar2" (number_literal "0xff") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n        iVar4 = 0x18;\n      }" ({ "{") (expression_statement "iVar4 = 0x18;" (assignment_expression "iVar4 = 0x18" (identifier "iVar4") (= "=") (number_literal "0x18")) (; ";")) (} "}"))) (expression_statement "iVar21 = 9;" (assignment_expression "iVar21 = 9" (identifier "iVar21") (= "=") (number_literal "9")) (; ";")) (if_statement "if (0xff >= uVar2) {\n        iVar21 = 1;\n      }" (if "if") (parenthesized_expression "(0xff >= uVar2)" (( "(") (binary_expression "0xff >= uVar2" (number_literal "0xff") (>= ">=") (identifier "uVar2")) () ")")) (compound_statement "{\n        iVar21 = 1;\n      }" ({ "{") (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" (identifier "iVar21") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (identifier "puVar14") (= "=") (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (( "(") (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" (identifier "PTR___gmpn_clz_tab_0009718c") (+ "+") (parenthesized_expression "(uVar2 >> iVar21)" (( "(") (binary_expression "uVar2 >> iVar21" (identifier "uVar2") (>> ">>") (identifier "iVar21")) () ")"))) () ")")))) (; ";")) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (( "(") (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" (( "(") (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" (identifier "local_34") (* "*") (number_literal "0x20")) (- "-") (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" (( "(") (binary_expression "iVar4 - (uint)*(byte *)puVar14" (identifier "iVar4") (- "-") (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)puVar14" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14")))) () ")"))) () ")")) (- "-") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" (else "else") (compound_statement "{\nLAB_00036124:\n      puVar16 = (uint *)0x0;\n      if (uVar2 < 0x10000) goto LAB_00036130;\nLAB_00035f90:\n      iVar4 = 0x10;\n      if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }\n      iVar21 = 0x19;\n      if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }\n      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));\n      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);\n    }" ({ "{") (labeled_statement "LAB_00036124:\n      puVar16 = (uint *)0x0;" (statement_identifier "LAB_00036124") (: ":") (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" (identifier "puVar16") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (if_statement "if (uVar2 < 0x10000) goto LAB_00036130;" (if "if") (parenthesized_expression "(uVar2 < 0x10000)" (( "(") (binary_expression "uVar2 < 0x10000" (identifier "uVar2") (< "<") (number_literal "0x10000")) () ")")) (goto_statement "goto LAB_00036130;" (goto "goto") (statement_identifier "LAB_00036130") (; ";"))) (labeled_statement "LAB_00035f90:\n      iVar4 = 0x10;" (statement_identifier "LAB_00035f90") (: ":") (expression_statement "iVar4 = 0x10;" (assignment_expression "iVar4 = 0x10" (identifier "iVar4") (= "=") (number_literal "0x10")) (; ";"))) (if_statement "if (0xffffff < uVar2) {\n        iVar4 = 8;\n      }" (if "if") (parenthesized_expression "(0xffffff < uVar2)" (( "(") (binary_expression "0xffffff < uVar2" (number_literal "0xffffff") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n        iVar4 = 8;\n      }" ({ "{") (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" (identifier "iVar4") (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "iVar21 = 0x19;" (assignment_expression "iVar21 = 0x19" (identifier "iVar21") (= "=") (number_literal "0x19")) (; ";")) (if_statement "if (0xffffff >= uVar2) {\n        iVar21 = 0x11;\n      }" (if "if") (parenthesized_expression "(0xffffff >= uVar2)" (( "(") (binary_expression "0xffffff >= uVar2" (number_literal "0xffffff") (>= ">=") (identifier "uVar2")) () ")")) (compound_statement "{\n        iVar21 = 0x11;\n      }" ({ "{") (expression_statement "iVar21 = 0x11;" (assignment_expression "iVar21 = 0x11" (identifier "iVar21") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (expression_statement "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));" (assignment_expression "puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (identifier "puVar14") (= "=") (cast_expression "(uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21))" (( "(") (binary_expression "PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21)" (identifier "PTR___gmpn_clz_tab_0009718c") (+ "+") (parenthesized_expression "(uVar2 >> iVar21)" (( "(") (binary_expression "uVar2 >> iVar21" (identifier "uVar2") (>> ">>") (identifier "iVar21")) () ")"))) () ")")))) (; ";")) (expression_statement "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);" (assignment_expression "unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16)" (( "(") (binary_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16" (parenthesized_expression "(local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14))" (( "(") (binary_expression "local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)" (binary_expression "local_34 * 0x20" (identifier "local_34") (* "*") (number_literal "0x20")) (- "-") (parenthesized_expression "(iVar4 - (uint)*(byte *)puVar14)" (( "(") (binary_expression "iVar4 - (uint)*(byte *)puVar14" (identifier "iVar4") (- "-") (binary_expression "(uint)*(byte *)puVar14" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)puVar14" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14")))) () ")"))) () ")")) (- "-") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (} "}")))) (if_statement "if (unaff_s0 != (uint *)0x0) {\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" (if "if") (parenthesized_expression "(unaff_s0 != (uint *)0x0)" (( "(") (binary_expression "unaff_s0 != (uint *)0x0" (identifier "unaff_s0") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      local_30 = (uint *)0x0;\n      unaff_s6 = uVar24;\n      puVar32 = auStack_60;\n      if (param_3 == param_1) goto LAB_000361b8;\n      goto LAB_00035fe8;\n    }" ({ "{") (expression_statement "local_30 = (uint *)0x0;" (assignment_expression "local_30 = (uint *)0x0" (identifier "local_30") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s6 = uVar24;" (assignment_expression "unaff_s6 = uVar24" (identifier "unaff_s6") (= "=") (identifier "uVar24")) (; ";")) (expression_statement "puVar32 = auStack_60;" (assignment_expression "puVar32 = auStack_60" (identifier "puVar32") (= "=") (identifier "auStack_60")) (; ";")) (if_statement "if (param_3 == param_1) goto LAB_000361b8;" (if "if") (parenthesized_expression "(param_3 == param_1)" (( "(") (binary_expression "param_3 == param_1" (identifier "param_3") (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_000361b8;" (goto "goto") (statement_identifier "LAB_000361b8") (; ";"))) (goto_statement "goto LAB_00035fe8;" (goto "goto") (statement_identifier "LAB_00035fe8") (; ";")) (} "}"))) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (else "else") (compound_statement "{\n    local_34 = uVar2;\n    if (uVar2 != 0) goto LAB_00035f20;\nLAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();\nLAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }\n    iVar4 = local_34 - 1;\n    uVar2 = *local_3c;\n    puVar14 = puVar16;\n    puVar32 = puVar33;\n    if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }\nLAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }\n    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);\n    unaff_s7 = (int)unaff_s3 + unaff_s6;\n    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);\n    *piVar5 = 0;\n    unaff_s6 = 0xffffffff;\n    iVar4 = 0x50;\n    do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);\n    unaff_s5 = unaff_s5 + -1;\n    puVar16 = unaff_s3;\n    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);\n    param_3 = local_3c;\nLAB_00036094:\n    iVar4 = *piVar5;\n    uVar2 = local_34;\n    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }\n    param_1[1] = uVar2;\n    puVar14 = local_30;\n    if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" ({ "{") (expression_statement "local_34 = uVar2;" (assignment_expression "local_34 = uVar2" (identifier "local_34") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (uVar2 != 0) goto LAB_00035f20;" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00035f20;" (goto "goto") (statement_identifier "LAB_00035f20") (; ";"))) (labeled_statement "LAB_000361ac:\n    (*(code *)PTR___gmp_divide_by_zero_000975dc)();" (statement_identifier "LAB_000361ac") (: ":") (expression_statement "(*(code *)PTR___gmp_divide_by_zero_000975dc)();" (call_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)()" (parenthesized_expression "(*(code *)PTR___gmp_divide_by_zero_000975dc)" (( "(") (pointer_expression "*(code *)PTR___gmp_divide_by_zero_000975dc" (* "*") (cast_expression "(code *)PTR___gmp_divide_by_zero_000975dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_divide_by_zero_000975dc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_000361b8:\n    if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" (statement_identifier "LAB_000361b8") (: ":") (if_statement "if (unaff_s6 < 0x7f01) {\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }\n    else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" (if "if") (parenthesized_expression "(unaff_s6 < 0x7f01)" (( "(") (binary_expression "unaff_s6 < 0x7f01" (identifier "unaff_s6") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);\n      puVar33 = auStack_60 + iVar4;\n      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);\n    }" ({ "{") (expression_statement "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);" (assignment_expression "iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8)" (identifier "iVar4") (= "=") (unary_expression "-((int)unaff_s2 + 0xbU & 0xfffffff8)" (- "-") (parenthesized_expression "((int)unaff_s2 + 0xbU & 0xfffffff8)" (( "(") (binary_expression "(int)unaff_s2 + 0xbU & 0xfffffff8" (binary_expression "(int)unaff_s2 + 0xbU" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (+ "+") (number_literal "0xbU")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar33 = auStack_60 + iVar4;" (assignment_expression "puVar33 = auStack_60 + iVar4" (identifier "puVar33") (= "=") (binary_expression "auStack_60 + iVar4" (identifier "auStack_60") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "puVar16 = (uint *)(&stack0xffffffb0 + iVar4);" (assignment_expression "puVar16 = (uint *)(&stack0xffffffb0 + iVar4)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(&stack0xffffffb0 + iVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffb0 + iVar4)" (( "(") (binary_expression "&stack0xffffffb0 + iVar4" (pointer_expression "&stack0xffffffb0" (& "&") (identifier "stack0xffffffb0")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" (else "else") (compound_statement "{\n      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);\n    }" ({ "{") (expression_statement "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);" (assignment_expression "puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,unaff_s6)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "unaff_s6") () ")"))))) (; ";")) (} "}"))))) (expression_statement "iVar4 = local_34 - 1;" (assignment_expression "iVar4 = local_34 - 1" (identifier "iVar4") (= "=") (binary_expression "local_34 - 1" (identifier "local_34") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" (identifier "uVar2") (= "=") (pointer_expression "*local_3c" (* "*") (identifier "local_3c"))) (; ";")) (expression_statement "puVar14 = puVar16;" (assignment_expression "puVar14 = puVar16" (identifier "puVar14") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar32 = puVar33;" (assignment_expression "puVar32 = puVar33" (identifier "puVar32") (= "=") (identifier "puVar33")) (; ";")) (if_statement "if (iVar4 == 0) {\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }\n    else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *puVar16 = uVar2;\n      local_3c = puVar16;\n    }" ({ "{") (expression_statement "*puVar16 = uVar2;" (assignment_expression "*puVar16 = uVar2" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" (identifier "local_3c") (= "=") (identifier "puVar16")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" (else "else") (compound_statement "{\n      do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);\n      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;\n      local_3c = puVar16;\n    }" ({ "{") (do_statement "do {\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      } while (iVar4 != 0);" (do "do") (compound_statement "{\n        local_3c = local_3c + 1;\n        *puVar14 = uVar2;\n        iVar4 = iVar4 + -1;\n        uVar2 = *local_3c;\n        puVar14 = puVar14 + 1;\n      }" ({ "{") (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar14 = uVar2;" (assignment_expression "*puVar14 = uVar2" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar2 = *local_3c;" (assignment_expression "uVar2 = *local_3c" (identifier "uVar2") (= "=") (pointer_expression "*local_3c" (* "*") (identifier "local_3c"))) (; ";")) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;" (assignment_expression "*(uint *)((int)puVar16 + (int)unaff_s2) = uVar2" (pointer_expression "*(uint *)((int)puVar16 + (int)unaff_s2)" (* "*") (cast_expression "(uint *)((int)puVar16 + (int)unaff_s2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + (int)unaff_s2)" (( "(") (binary_expression "(int)puVar16 + (int)unaff_s2" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_3c = puVar16;" (assignment_expression "local_3c = puVar16" (identifier "local_3c") (= "=") (identifier "puVar16")) (; ";")) (} "}")))) (labeled_statement "LAB_00035fe8:\n    if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" (statement_identifier "LAB_00035fe8") (: ":") (if_statement "if ((int)*param_1 < (int)local_34) {\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }\n    else {\n      unaff_s3 = (uint *)param_1[2];\n    }" (if "if") (parenthesized_expression "((int)*param_1 < (int)local_34)" (( "(") (binary_expression "(int)*param_1 < (int)local_34" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (< "<") (cast_expression "(int)local_34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_34"))) () ")")) (compound_statement "{\n      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);\n    }" ({ "{") (expression_statement "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);" (assignment_expression "unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34)" (parenthesized_expression "(*(code *)PTR___gmpz_realloc_000975bc)" (( "(") (pointer_expression "*(code *)PTR___gmpz_realloc_000975bc" (* "*") (cast_expression "(code *)PTR___gmpz_realloc_000975bc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpz_realloc_000975bc"))) () ")")) (argument_list "(param_1,local_34)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      unaff_s3 = (uint *)param_1[2];\n    }" (else "else") (compound_statement "{\n      unaff_s3 = (uint *)param_1[2];\n    }" ({ "{") (expression_statement "unaff_s3 = (uint *)param_1[2];" (assignment_expression "unaff_s3 = (uint *)param_1[2]" (identifier "unaff_s3") (= "=") (cast_expression "(uint *)param_1[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}"))))) (expression_statement "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);" (assignment_expression "piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2)" (identifier "piVar5") (= "=") (cast_expression "(int *)((int)unaff_s3 + (int)unaff_s2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + (int)unaff_s2)" (( "(") (binary_expression "(int)unaff_s3 + (int)unaff_s2" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2"))) () ")")))) (; ";")) (expression_statement "unaff_s7 = (int)unaff_s3 + unaff_s6;" (assignment_expression "unaff_s7 = (int)unaff_s3 + unaff_s6" (identifier "unaff_s7") (= "=") (binary_expression "(int)unaff_s3 + unaff_s6" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (identifier "unaff_s6"))) (; ";")) (expression_statement "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);" (assignment_expression "unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6)" (identifier "unaff_s2") (= "=") (cast_expression "(undefined4 *)((int)local_3c + unaff_s6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_3c + unaff_s6)" (( "(") (binary_expression "(int)local_3c + unaff_s6" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (+ "+") (identifier "unaff_s6")) () ")")))) (; ";")) (expression_statement "*piVar5 = 0;" (assignment_expression "*piVar5 = 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s6 = 0xffffffff;" (assignment_expression "unaff_s6 = 0xffffffff" (identifier "unaff_s6") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "iVar4 = 0x50;" (assignment_expression "iVar4 = 0x50" (identifier "iVar4") (= "=") (number_literal "0x50")) (; ";")) (do_statement "do {\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    } while (unaff_s5 + -1 != 0);" (do "do") (compound_statement "{\n      unaff_s5 = iVar4;\n      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);\n      uVar2 = local_34;\n      iVar4 = unaff_s7;\n      puVar8 = unaff_s2;\n      do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);\n      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);\n      if (puVar16 == (uint *)0x0) goto LAB_00036094;\njoined_r0x00036070:\n      iVar4 = unaff_s5 + -1;\n    }" ({ "{") (expression_statement "unaff_s5 = iVar4;" (assignment_expression "unaff_s5 = iVar4" (identifier "unaff_s5") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);" (call_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0)" (parenthesized_expression "(**(code **)(*(int *)(param_2 + 0x10) + 4))" (( "(") (pointer_expression "**(code **)(*(int *)(param_2 + 0x10) + 4)" (* "*") (pointer_expression "*(code **)(*(int *)(param_2 + 0x10) + 4)" (* "*") (cast_expression "(code **)(*(int *)(param_2 + 0x10) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0x10) + 4)" (( "(") (binary_expression "*(int *)(param_2 + 0x10) + 4" (pointer_expression "*(int *)(param_2 + 0x10)" (* "*") (cast_expression "(int *)(param_2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(param_2,unaff_s3,unaff_s0)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s3") (, ",") (identifier "unaff_s0") () ")"))) (; ";")) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" (identifier "uVar2") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar4 = unaff_s7;" (assignment_expression "iVar4 = unaff_s7" (identifier "iVar4") (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "puVar8 = unaff_s2;" (assignment_expression "puVar8 = unaff_s2" (identifier "puVar8") (= "=") (identifier "unaff_s2")) (; ";")) (do_statement "do {\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      } while ((uint *)*puVar20 == param_3);" (do "do") (compound_statement "{\n        uVar2 = uVar2 - 1;\n        puVar8 = puVar8 + -1;\n        if (uVar2 == 0xffffffff) goto joined_r0x00036070;\n        puVar20 = (undefined4 *)(iVar4 + -4);\n        param_3 = (uint *)*puVar8;\n        iVar4 = iVar4 + -4;\n      }" ({ "{") (expression_statement "uVar2 = uVar2 - 1;" (assignment_expression "uVar2 = uVar2 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar8 = puVar8 + -1;" (assignment_expression "puVar8 = puVar8 + -1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + -1" (identifier "puVar8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (uVar2 == 0xffffffff) goto joined_r0x00036070;" (if "if") (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto joined_r0x00036070;" (goto "goto") (statement_identifier "joined_r0x00036070") (; ";"))) (expression_statement "puVar20 = (undefined4 *)(iVar4 + -4);" (assignment_expression "puVar20 = (undefined4 *)(iVar4 + -4)" (identifier "puVar20") (= "=") (cast_expression "(undefined4 *)(iVar4 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -4)" (( "(") (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "param_3 = (uint *)*puVar8;" (assignment_expression "param_3 = (uint *)*puVar8" (identifier "param_3") (= "=") (cast_expression "(uint *)*puVar8" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar8" (* "*") (identifier "puVar8")))) (; ";")) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uint *)*puVar20 == param_3)" (( "(") (binary_expression "(uint *)*puVar20 == param_3" (cast_expression "(uint *)*puVar20" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (== "==") (identifier "param_3")) () ")")) (; ";")) (expression_statement "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);" (assignment_expression "puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(uint)(param_3 < (uint *)*puVar20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(param_3 < (uint *)*puVar20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 < (uint *)*puVar20)" (( "(") (binary_expression "param_3 < (uint *)*puVar20" (identifier "param_3") (< "<") (cast_expression "(uint *)*puVar20" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar20" (* "*") (identifier "puVar20")))) () ")"))))) (; ";")) (if_statement "if (puVar16 == (uint *)0x0) goto LAB_00036094;" (if "if") (parenthesized_expression "(puVar16 == (uint *)0x0)" (( "(") (binary_expression "puVar16 == (uint *)0x0" (identifier "puVar16") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00036094;" (goto "goto") (statement_identifier "LAB_00036094") (; ";"))) (labeled_statement "joined_r0x00036070:\n      iVar4 = unaff_s5 + -1;" (statement_identifier "joined_r0x00036070") (: ":") (expression_statement "iVar4 = unaff_s5 + -1;" (assignment_expression "iVar4 = unaff_s5 + -1" (identifier "iVar4") (= "=") (binary_expression "unaff_s5 + -1" (identifier "unaff_s5") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(unaff_s5 + -1 != 0)" (( "(") (binary_expression "unaff_s5 + -1 != 0" (binary_expression "unaff_s5 + -1" (identifier "unaff_s5") (+ "+") (number_literal "-1")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s5 + -1" (identifier "unaff_s5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar16 = unaff_s3;" (assignment_expression "puVar16 = unaff_s3" (identifier "puVar16") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);" (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" (* "*") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) () ")")) (argument_list "(unaff_s3,unaff_s3,local_3c,local_34)" (( "(") (identifier "unaff_s3") (, ",") (identifier "unaff_s3") (, ",") (identifier "local_3c") (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "param_3 = local_3c;" (assignment_expression "param_3 = local_3c" (identifier "param_3") (= "=") (identifier "local_3c")) (; ";")) (labeled_statement "LAB_00036094:\n    iVar4 = *piVar5;" (statement_identifier "LAB_00036094") (: ":") (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" (identifier "iVar4") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";"))) (expression_statement "uVar2 = local_34;" (assignment_expression "uVar2 = local_34" (identifier "uVar2") (= "=") (identifier "local_34")) (; ";")) (while_statement "while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" (while "while") (parenthesized_expression "((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)))" (( "(") (parenthesized_expression "(iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))" (( "(") (binary_expression "iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0)" (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar2 = uVar2 - 1, uVar2 != 0)" (( "(") (comma_expression "uVar2 = uVar2 - 1, uVar2 != 0" (assignment_expression "uVar2 = uVar2 - 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (, ",") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n      iVar4 = *(int *)(unaff_s7 + -8);\n      unaff_s7 = unaff_s7 + -4;\n    }" ({ "{") (expression_statement "iVar4 = *(int *)(unaff_s7 + -8);" (assignment_expression "iVar4 = *(int *)(unaff_s7 + -8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(unaff_s7 + -8)" (* "*") (cast_expression "(int *)(unaff_s7 + -8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s7 + -8)" (( "(") (binary_expression "unaff_s7 + -8" (identifier "unaff_s7") (+ "+") (number_literal "-8")) () ")"))))) (; ";")) (expression_statement "unaff_s7 = unaff_s7 + -4;" (assignment_expression "unaff_s7 = unaff_s7 + -4" (identifier "unaff_s7") (= "=") (binary_expression "unaff_s7 + -4" (identifier "unaff_s7") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = uVar2;" (assignment_expression "param_1[1] = uVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar14 = local_30;" (assignment_expression "puVar14 = local_30" (identifier "puVar14") (= "=") (identifier "local_30")) (; ";")) (if_statement "if (local_30 != (uint *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (if "if") (parenthesized_expression "(local_30 != (uint *)0x0)" (( "(") (binary_expression "local_30 != (uint *)0x0" (identifier "local_30") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (local_2c == *(int *)puVar29) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar29)" (( "(") (binary_expression "local_2c == *(int *)puVar29" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar29" (* "*") (cast_expression "(int *)puVar29" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar29")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar36 = __gmpz_xor;" (assignment_expression "pcVar36 = __gmpz_xor" (identifier "pcVar36") (= "=") (identifier "__gmpz_xor")) (; ";")) (expression_statement "puVar29 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar29 = PTR___stack_chk_fail_000974d0" (identifier "puVar29") (= "=") (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 = puVar29 + 0x68dd0;" (assignment_expression "puVar30 = puVar29 + 0x68dd0" (identifier "puVar30") (= "=") (binary_expression "puVar29 + 0x68dd0" (identifier "puVar29") (+ "+") (number_literal "0x68dd0"))) (; ";")) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" (identifier "puVar34") (= "=") (binary_expression "puVar32 + -0x58" (identifier "puVar32") (+ "+") (number_literal "-0x58"))) (; ";")) (expression_statement "puVar35 = puVar32 + -0x58;" (assignment_expression "puVar35 = puVar32 + -0x58" (identifier "puVar35") (= "=") (binary_expression "puVar32 + -0x58" (identifier "puVar32") (+ "+") (number_literal "-0x58"))) (; ";")) (expression_statement "*(uint *)(puVar32 + -0x10) = unaff_s6;" (assignment_expression "*(uint *)(puVar32 + -0x10) = unaff_s6" (pointer_expression "*(uint *)(puVar32 + -0x10)" (* "*") (cast_expression "(uint *)(puVar32 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x10)" (( "(") (binary_expression "puVar32 + -0x10" (identifier "puVar32") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(uint *)(puVar32 + -0x24) = local_34;" (assignment_expression "*(uint *)(puVar32 + -0x24) = local_34" (pointer_expression "*(uint *)(puVar32 + -0x24)" (* "*") (cast_expression "(uint *)(puVar32 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x24)" (( "(") (binary_expression "puVar32 + -0x24" (identifier "puVar32") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "local_34")) (; ";")) (expression_statement "piVar5 = *(int **)(puVar29 + 0x612d0);" (assignment_expression "piVar5 = *(int **)(puVar29 + 0x612d0)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(puVar29 + 0x612d0)" (* "*") (cast_expression "(int **)(puVar29 + 0x612d0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x612d0)" (( "(") (binary_expression "puVar29 + 0x612d0" (identifier "puVar29") (+ "+") (number_literal "0x612d0")) () ")"))))) (; ";")) (expression_statement "puVar23 = (uint *)puVar16[1];" (assignment_expression "puVar23 = (uint *)puVar16[1]" (identifier "puVar23") (= "=") (cast_expression "(uint *)puVar16[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*(undefined1 **)(puVar32 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar32 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar32 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar32 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -8)" (( "(") (binary_expression "puVar32 + -8" (identifier "puVar32") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_60")) (; ";")) (expression_statement "*(int *)(puVar32 + -0xc) = unaff_s7;" (assignment_expression "*(int *)(puVar32 + -0xc) = unaff_s7" (pointer_expression "*(int *)(puVar32 + -0xc)" (* "*") (cast_expression "(int *)(puVar32 + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0xc)" (( "(") (binary_expression "puVar32 + -0xc" (identifier "puVar32") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(int *)(puVar32 + -0x14) = unaff_s5;" (assignment_expression "*(int *)(puVar32 + -0x14) = unaff_s5" (pointer_expression "*(int *)(puVar32 + -0x14)" (* "*") (cast_expression "(int *)(puVar32 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x14)" (( "(") (binary_expression "puVar32 + -0x14" (identifier "puVar32") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int *)(puVar32 + -0x18) = param_2;" (assignment_expression "*(int *)(puVar32 + -0x18) = param_2" (pointer_expression "*(int *)(puVar32 + -0x18)" (* "*") (cast_expression "(int *)(puVar32 + -0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x18)" (( "(") (binary_expression "puVar32 + -0x18" (identifier "puVar32") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x1c) = unaff_s3;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = unaff_s3" (pointer_expression "*(uint **)(puVar32 + -0x1c)" (* "*") (cast_expression "(uint **)(puVar32 + -0x1c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x1c)" (( "(") (binary_expression "puVar32 + -0x1c" (identifier "puVar32") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(undefined4 **)(puVar32 + -0x20) = unaff_s2;" (assignment_expression "*(undefined4 **)(puVar32 + -0x20) = unaff_s2" (pointer_expression "*(undefined4 **)(puVar32 + -0x20)" (* "*") (cast_expression "(undefined4 **)(puVar32 + -0x20)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x20)" (( "(") (binary_expression "puVar32 + -0x20" (identifier "puVar32") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(code **)(puVar32 + -4) = pcVar36;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar36" (pointer_expression "*(code **)(puVar32 + -4)" (* "*") (cast_expression "(code **)(puVar32 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -4)" (( "(") (binary_expression "puVar32 + -4" (identifier "puVar32") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar36")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x28) = unaff_s0;" (assignment_expression "*(uint **)(puVar32 + -0x28) = unaff_s0" (pointer_expression "*(uint **)(puVar32 + -0x28)" (* "*") (cast_expression "(uint **)(puVar32 + -0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x28)" (( "(") (binary_expression "puVar32 + -0x28" (identifier "puVar32") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(undefined **)(puVar32 + -0x48) = puVar30;" (assignment_expression "*(undefined **)(puVar32 + -0x48) = puVar30" (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "*(undefined4 *)(puVar32 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar32 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar32 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar32 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x30)" (( "(") (binary_expression "puVar32 + -0x30" (identifier "puVar32") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar27 = (uint *)param_3[1];" (assignment_expression "puVar27 = (uint *)param_3[1]" (identifier "puVar27") (= "=") (cast_expression "(uint *)param_3[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "puVar26 = (uint *)puVar16[2];" (assignment_expression "puVar26 = (uint *)puVar16[2]" (identifier "puVar26") (= "=") (cast_expression "(uint *)puVar16[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar28 = (uint *)param_3[2];" (assignment_expression "puVar28 = (uint *)param_3[2]" (identifier "puVar28") (= "=") (cast_expression "(uint *)param_3[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)puVar14[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar14[2]" (identifier "puVar14") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "*(int *)(puVar32 + -0x2c) = *piVar5;" (assignment_expression "*(int *)(puVar32 + -0x2c) = *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" (* "*") (cast_expression "(int *)(puVar32 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x2c)" (( "(") (binary_expression "puVar32 + -0x2c" (identifier "puVar32") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "puVar10 = (uint *)-(int)puVar23;" (assignment_expression "puVar10 = (uint *)-(int)puVar23" (identifier "puVar10") (= "=") (cast_expression "(uint *)-(int)puVar23" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar23" (- "-") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))))) (; ";")) (if_statement "if ((int)puVar23 < 0) {\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }\n  else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" (if "if") (parenthesized_expression "((int)puVar23 < 0)" (( "(") (binary_expression "(int)puVar23 < 0" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    puVar16 = puVar23;\n    puVar15 = puVar26;\n    if (-1 < (int)puVar27) goto LAB_0003630c;\n    puVar25 = (uint *)-(int)puVar27;\n    uVar2 = ((int)puVar10 - (int)puVar27) * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }\n    uVar2 = *puVar26;\n    puVar19 = puVar16 + (int)puVar15;\n    *puVar16 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }\nLAB_000365a8:\n    *puVar19 = uVar2 - 1;\n    if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }\nLAB_00036608:\n    puVar28 = puVar19;\n    unaff_s0 = puVar10;\n    if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }\n    pcVar36 = *(code **)(puVar30 + -0x7a84);\n    if ((int)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }\n    if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }\n    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);\n    do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);\n    iVar4 = uVar2 + (int)unaff_s0 * 4;\n    do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);\n  }" ({ "{") (expression_statement "puVar16 = puVar23;" (assignment_expression "puVar16 = puVar23" (identifier "puVar16") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "puVar15 = puVar26;" (assignment_expression "puVar15 = puVar26" (identifier "puVar15") (= "=") (identifier "puVar26")) (; ";")) (if_statement "if (-1 < (int)puVar27) goto LAB_0003630c;" (if "if") (parenthesized_expression "(-1 < (int)puVar27)" (( "(") (binary_expression "-1 < (int)puVar27" (number_literal "-1") (< "<") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (goto_statement "goto LAB_0003630c;" (goto "goto") (statement_identifier "LAB_0003630c") (; ";"))) (expression_statement "puVar25 = (uint *)-(int)puVar27;" (assignment_expression "puVar25 = (uint *)-(int)puVar27" (identifier "puVar25") (= "=") (cast_expression "(uint *)-(int)puVar27" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar27" (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))))) (; ";")) (expression_statement "uVar2 = ((int)puVar10 - (int)puVar27) * 4;" (assignment_expression "uVar2 = ((int)puVar10 - (int)puVar27) * 4" (identifier "uVar2") (= "=") (binary_expression "((int)puVar10 - (int)puVar27) * 4" (parenthesized_expression "((int)puVar10 - (int)puVar27)" (( "(") (binary_expression "(int)puVar10 - (int)puVar27" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" (if "if") (parenthesized_expression "(uVar2 < 0x7f01)" (( "(") (binary_expression "uVar2 < 0x7f01" (identifier "uVar2") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar34 = puVar32 + iVar4 + -0x58;\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar15 = puVar10;\n      puVar18 = puVar25;\n    }" ({ "{") (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" (identifier "iVar4") (= "=") (unary_expression "-(uVar2 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" (identifier "uVar2") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" (identifier "puVar34") (= "=") (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" (identifier "puVar32") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x58"))) (; ";")) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + iVar4 + -0x48)" (( "(") (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" (identifier "puVar32") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x48")) () ")")))) (; ";")) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" (identifier "puVar15") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "puVar18 = puVar25;" (assignment_expression "puVar18 = puVar25" (identifier "puVar18") (= "=") (identifier "puVar25")) (; ";")) (} "}")) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" (else "else") (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = puVar25;\n      *(uint **)(puVar32 + -0x34) = puVar10;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar18 = *(uint **)(puVar32 + -0x38);\n      puVar15 = *(uint **)(puVar32 + -0x34);\n    }" ({ "{") (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" (identifier "pcVar36") (= "=") (pointer_expression "*(code **)(puVar29 + 0x61080)" (* "*") (cast_expression "(code **)(puVar29 + 0x61080)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x61080)" (( "(") (binary_expression "puVar29 + 0x61080" (identifier "puVar29") (+ "+") (number_literal "0x61080")) () ")"))))) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x38) = puVar25;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar25" (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "puVar25")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar10;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar10" (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar36)(puVar32 + -0x30)" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "(puVar32 + -0x30)" (( "(") (binary_expression "puVar32 + -0x30" (identifier "puVar32") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "puVar18 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar18 = *(uint **)(puVar32 + -0x38)" (identifier "puVar18") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "puVar15 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar15 = *(uint **)(puVar32 + -0x34)" (identifier "puVar15") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" (identifier "uVar2") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (expression_statement "puVar19 = puVar16 + (int)puVar15;" (assignment_expression "puVar19 = puVar16 + (int)puVar15" (identifier "puVar19") (= "=") (binary_expression "puVar16 + (int)puVar15" (identifier "puVar16") (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")))) (; ";")) (expression_statement "*puVar16 = uVar2 - 1;" (assignment_expression "*puVar16 = uVar2 - 1" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }\n    else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }\nLAB_000365a4:\n      uVar2 = *puVar28;\n    }" ({ "{") (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" (if "if") (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" (( "(") (binary_expression "puVar23 != (uint *)0xffffffff" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar2 = puVar26[1];\n        puVar16[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }\n      }" ({ "{") (expression_statement "uVar2 = puVar26[1];" (assignment_expression "uVar2 = puVar26[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar26[1]" (identifier "puVar26") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar16[1] = uVar2 - 1;" (assignment_expression "puVar16[1] = uVar2 - 1" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar12 = puVar26 + 2;\n          iVar4 = 2;\n          puVar7 = puVar16 + 2;\n          do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" ({ "{") (expression_statement "puVar12 = puVar26 + 2;" (assignment_expression "puVar12 = puVar26 + 2" (identifier "puVar12") (= "=") (binary_expression "puVar26 + 2" (identifier "puVar26") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar7 = puVar16 + 2;" (assignment_expression "puVar7 = puVar16 + 2" (identifier "puVar7") (= "=") (binary_expression "puVar16 + 2" (identifier "puVar16") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" (do "do") (compound_statement "{\n            if ((int)puVar15 <= iVar4) goto LAB_000365a4;\n            uVar2 = *puVar12;\n            iVar4 = iVar4 + 1;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" ({ "{") (if_statement "if ((int)puVar15 <= iVar4) goto LAB_000365a4;" (if "if") (parenthesized_expression "((int)puVar15 <= iVar4)" (( "(") (binary_expression "(int)puVar15 <= iVar4" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (<= "<=") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_000365a4;" (goto "goto") (statement_identifier "LAB_000365a4") (; ";"))) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" (identifier "uVar2") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = 2;\n        }" (else "else") (compound_statement "{\n          iVar4 = 2;\n        }" ({ "{") (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" (if "if") (parenthesized_expression "((puVar16 != puVar26) && (iVar4 < (int)puVar15))" (( "(") (binary_expression "(puVar16 != puVar26) && (iVar4 < (int)puVar15)" (parenthesized_expression "(puVar16 != puVar26)" (( "(") (binary_expression "puVar16 != puVar26" (identifier "puVar16") (!= "!=") (identifier "puVar26")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < (int)puVar15)" (( "(") (binary_expression "iVar4 < (int)puVar15" (identifier "iVar4") (< "<") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")"))) () ")")) (compound_statement "{\n          puVar12 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar15;\n          puVar7 = puVar16 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);\n          uVar2 = *puVar28;\n          goto LAB_000365a8;\n        }" ({ "{") (expression_statement "puVar12 = puVar26 + iVar4;" (assignment_expression "puVar12 = puVar26 + iVar4" (identifier "puVar12") (= "=") (binary_expression "puVar26 + iVar4" (identifier "puVar26") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "puVar26 = puVar26 + (int)puVar15;" (assignment_expression "puVar26 = puVar26 + (int)puVar15" (identifier "puVar26") (= "=") (binary_expression "puVar26 + (int)puVar15" (identifier "puVar26") (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")))) (; ";")) (expression_statement "puVar7 = puVar16 + iVar4;" (assignment_expression "puVar7 = puVar16 + iVar4" (identifier "puVar7") (= "=") (binary_expression "puVar16 + iVar4" (identifier "puVar16") (+ "+") (identifier "iVar4"))) (; ";")) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar12 != puVar26);" (do "do") (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" ({ "{") (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" (identifier "uVar2") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar12 != puVar26)" (( "(") (binary_expression "puVar12 != puVar26" (identifier "puVar12") (!= "!=") (identifier "puVar26")) () ")")) (; ";")) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" (identifier "uVar2") (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";")) (goto_statement "goto LAB_000365a8;" (goto "goto") (statement_identifier "LAB_000365a8") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000365a4:\n      uVar2 = *puVar28;" (statement_identifier "LAB_000365a4") (: ":") (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" (identifier "uVar2") (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";"))) (} "}")) (else_clause "else {\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" (else "else") (compound_statement "{\n      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar7 = puVar16;\n      do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);\n      uVar2 = *puVar28;\n    }" ({ "{") (if_statement "if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;" (if "if") (parenthesized_expression "((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff))" (( "(") (binary_expression "(puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar16 == puVar26)" (( "(") (binary_expression "puVar16 == puVar26" (identifier "puVar16") (== "==") (identifier "puVar26")) () ")")) (|| "||") (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" (( "(") (binary_expression "puVar23 == (uint *)0xffffffff" (identifier "puVar23") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")"))) () ")")) (goto_statement "goto LAB_000365a4;" (goto "goto") (statement_identifier "LAB_000365a4") (; ";"))) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar7 = puVar16;" (assignment_expression "puVar7 = puVar16" (identifier "puVar7") (= "=") (identifier "puVar16")) (; ";")) (do_statement "do {\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      } while (iVar4 < (int)puVar15);" (do "do") (compound_statement "{\n        puVar7 = puVar7 + 1;\n        uVar2 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar7 = uVar2;\n      }" ({ "{") (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = *puVar26;" (assignment_expression "uVar2 = *puVar26" (identifier "uVar2") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < (int)puVar15)" (( "(") (binary_expression "iVar4 < (int)puVar15" (identifier "iVar4") (< "<") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")) (; ";")) (expression_statement "uVar2 = *puVar28;" (assignment_expression "uVar2 = *puVar28" (identifier "uVar2") (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";")) (} "}")))) (labeled_statement "LAB_000365a8:\n    *puVar19 = uVar2 - 1;" (statement_identifier "LAB_000365a8") (: ":") (expression_statement "*puVar19 = uVar2 - 1;" (assignment_expression "*puVar19 = uVar2 - 1" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";"))) (if_statement "if (uVar2 == 0) {\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }\n    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }\n    }" ({ "{") (if_statement "if (puVar27 != (uint *)0xffffffff) {\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" (if "if") (parenthesized_expression "(puVar27 != (uint *)0xffffffff)" (( "(") (binary_expression "puVar27 != (uint *)0xffffffff" (identifier "puVar27") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar2 = puVar28[1];\n        puVar19[1] = uVar2 - 1;\n        if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }\n      }" ({ "{") (expression_statement "uVar2 = puVar28[1];" (assignment_expression "uVar2 = puVar28[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar28[1]" (identifier "puVar28") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar19[1] = uVar2 - 1;" (assignment_expression "puVar19[1] = uVar2 - 1" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 == 0) {\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar12 = puVar28 + 2;\n          iVar4 = 2;\n          puVar7 = puVar19 + 2;\n          do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);\n        }" ({ "{") (expression_statement "puVar12 = puVar28 + 2;" (assignment_expression "puVar12 = puVar28 + 2" (identifier "puVar12") (= "=") (binary_expression "puVar28 + 2" (identifier "puVar28") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar7 = puVar19 + 2;" (assignment_expression "puVar7 = puVar19 + 2" (identifier "puVar7") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          } while (uVar2 == 0);" (do "do") (compound_statement "{\n            bVar1 = (int)puVar18 <= iVar4;\n            iVar4 = iVar4 + 1;\n            if (bVar1) goto LAB_00036608;\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2 - 1;\n            puVar7 = puVar7 + 1;\n          }" ({ "{") (expression_statement "bVar1 = (int)puVar18 <= iVar4;" (assignment_expression "bVar1 = (int)puVar18 <= iVar4" (identifier "bVar1") (= "=") (binary_expression "(int)puVar18 <= iVar4" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (<= "<=") (identifier "iVar4"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_00036608;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00036608;" (goto "goto") (statement_identifier "LAB_00036608") (; ";"))) (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" (identifier "uVar2") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar2 - 1;" (assignment_expression "*puVar7 = uVar2 - 1" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = 2;\n        }" (else "else") (compound_statement "{\n          iVar4 = 2;\n        }" ({ "{") (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" (if "if") (parenthesized_expression "((puVar28 != puVar19) && (iVar4 < (int)puVar18))" (( "(") (binary_expression "(puVar28 != puVar19) && (iVar4 < (int)puVar18)" (parenthesized_expression "(puVar28 != puVar19)" (( "(") (binary_expression "puVar28 != puVar19" (identifier "puVar28") (!= "!=") (identifier "puVar19")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < (int)puVar18)" (( "(") (binary_expression "iVar4 < (int)puVar18" (identifier "iVar4") (< "<") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")"))) () ")")) (compound_statement "{\n          puVar12 = puVar28 + iVar4;\n          puVar7 = puVar19 + iVar4;\n          do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);\n        }" ({ "{") (expression_statement "puVar12 = puVar28 + iVar4;" (assignment_expression "puVar12 = puVar28 + iVar4" (identifier "puVar12") (= "=") (binary_expression "puVar28 + iVar4" (identifier "puVar28") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "puVar7 = puVar19 + iVar4;" (assignment_expression "puVar7 = puVar19 + iVar4" (identifier "puVar7") (= "=") (binary_expression "puVar19 + iVar4" (identifier "puVar19") (+ "+") (identifier "iVar4"))) (; ";")) (do_statement "do {\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          } while (puVar28 + (int)puVar18 != puVar12);" (do "do") (compound_statement "{\n            uVar2 = *puVar12;\n            puVar12 = puVar12 + 1;\n            *puVar7 = uVar2;\n            puVar7 = puVar7 + 1;\n          }" ({ "{") (expression_statement "uVar2 = *puVar12;" (assignment_expression "uVar2 = *puVar12" (identifier "uVar2") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar7 = uVar2;" (assignment_expression "*puVar7 = uVar2" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar28 + (int)puVar18 != puVar12)" (( "(") (binary_expression "puVar28 + (int)puVar18 != puVar12" (binary_expression "puVar28 + (int)puVar18" (identifier "puVar28") (+ "+") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) (!= "!=") (identifier "puVar12")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" (else "else") (if_statement "if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" (if "if") (parenthesized_expression "((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff))" (( "(") (binary_expression "(puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" (parenthesized_expression "(puVar28 != puVar19)" (( "(") (binary_expression "puVar28 != puVar19" (identifier "puVar28") (!= "!=") (identifier "puVar19")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)" (( "(") (comma_expression "iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (, ",") (comma_expression "puVar7 = puVar19, puVar27 != (uint *)0xffffffff" (assignment_expression "puVar7 = puVar19" (identifier "puVar7") (= "=") (identifier "puVar19")) (, ",") (binary_expression "puVar27 != (uint *)0xffffffff" (identifier "puVar27") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))))) () ")"))) () ")")) (compound_statement "{\n      do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);\n    }" ({ "{") (do_statement "do {\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      } while (iVar4 < (int)puVar18);" (do "do") (compound_statement "{\n        puVar28 = puVar28 + 1;\n        iVar4 = iVar4 + 1;\n        puVar7[1] = *puVar28;\n        puVar7 = puVar7 + 1;\n      }" ({ "{") (expression_statement "puVar28 = puVar28 + 1;" (assignment_expression "puVar28 = puVar28 + 1" (identifier "puVar28") (= "=") (binary_expression "puVar28 + 1" (identifier "puVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7[1] = *puVar28;" (assignment_expression "puVar7[1] = *puVar28" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*puVar28" (* "*") (identifier "puVar28"))) (; ";")) (expression_statement "puVar7 = puVar7 + 1;" (assignment_expression "puVar7 = puVar7 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < (int)puVar18)" (( "(") (binary_expression "iVar4 < (int)puVar18" (identifier "iVar4") (< "<") (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18"))) () ")")) (; ";")) (} "}"))))) (labeled_statement "LAB_00036608:\n    puVar28 = puVar19;" (statement_identifier "LAB_00036608") (: ":") (expression_statement "puVar28 = puVar19;" (assignment_expression "puVar28 = puVar19" (identifier "puVar28") (= "=") (identifier "puVar19")) (; ";"))) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" (identifier "unaff_s0") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if ((int)puVar27 <= (int)puVar23) {\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" (if "if") (parenthesized_expression "((int)puVar27 <= (int)puVar23)" (( "(") (binary_expression "(int)puVar27 <= (int)puVar23" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (<= "<=") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")")) (compound_statement "{\n      puVar28 = puVar16;\n      puVar16 = puVar19;\n      unaff_s0 = puVar18;\n      puVar25 = puVar15;\n      puVar27 = puVar23;\n    }" ({ "{") (expression_statement "puVar28 = puVar16;" (assignment_expression "puVar28 = puVar16" (identifier "puVar28") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar16 = puVar19;" (assignment_expression "puVar16 = puVar19" (identifier "puVar16") (= "=") (identifier "puVar19")) (; ";")) (expression_statement "unaff_s0 = puVar18;" (assignment_expression "unaff_s0 = puVar18" (identifier "unaff_s0") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "puVar25 = puVar15;" (assignment_expression "puVar25 = puVar15" (identifier "puVar25") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" (identifier "puVar27") (= "=") (identifier "puVar23")) (; ";")) (} "}"))) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(code **)(puVar30 + -0x7a84)" (identifier "pcVar36") (= "=") (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)*puVar14 < (int)unaff_s0) {\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }\n    else {\n      uVar2 = puVar14[2];\n    }" (if "if") (parenthesized_expression "((int)*puVar14 < (int)unaff_s0)" (( "(") (binary_expression "(int)*puVar14 < (int)unaff_s0" (cast_expression "(int)*puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (< "<") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0"))) () ")")) (compound_statement "{\n      *(uint **)(puVar32 + -0x38) = puVar16;\n      *(uint **)(puVar32 + -0x34) = puVar28;\n      uVar2 = (*pcVar36)(puVar14,unaff_s0);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar28 = *(uint **)(puVar32 + -0x34);\n      puVar16 = *(uint **)(puVar32 + -0x38);\n    }" ({ "{") (expression_statement "*(uint **)(puVar32 + -0x38) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x38) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar28;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar28" (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar28")) (; ";")) (expression_statement "uVar2 = (*pcVar36)(puVar14,unaff_s0);" (assignment_expression "uVar2 = (*pcVar36)(puVar14,unaff_s0)" (identifier "uVar2") (= "=") (call_expression "(*pcVar36)(puVar14,unaff_s0)" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "(puVar14,unaff_s0)" (( "(") (identifier "puVar14") (, ",") (identifier "unaff_s0") () ")")))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "puVar28 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar28 = *(uint **)(puVar32 + -0x34)" (identifier "puVar28") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x38);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x38)" (identifier "puVar16") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = puVar14[2];\n    }" (else "else") (compound_statement "{\n      uVar2 = puVar14[2];\n    }" ({ "{") (expression_statement "uVar2 = puVar14[2];" (assignment_expression "uVar2 = puVar14[2]" (identifier "uVar2") (= "=") (subscript_expression "puVar14[2]" (identifier "puVar14") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")))) (if_statement "if (unaff_s0 == puVar25) {\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }\n    else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" (if "if") (parenthesized_expression "(unaff_s0 == puVar25)" (( "(") (binary_expression "unaff_s0 == puVar25" (identifier "unaff_s0") (== "==") (identifier "puVar25")) () ")")) (compound_statement "{\n      puVar10 = (uint *)((int)unaff_s0 << 2);\n    }" ({ "{") (expression_statement "puVar10 = (uint *)((int)unaff_s0 << 2);" (assignment_expression "puVar10 = (uint *)((int)unaff_s0 << 2)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)unaff_s0 << 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 << 2)" (( "(") (binary_expression "(int)unaff_s0 << 2" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" (else "else") (compound_statement "{\n      puVar10 = (uint *)((int)puVar25 * 4);\n      puVar18 = puVar16 + (int)puVar25;\n      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));\n      puVar19 = (uint *)(uVar2 + (int)puVar10);\n      uVar24 = *puVar18;\n      puVar15 = puVar19;\n      if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }\n      *puVar19 = uVar24;\n    }" ({ "{") (expression_statement "puVar10 = (uint *)((int)puVar25 * 4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 * 4)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar25 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 * 4)" (( "(") (binary_expression "(int)puVar25 * 4" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar18 = puVar16 + (int)puVar25;" (assignment_expression "puVar18 = puVar16 + (int)puVar25" (identifier "puVar18") (= "=") (binary_expression "puVar16 + (int)puVar25" (identifier "puVar16") (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25))" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)unaff_s0 + (-1 - (int)puVar25))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" (( "(") (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (parenthesized_expression "(-1 - (int)puVar25)" (( "(") (binary_expression "-1 - (int)puVar25" (number_literal "-1") (- "-") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar10);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar10)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(uVar2 + (int)puVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + (int)puVar10)" (( "(") (binary_expression "uVar2 + (int)puVar10" (identifier "uVar2") (+ "+") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")))) (; ";")) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" (identifier "uVar24") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" (identifier "puVar15") (= "=") (identifier "puVar19")) (; ";")) (if_statement "if (pbVar11 != (byte *)0x0) {\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" (if "if") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);\n        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));\n      }" ({ "{") (do_statement "do {\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        } while (pbVar11 != (byte *)0x0);" (do "do") (compound_statement "{\n          puVar18 = puVar18 + 1;\n          *puVar15 = uVar24;\n          pbVar11 = pbVar11 + -1;\n          uVar24 = *puVar18;\n          puVar15 = puVar15 + 1;\n        }" ({ "{") (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "uVar24")) (; ";")) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + -1" (identifier "pbVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" (identifier "uVar24") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));" (assignment_expression "puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" (identifier "puVar19") (= "=") (binary_expression "puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25))" (identifier "puVar19") (+ "+") (cast_expression "(int)((int)unaff_s0 + (-1 - (int)puVar25))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)unaff_s0 + (-1 - (int)puVar25))" (( "(") (binary_expression "(int)unaff_s0 + (-1 - (int)puVar25)" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (parenthesized_expression "(-1 - (int)puVar25)" (( "(") (binary_expression "-1 - (int)puVar25" (number_literal "-1") (- "-") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar19 = uVar24;" (assignment_expression "*puVar19 = uVar24" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "uVar24")) (; ";")) (} "}")))) (expression_statement "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);" (assignment_expression "puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)((int)puVar27 + (int)puVar25) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)((int)puVar27 + (int)puVar25) * 4)" (( "(") (binary_expression "(int)((int)puVar27 + (int)puVar25) * 4" (cast_expression "(int)((int)puVar27 + (int)puVar25)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar27 + (int)puVar25)" (( "(") (binary_expression "(int)puVar27 + (int)puVar25" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (+ "+") (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25"))) () ")"))) (* "*") (number_literal "4")) () ")")))) (; ";")) (do_statement "do {\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    } while (puVar10 != puVar15);" (do "do") (compound_statement "{\n      puVar27 = (uint *)((int)puVar28 + (int)puVar15);\n      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);\n      puVar19 = (uint *)(uVar2 + (int)puVar15);\n      puVar15 = puVar15 + 1;\n      puVar18 = *(uint **)pbVar11;\n      *puVar19 = *puVar27 ^ (uint)puVar18;\n    }" ({ "{") (expression_statement "puVar27 = (uint *)((int)puVar28 + (int)puVar15);" (assignment_expression "puVar27 = (uint *)((int)puVar28 + (int)puVar15)" (identifier "puVar27") (= "=") (cast_expression "(uint *)((int)puVar28 + (int)puVar15)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + (int)puVar15)" (( "(") (binary_expression "(int)puVar28 + (int)puVar15" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar16 + (int)puVar15);" (assignment_expression "pbVar11 = (byte *)((int)puVar16 + (int)puVar15)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar16 + (int)puVar15)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + (int)puVar15)" (( "(") (binary_expression "(int)puVar16 + (int)puVar15" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")))) (; ";")) (expression_statement "puVar19 = (uint *)(uVar2 + (int)puVar15);" (assignment_expression "puVar19 = (uint *)(uVar2 + (int)puVar15)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(uVar2 + (int)puVar15)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 + (int)puVar15)" (( "(") (binary_expression "uVar2 + (int)puVar15" (identifier "uVar2") (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" (identifier "puVar18") (= "=") (pointer_expression "*(uint **)pbVar11" (* "*") (cast_expression "(uint **)pbVar11" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar11")))) (; ";")) (expression_statement "*puVar19 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar19 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" (* "*") (identifier "puVar27")) (^ "^") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar10 != puVar15)" (( "(") (binary_expression "puVar10 != puVar15" (identifier "puVar10") (!= "!=") (identifier "puVar15")) () ")")) (; ";")) (expression_statement "iVar4 = uVar2 + (int)unaff_s0 * 4;" (assignment_expression "iVar4 = uVar2 + (int)unaff_s0 * 4" (identifier "iVar4") (= "=") (binary_expression "uVar2 + (int)unaff_s0 * 4" (identifier "uVar2") (+ "+") (binary_expression "(int)unaff_s0 * 4" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "4")))) (; ";")) (do_statement "do {\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    } while (unaff_s0 != (uint *)0x0);" (do "do") (compound_statement "{\n      if (*(int *)(iVar4 + -4) != 0) break;\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      iVar4 = iVar4 + -4;\n    }" ({ "{") (if_statement "if (*(int *)(iVar4 + -4) != 0) break;" (if "if") (parenthesized_expression "(*(int *)(iVar4 + -4) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + -4) != 0" (pointer_expression "*(int *)(iVar4 + -4)" (* "*") (cast_expression "(int *)(iVar4 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + -4)" (( "(") (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((int)unaff_s0 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 + -1)" (( "(") (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "iVar4 = iVar4 + -4;" (assignment_expression "iVar4 = iVar4 + -4" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -4" (identifier "iVar4") (+ "+") (number_literal "-4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s0 != (uint *)0x0)" (( "(") (binary_expression "unaff_s0 != (uint *)0x0" (identifier "unaff_s0") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" (else "else") (compound_statement "{\n    if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }\n    puVar10 = (uint *)-(int)puVar27;\n    param_3 = puVar16;\n    puVar16 = puVar27;\n    puVar15 = puVar28;\n    puVar27 = puVar23;\n    puVar28 = puVar26;\nLAB_0003630c:\n    puVar26 = puVar15;\n    puVar23 = puVar16;\n    uVar2 = (int)puVar10 * 4;\n    if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }\n    uVar24 = *puVar26;\n    *puVar16 = uVar24 - 1;\n    if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }\nLAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;\n    uVar2 = (puVar25 + (int)unaff_s0)[-1];\n    puVar16 = puVar25 + (int)unaff_s0;\n    while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }\n    unaff_s0 = (uint *)-(int)unaff_s0;\n  }" ({ "{") (if_statement "if (-1 < (int)puVar27) {\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" (if "if") (parenthesized_expression "(-1 < (int)puVar27)" (( "(") (binary_expression "-1 < (int)puVar27" (number_literal "-1") (< "<") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (compound_statement "{\n      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);\n      puVar10 = puVar14;\n      puVar15 = puVar27;\n      if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }\n      puVar14[1] = (uint)puVar27;\n      goto LAB_000366e0;\n    }" ({ "{") (expression_statement "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);" (assignment_expression "puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uint)((int)puVar23 < (int)puVar27)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)((int)puVar23 < (int)puVar27)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar23 < (int)puVar27)" (( "(") (binary_expression "(int)puVar23 < (int)puVar27" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (< "<") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")"))))) (; ";")) (expression_statement "puVar10 = puVar14;" (assignment_expression "puVar10 = puVar14" (identifier "puVar10") (= "=") (identifier "puVar14")) (; ";")) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" (identifier "puVar15") (= "=") (identifier "puVar27")) (; ";")) (if_statement "if (puVar18 == (uint *)0x0) {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }\n      else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(puVar18 == (uint *)0x0)" (( "(") (binary_expression "puVar18 == (uint *)0x0" (identifier "puVar18") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        puVar16 = (uint *)0x0;\n        if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }\n        puVar27 = puVar23;\n        if (puVar23 != (uint *)0x0) goto LAB_00036910;\n        puVar27 = (uint *)0x0;\n      }" ({ "{") (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" (identifier "pcVar36") (= "=") (pointer_expression "*(code **)(puVar29 + 0x6134c)" (* "*") (cast_expression "(code **)(puVar29 + 0x6134c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x6134c)" (( "(") (binary_expression "puVar29 + 0x6134c" (identifier "puVar29") (+ "+") (number_literal "0x6134c")) () ")"))))) (; ";")) (if_statement "if ((int)*puVar14 < (int)puVar23) {\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" (if "if") (parenthesized_expression "((int)*puVar14 < (int)puVar23)" (( "(") (binary_expression "(int)*puVar14 < (int)puVar23" (cast_expression "(int)*puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (< "<") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")")) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = param_3;\n          puVar18 = puVar23;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" ({ "{") (expression_statement "*(uint **)(puVar32 + -0x34) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x34) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar18 = puVar23;" (assignment_expression "puVar18 = puVar23" (identifier "puVar18") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)puVar14[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar14[2]" (identifier "puVar14") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" (identifier "puVar28") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" (( "(") (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" (* "*") (cast_expression "(int *)(puVar32 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((puVar25 != puVar26) && (puVar23 != puVar27)) {\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" (if "if") (parenthesized_expression "((puVar25 != puVar26) && (puVar23 != puVar27))" (( "(") (binary_expression "(puVar25 != puVar26) && (puVar23 != puVar27)" (parenthesized_expression "(puVar25 != puVar26)" (( "(") (binary_expression "puVar25 != puVar26" (identifier "puVar25") (!= "!=") (identifier "puVar26")) () ")")) (&& "&&") (parenthesized_expression "(puVar23 != puVar27)" (( "(") (binary_expression "puVar23 != puVar27" (identifier "puVar23") (!= "!=") (identifier "puVar27")) () ")"))) () ")")) (compound_statement "{\n          puVar19 = puVar26 + (int)puVar27;\n          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));\n          puVar7 = puVar25 + (int)puVar27;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }\n          *puVar7 = (uint)puVar18;\n        }" ({ "{") (expression_statement "puVar19 = puVar26 + (int)puVar27;" (assignment_expression "puVar19 = puVar26 + (int)puVar27" (identifier "puVar19") (= "=") (binary_expression "puVar26 + (int)puVar27" (identifier "puVar26") (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27))" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar23 + (-1 - (int)puVar27))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" (( "(") (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (parenthesized_expression "(-1 - (int)puVar27)" (( "(") (binary_expression "-1 - (int)puVar27" (number_literal "-1") (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar7 = puVar25 + (int)puVar27;" (assignment_expression "puVar7 = puVar25 + (int)puVar27" (identifier "puVar7") (= "=") (binary_expression "puVar25 + (int)puVar27" (identifier "puVar25") (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")))) (; ";")) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" (identifier "puVar16") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" (if "if") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));\n          }" ({ "{") (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" (do "do") (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" ({ "{") (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + -1" (identifier "pbVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" (identifier "puVar16") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27))" (identifier "puVar7") (+ "+") (cast_expression "(int)((int)puVar23 + (-1 - (int)puVar27))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar23 + (-1 - (int)puVar27))" (( "(") (binary_expression "(int)puVar23 + (-1 - (int)puVar27)" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (parenthesized_expression "(-1 - (int)puVar27)" (( "(") (binary_expression "-1 - (int)puVar27" (number_literal "-1") (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (} "}"))) (expression_statement "puVar16 = (uint *)0x0;" (assignment_expression "puVar16 = (uint *)0x0" (identifier "puVar16") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (puVar27 != (uint *)0x0) {\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" (if "if") (parenthesized_expression "(puVar27 != (uint *)0x0)" (( "(") (binary_expression "puVar27 != (uint *)0x0" (identifier "puVar27") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar15 = (uint *)((int)puVar27 << 2);\n          do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);\n        }" ({ "{") (expression_statement "puVar15 = (uint *)((int)puVar27 << 2);" (assignment_expression "puVar15 = (uint *)((int)puVar27 << 2)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar27 << 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar27 << 2)" (( "(") (binary_expression "(int)puVar27 << 2" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (do_statement "do {\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          } while (puVar15 != puVar16);" (do "do") (compound_statement "{\n            puVar27 = (uint *)((int)puVar26 + (int)puVar16);\n            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);\n            puVar10 = (uint *)((int)puVar25 + (int)puVar16);\n            puVar16 = puVar16 + 1;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar27 ^ (uint)puVar18;\n          }" ({ "{") (expression_statement "puVar27 = (uint *)((int)puVar26 + (int)puVar16);" (assignment_expression "puVar27 = (uint *)((int)puVar26 + (int)puVar16)" (identifier "puVar27") (= "=") (cast_expression "(uint *)((int)puVar26 + (int)puVar16)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar26 + (int)puVar16)" (( "(") (binary_expression "(int)puVar26 + (int)puVar16" (cast_expression "(int)puVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar26")) (+ "+") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar28 + (int)puVar16);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + (int)puVar16)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar28 + (int)puVar16)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + (int)puVar16)" (( "(") (binary_expression "(int)puVar28 + (int)puVar16" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar25 + (int)puVar16);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + (int)puVar16)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar25 + (int)puVar16)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + (int)puVar16)" (( "(") (binary_expression "(int)puVar25 + (int)puVar16" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) () ")")))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" (identifier "puVar18") (= "=") (pointer_expression "*(uint **)pbVar11" (* "*") (cast_expression "(uint **)pbVar11" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar11")))) (; ";")) (expression_statement "*puVar10 = *puVar27 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar27 ^ (uint)puVar18" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (binary_expression "*puVar27 ^ (uint)puVar18" (pointer_expression "*puVar27" (* "*") (identifier "puVar27")) (^ "^") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar15 != puVar16)" (( "(") (binary_expression "puVar15 != puVar16" (identifier "puVar15") (!= "!=") (identifier "puVar16")) () ")")) (; ";")) (} "}"))) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" (identifier "puVar27") (= "=") (identifier "puVar23")) (; ";")) (if_statement "if (puVar23 != (uint *)0x0) goto LAB_00036910;" (if "if") (parenthesized_expression "(puVar23 != (uint *)0x0)" (( "(") (binary_expression "puVar23 != (uint *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00036910;" (goto "goto") (statement_identifier "LAB_00036910") (; ";"))) (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" (identifier "puVar27") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" (else "else") (compound_statement "{\n        pcVar36 = *(code **)(puVar29 + 0x6134c);\n        if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }\n        if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }\n        if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }\nLAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }\n      }" ({ "{") (expression_statement "pcVar36 = *(code **)(puVar29 + 0x6134c);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x6134c)" (identifier "pcVar36") (= "=") (pointer_expression "*(code **)(puVar29 + 0x6134c)" (* "*") (cast_expression "(code **)(puVar29 + 0x6134c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x6134c)" (( "(") (binary_expression "puVar29 + 0x6134c" (identifier "puVar29") (+ "+") (number_literal "0x6134c")) () ")"))))) (; ";")) (if_statement "if ((int)*puVar14 < (int)puVar27) {\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" (if "if") (parenthesized_expression "((int)*puVar14 < (int)puVar27)" (( "(") (binary_expression "(int)*puVar14 < (int)puVar27" (cast_expression "(int)*puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (< "<") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (compound_statement "{\n          *(uint **)(puVar32 + -0x34) = puVar16;\n          puVar18 = puVar27;\n          (*pcVar36)();\n          puVar30 = *(undefined **)(puVar32 + -0x48);\n          puVar25 = (uint *)puVar14[2];\n          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);\n        }" ({ "{") (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar18 = puVar27;" (assignment_expression "puVar18 = puVar27" (identifier "puVar18") (= "=") (identifier "puVar27")) (; ";")) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)puVar14[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar14[2]" (identifier "puVar14") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);" (assignment_expression "puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8)" (identifier "puVar26") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x34) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar32 + -0x34) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar32 + -0x34) + 8)" (( "(") (binary_expression "*(int *)(puVar32 + -0x34) + 8" (pointer_expression "*(int *)(puVar32 + -0x34)" (* "*") (cast_expression "(int *)(puVar32 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (puVar25 != puVar28) {\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" (if "if") (parenthesized_expression "(puVar25 != puVar28)" (( "(") (binary_expression "puVar25 != puVar28" (identifier "puVar25") (!= "!=") (identifier "puVar28")) () ")")) (compound_statement "{\n          puVar19 = puVar28 + (int)puVar23;\n          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));\n          puVar7 = puVar25 + (int)puVar23;\n          puVar18 = (uint *)*puVar19;\n          puVar16 = puVar7;\n          if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }\n          *puVar7 = (uint)puVar18;\n        }" ({ "{") (expression_statement "puVar19 = puVar28 + (int)puVar23;" (assignment_expression "puVar19 = puVar28 + (int)puVar23" (identifier "puVar19") (= "=") (binary_expression "puVar28 + (int)puVar23" (identifier "puVar28") (+ "+") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23))" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar27 + (-1 - (int)puVar23))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" (( "(") (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (+ "+") (parenthesized_expression "(-1 - (int)puVar23)" (( "(") (binary_expression "-1 - (int)puVar23" (number_literal "-1") (- "-") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar7 = puVar25 + (int)puVar23;" (assignment_expression "puVar7 = puVar25 + (int)puVar23" (identifier "puVar7") (= "=") (binary_expression "puVar25 + (int)puVar23" (identifier "puVar25") (+ "+") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")))) (; ";")) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "puVar16 = puVar7;" (assignment_expression "puVar16 = puVar7" (identifier "puVar16") (= "=") (identifier "puVar7")) (; ";")) (if_statement "if (pbVar11 != (byte *)0x0) {\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" (if "if") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);\n            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));\n          }" ({ "{") (do_statement "do {\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            } while (pbVar11 != (byte *)0x0);" (do "do") (compound_statement "{\n              puVar19 = puVar19 + 1;\n              puVar10 = puVar16 + 1;\n              *puVar16 = (uint)puVar18;\n              pbVar11 = pbVar11 + -1;\n              puVar18 = (uint *)*puVar19;\n              puVar16 = puVar10;\n            }" ({ "{") (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar16 + 1;" (assignment_expression "puVar10 = puVar16 + 1" (identifier "puVar10") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar16 = (uint)puVar18;" (assignment_expression "*puVar16 = (uint)puVar18" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + -1" (identifier "pbVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar18 = (uint *)*puVar19;" (assignment_expression "puVar18 = (uint *)*puVar19" (identifier "puVar18") (= "=") (cast_expression "(uint *)*puVar19" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "puVar16 = puVar10;" (assignment_expression "puVar16 = puVar10" (identifier "puVar16") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));" (assignment_expression "puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" (identifier "puVar7") (= "=") (binary_expression "puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23))" (identifier "puVar7") (+ "+") (cast_expression "(int)((int)puVar27 + (-1 - (int)puVar23))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar27 + (-1 - (int)puVar23))" (( "(") (binary_expression "(int)puVar27 + (-1 - (int)puVar23)" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (+ "+") (parenthesized_expression "(-1 - (int)puVar23)" (( "(") (binary_expression "-1 - (int)puVar23" (number_literal "-1") (- "-") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar7 = (uint)puVar18;" (assignment_expression "*puVar7 = (uint)puVar18" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";")) (} "}"))) (if_statement "if (puVar23 != (uint *)0x0) {\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" (if "if") (parenthesized_expression "(puVar23 != (uint *)0x0)" (( "(") (binary_expression "puVar23 != (uint *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar4 = 0;\n          do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);\n        }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          } while ((int)puVar23 << 2 != iVar4);" (do "do") (compound_statement "{\n            puVar16 = (uint *)((int)puVar26 + iVar4);\n            pbVar11 = (byte *)((int)puVar28 + iVar4);\n            puVar10 = (uint *)((int)puVar25 + iVar4);\n            iVar4 = iVar4 + 4;\n            puVar18 = *(uint **)pbVar11;\n            *puVar10 = *puVar16 ^ (uint)puVar18;\n          }" ({ "{") (expression_statement "puVar16 = (uint *)((int)puVar26 + iVar4);" (assignment_expression "puVar16 = (uint *)((int)puVar26 + iVar4)" (identifier "puVar16") (= "=") (cast_expression "(uint *)((int)puVar26 + iVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar26 + iVar4)" (( "(") (binary_expression "(int)puVar26 + iVar4" (cast_expression "(int)puVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar26")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar28 + iVar4);" (assignment_expression "pbVar11 = (byte *)((int)puVar28 + iVar4)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar28 + iVar4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + iVar4)" (( "(") (binary_expression "(int)puVar28 + iVar4" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar25 + iVar4);" (assignment_expression "puVar10 = (uint *)((int)puVar25 + iVar4)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar25 + iVar4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar4)" (( "(") (binary_expression "(int)puVar25 + iVar4" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (expression_statement "iVar4 = iVar4 + 4;" (assignment_expression "iVar4 = iVar4 + 4" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "puVar18 = *(uint **)pbVar11;" (assignment_expression "puVar18 = *(uint **)pbVar11" (identifier "puVar18") (= "=") (pointer_expression "*(uint **)pbVar11" (* "*") (cast_expression "(uint **)pbVar11" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar11")))) (; ";")) (expression_statement "*puVar10 = *puVar16 ^ (uint)puVar18;" (assignment_expression "*puVar10 = *puVar16 ^ (uint)puVar18" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (binary_expression "*puVar16 ^ (uint)puVar18" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (^ "^") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)puVar23 << 2 != iVar4)" (( "(") (binary_expression "(int)puVar23 << 2 != iVar4" (binary_expression "(int)puVar23 << 2" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (<< "<<") (number_literal "2")) (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00036910:\n        if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" (statement_identifier "LAB_00036910") (: ":") (if_statement "if (puVar25[(int)((int)puVar27 + -1)] == 0) {\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" (if "if") (parenthesized_expression "(puVar25[(int)((int)puVar27 + -1)] == 0)" (( "(") (binary_expression "puVar25[(int)((int)puVar27 + -1)] == 0" (subscript_expression "puVar25[(int)((int)puVar27 + -1)]" (identifier "puVar25") ([ "[") (cast_expression "(int)((int)puVar27 + -1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar27 + -1)" (( "(") (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (+ "+") (number_literal "-1")) () ")"))) (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar16 = puVar25 + (int)puVar27;\n          do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);\n        }" ({ "{") (expression_statement "puVar16 = puVar25 + (int)puVar27;" (assignment_expression "puVar16 = puVar25 + (int)puVar27" (identifier "puVar16") (= "=") (binary_expression "puVar25 + (int)puVar27" (identifier "puVar25") (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")))) (; ";")) (do_statement "do {\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          } while (*puVar28 == 0);" (do "do") (compound_statement "{\n            puVar27 = (uint *)((int)puVar27 + -1);\n            if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }\n            puVar28 = puVar16 + -2;\n            puVar16 = puVar16 + -1;\n          }" ({ "{") (expression_statement "puVar27 = (uint *)((int)puVar27 + -1);" (assignment_expression "puVar27 = (uint *)((int)puVar27 + -1)" (identifier "puVar27") (= "=") (cast_expression "(uint *)((int)puVar27 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar27 + -1)" (( "(") (binary_expression "(int)puVar27 + -1" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (puVar27 == (uint *)0x0) {\n              puVar27 = (uint *)0x0;\n              break;\n            }" (if "if") (parenthesized_expression "(puVar27 == (uint *)0x0)" (( "(") (binary_expression "puVar27 == (uint *)0x0" (identifier "puVar27") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              puVar27 = (uint *)0x0;\n              break;\n            }" ({ "{") (expression_statement "puVar27 = (uint *)0x0;" (assignment_expression "puVar27 = (uint *)0x0" (identifier "puVar27") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar28 = puVar16 + -2;" (assignment_expression "puVar28 = puVar16 + -2" (identifier "puVar28") (= "=") (binary_expression "puVar16 + -2" (identifier "puVar16") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + -1" (identifier "puVar16") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*puVar28 == 0)" (( "(") (binary_expression "*puVar28 == 0" (pointer_expression "*puVar28" (* "*") (identifier "puVar28")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")))) (} "}")))) (expression_statement "puVar14[1] = (uint)puVar27;" (assignment_expression "puVar14[1] = (uint)puVar27" (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)puVar27" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar27"))) (; ";")) (goto_statement "goto LAB_000366e0;" (goto "goto") (statement_identifier "LAB_000366e0") (; ";")) (} "}"))) (expression_statement "puVar10 = (uint *)-(int)puVar27;" (assignment_expression "puVar10 = (uint *)-(int)puVar27" (identifier "puVar10") (= "=") (cast_expression "(uint *)-(int)puVar27" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)puVar27" (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))))) (; ";")) (expression_statement "param_3 = puVar16;" (assignment_expression "param_3 = puVar16" (identifier "param_3") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar16 = puVar27;" (assignment_expression "puVar16 = puVar27" (identifier "puVar16") (= "=") (identifier "puVar27")) (; ";")) (expression_statement "puVar15 = puVar28;" (assignment_expression "puVar15 = puVar28" (identifier "puVar15") (= "=") (identifier "puVar28")) (; ";")) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" (identifier "puVar27") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "puVar28 = puVar26;" (assignment_expression "puVar28 = puVar26" (identifier "puVar28") (= "=") (identifier "puVar26")) (; ";")) (labeled_statement "LAB_0003630c:\n    puVar26 = puVar15;" (statement_identifier "LAB_0003630c") (: ":") (expression_statement "puVar26 = puVar15;" (assignment_expression "puVar26 = puVar15" (identifier "puVar26") (= "=") (identifier "puVar15")) (; ";"))) (expression_statement "puVar23 = puVar16;" (assignment_expression "puVar23 = puVar16" (identifier "puVar23") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "uVar2 = (int)puVar10 * 4;" (assignment_expression "uVar2 = (int)puVar10 * 4" (identifier "uVar2") (= "=") (binary_expression "(int)puVar10 * 4" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar2 < 0x7f01) {\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }\n    else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" (if "if") (parenthesized_expression "(uVar2 < 0x7f01)" (( "(") (binary_expression "uVar2 < 0x7f01" (identifier "uVar2") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar4 = -(uVar2 + 7 & 0xfffffff8);\n      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);\n      puVar34 = puVar32 + iVar4 + -0x58;\n    }" ({ "{") (expression_statement "iVar4 = -(uVar2 + 7 & 0xfffffff8);" (assignment_expression "iVar4 = -(uVar2 + 7 & 0xfffffff8)" (identifier "iVar4") (= "=") (unary_expression "-(uVar2 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar2 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar2 + 7 & 0xfffffff8" (binary_expression "uVar2 + 7" (identifier "uVar2") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar16 = (uint *)(puVar32 + iVar4 + -0x48);" (assignment_expression "puVar16 = (uint *)(puVar32 + iVar4 + -0x48)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(puVar32 + iVar4 + -0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + iVar4 + -0x48)" (( "(") (binary_expression "puVar32 + iVar4 + -0x48" (binary_expression "puVar32 + iVar4" (identifier "puVar32") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x48")) () ")")))) (; ";")) (expression_statement "puVar34 = puVar32 + iVar4 + -0x58;" (assignment_expression "puVar34 = puVar32 + iVar4 + -0x58" (identifier "puVar34") (= "=") (binary_expression "puVar32 + iVar4 + -0x58" (binary_expression "puVar32 + iVar4" (identifier "puVar32") (+ "+") (identifier "iVar4")) (+ "+") (number_literal "-0x58"))) (; ";")) (} "}")) (else_clause "else {\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" (else "else") (compound_statement "{\n      pcVar36 = *(code **)(puVar29 + 0x61080);\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint *)(puVar32 + -0x34) = uVar2;\n      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      param_3 = *(uint **)(puVar32 + -0x38);\n      uVar2 = *(uint *)(puVar32 + -0x34);\n      puVar34 = puVar32 + -0x58;\n    }" ({ "{") (expression_statement "pcVar36 = *(code **)(puVar29 + 0x61080);" (assignment_expression "pcVar36 = *(code **)(puVar29 + 0x61080)" (identifier "pcVar36") (= "=") (pointer_expression "*(code **)(puVar29 + 0x61080)" (* "*") (cast_expression "(code **)(puVar29 + 0x61080)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29 + 0x61080)" (( "(") (binary_expression "puVar29 + 0x61080" (identifier "puVar29") (+ "+") (number_literal "0x61080")) () ")"))))) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint *)(puVar32 + -0x34) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x34) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x34)" (* "*") (cast_expression "(uint *)(puVar32 + -0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);" (assignment_expression "puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" (identifier "puVar16") (= "=") (cast_expression "(uint *)(*pcVar36)(puVar32 + -0x30,uVar2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar36)(puVar32 + -0x30,uVar2)" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "(puVar32 + -0x30,uVar2)" (( "(") (binary_expression "puVar32 + -0x30" (identifier "puVar32") (+ "+") (number_literal "-0x30")) (, ",") (identifier "uVar2") () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "param_3 = *(uint **)(puVar32 + -0x38);" (assignment_expression "param_3 = *(uint **)(puVar32 + -0x38)" (identifier "param_3") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x34);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x34)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(puVar32 + -0x34)" (* "*") (cast_expression "(uint *)(puVar32 + -0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "puVar34 = puVar32 + -0x58;" (assignment_expression "puVar34 = puVar32 + -0x58" (identifier "puVar34") (= "=") (binary_expression "puVar32 + -0x58" (identifier "puVar32") (+ "+") (number_literal "-0x58"))) (; ";")) (} "}")))) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" (identifier "uVar24") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (expression_statement "*puVar16 = uVar24 - 1;" (assignment_expression "*puVar16 = uVar24 - 1" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (binary_expression "uVar24 - 1" (identifier "uVar24") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar24 == 0) {\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }\n    else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" (if "if") (parenthesized_expression "(uVar24 == 0)" (( "(") (binary_expression "uVar24 == 0" (identifier "uVar24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }\nLAB_00036390:\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      pcVar36 = *(code **)(puVar30 + -0x7a84);\n      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;\nLAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;\n      *(uint **)(puVar32 + -0x38) = param_3;\n      *(uint **)(puVar32 + -0x34) = puVar16;\n      (*pcVar36)(puVar14);\n      puVar30 = *(undefined **)(puVar32 + -0x48);\n      puVar25 = (uint *)puVar14[2];\n      uVar2 = *(uint *)(puVar32 + -0x3c);\n      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);\n      puVar16 = *(uint **)(puVar32 + -0x34);\n      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;\nLAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);\n      pbVar6 = (byte *)((int)puVar28 + uVar2);\n      pbVar9 = (byte *)((int)puVar23 + -1);\n      pbVar22 = (byte *)((int)puVar25 + uVar2);\n      uVar17 = *(undefined4 *)pbVar6;\n      pbVar11 = pbVar22;\n      if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }\n      uVar24 = 0;\n      *(undefined4 *)pbVar22 = uVar17;\n      do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      puVar10 = puVar27;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\nLAB_00036438:\n      uVar2 = puVar25[1];\n      puVar25[1] = uVar2 + 1;\n      puVar27 = puVar10;\n      if (uVar2 + 1 != 0) goto LAB_00036840;\n      iVar4 = 2;\n      puVar16 = puVar25 + 2;\n      do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n    }" ({ "{") (if_statement "if (puVar23 != (uint *)0xffffffff) {\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" (if "if") (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" (( "(") (binary_expression "puVar23 != (uint *)0xffffffff" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (compound_statement "{\n        uVar24 = puVar26[1];\n        puVar16[1] = uVar24 - 1;\n        if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }\n        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }\n      }" ({ "{") (expression_statement "uVar24 = puVar26[1];" (assignment_expression "uVar24 = puVar26[1]" (identifier "uVar24") (= "=") (subscript_expression "puVar26[1]" (identifier "puVar26") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar16[1] = uVar24 - 1;" (assignment_expression "puVar16[1] = uVar24 - 1" (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar24 - 1" (identifier "uVar24") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar24 == 0) {\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }\n        else {\n          iVar4 = 2;\n        }" (if "if") (parenthesized_expression "(uVar24 == 0)" (( "(") (binary_expression "uVar24 == 0" (identifier "uVar24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar18 = puVar26 + 2;\n          iVar4 = 2;\n          puVar15 = puVar16 + 2;\n          do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);\n        }" ({ "{") (expression_statement "puVar18 = puVar26 + 2;" (assignment_expression "puVar18 = puVar26 + 2" (identifier "puVar18") (= "=") (binary_expression "puVar26 + 2" (identifier "puVar26") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar15 = puVar16 + 2;" (assignment_expression "puVar15 = puVar16 + 2" (identifier "puVar15") (= "=") (binary_expression "puVar16 + 2" (identifier "puVar16") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          } while (uVar24 == 0);" (do "do") (compound_statement "{\n            if ((int)puVar10 <= iVar4) goto LAB_00036390;\n            uVar24 = *puVar18;\n            iVar4 = iVar4 + 1;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24 - 1;\n            puVar15 = puVar15 + 1;\n          }" ({ "{") (if_statement "if ((int)puVar10 <= iVar4) goto LAB_00036390;" (if "if") (parenthesized_expression "((int)puVar10 <= iVar4)" (( "(") (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (<= "<=") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_00036390;" (goto "goto") (statement_identifier "LAB_00036390") (; ";"))) (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" (identifier "uVar24") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (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 "*puVar15 = uVar24 - 1;" (assignment_expression "*puVar15 = uVar24 - 1" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (binary_expression "uVar24 - 1" (identifier "uVar24") (- "-") (number_literal "1"))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar24 == 0)" (( "(") (binary_expression "uVar24 == 0" (identifier "uVar24") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = 2;\n        }" (else "else") (compound_statement "{\n          iVar4 = 2;\n        }" ({ "{") (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" (if "if") (parenthesized_expression "((puVar26 != puVar16) && (iVar4 < (int)puVar10))" (( "(") (binary_expression "(puVar26 != puVar16) && (iVar4 < (int)puVar10)" (parenthesized_expression "(puVar26 != puVar16)" (( "(") (binary_expression "puVar26 != puVar16" (identifier "puVar26") (!= "!=") (identifier "puVar16")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < (int)puVar10)" (( "(") (binary_expression "iVar4 < (int)puVar10" (identifier "iVar4") (< "<") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")"))) () ")")) (compound_statement "{\n          puVar18 = puVar26 + iVar4;\n          puVar26 = puVar26 + (int)puVar10;\n          puVar15 = puVar16 + iVar4;\n          do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);\n        }" ({ "{") (expression_statement "puVar18 = puVar26 + iVar4;" (assignment_expression "puVar18 = puVar26 + iVar4" (identifier "puVar18") (= "=") (binary_expression "puVar26 + iVar4" (identifier "puVar26") (+ "+") (identifier "iVar4"))) (; ";")) (expression_statement "puVar26 = puVar26 + (int)puVar10;" (assignment_expression "puVar26 = puVar26 + (int)puVar10" (identifier "puVar26") (= "=") (binary_expression "puVar26 + (int)puVar10" (identifier "puVar26") (+ "+") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")))) (; ";")) (expression_statement "puVar15 = puVar16 + iVar4;" (assignment_expression "puVar15 = puVar16 + iVar4" (identifier "puVar15") (= "=") (binary_expression "puVar16 + iVar4" (identifier "puVar16") (+ "+") (identifier "iVar4"))) (; ";")) (do_statement "do {\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          } while (puVar26 != puVar18);" (do "do") (compound_statement "{\n            uVar24 = *puVar18;\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar24;\n            puVar15 = puVar15 + 1;\n          }" ({ "{") (expression_statement "uVar24 = *puVar18;" (assignment_expression "uVar24 = *puVar18" (identifier "uVar24") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "uVar24")) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar26 != puVar18)" (( "(") (binary_expression "puVar26 != puVar18" (identifier "puVar26") (!= "!=") (identifier "puVar18")) () ")")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00036390:\n      puVar15 = puVar10;" (statement_identifier "LAB_00036390") (: ":") (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" (identifier "puVar15") (= "=") (identifier "puVar10")) (; ";"))) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" (if "if") (parenthesized_expression "((int)puVar10 <= (int)puVar27)" (( "(") (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (<= "<=") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (compound_statement "{\n        puVar15 = puVar27;\n      }" ({ "{") (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" (identifier "puVar15") (= "=") (identifier "puVar27")) (; ";")) (} "}"))) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(code **)(puVar30 + -0x7a84)" (identifier "pcVar36") (= "=") (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)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;" (if "if") (parenthesized_expression "((int)((int)puVar15 + 1) <= (int)*puVar14)" (( "(") (binary_expression "(int)((int)puVar15 + 1) <= (int)*puVar14" (cast_expression "(int)((int)puVar15 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar15 + 1)" (( "(") (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "1")) () ")"))) (<= "<=") (cast_expression "(int)*puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) () ")")) (goto_statement "goto LAB_000363b0;" (goto "goto") (statement_identifier "LAB_000363b0") (; ";"))) (labeled_statement "LAB_00036778:\n      *(uint *)(puVar32 + -0x3c) = uVar2;" (statement_identifier "LAB_00036778") (: ":") (expression_statement "*(uint *)(puVar32 + -0x3c) = uVar2;" (assignment_expression "*(uint *)(puVar32 + -0x3c) = uVar2" (pointer_expression "*(uint *)(puVar32 + -0x3c)" (* "*") (cast_expression "(uint *)(puVar32 + -0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x3c)" (( "(") (binary_expression "puVar32 + -0x3c" (identifier "puVar32") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "uVar2")) (; ";"))) (expression_statement "*(uint **)(puVar32 + -0x38) = param_3;" (assignment_expression "*(uint **)(puVar32 + -0x38) = param_3" (pointer_expression "*(uint **)(puVar32 + -0x38)" (* "*") (cast_expression "(uint **)(puVar32 + -0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x34) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x34) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "(*pcVar36)(puVar14);" (call_expression "(*pcVar36)(puVar14)" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "(puVar14)" (( "(") (identifier "puVar14") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (expression_statement "puVar25 = (uint *)puVar14[2];" (assignment_expression "puVar25 = (uint *)puVar14[2]" (identifier "puVar25") (= "=") (cast_expression "(uint *)puVar14[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar14[2]" (identifier "puVar14") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar2 = *(uint *)(puVar32 + -0x3c);" (assignment_expression "uVar2 = *(uint *)(puVar32 + -0x3c)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(puVar32 + -0x3c)" (* "*") (cast_expression "(uint *)(puVar32 + -0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x3c)" (( "(") (binary_expression "puVar32 + -0x3c" (identifier "puVar32") (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (expression_statement "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);" (assignment_expression "puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8)" (identifier "puVar28") (= "=") (pointer_expression "*(uint **)(*(int *)(puVar32 + -0x38) + 8)" (* "*") (cast_expression "(uint **)(*(int *)(puVar32 + -0x38) + 8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar32 + -0x38) + 8)" (( "(") (binary_expression "*(int *)(puVar32 + -0x38) + 8" (pointer_expression "*(int *)(puVar32 + -0x38)" (* "*") (cast_expression "(int *)(puVar32 + -0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x38)" (( "(") (binary_expression "puVar32 + -0x38" (identifier "puVar32") (+ "+") (number_literal "-0x38")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar16 = *(uint **)(puVar32 + -0x34);" (assignment_expression "puVar16 = *(uint **)(puVar32 + -0x34)" (identifier "puVar16") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x34)" (* "*") (cast_expression "(uint **)(puVar32 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x34)" (( "(") (binary_expression "puVar32 + -0x34" (identifier "puVar32") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (if_statement "if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;" (if "if") (parenthesized_expression "((int)puVar27 <= (int)puVar10)" (( "(") (binary_expression "(int)puVar27 <= (int)puVar10" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (<= "<=") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")) (goto_statement "goto LAB_000367b0;" (goto "goto") (statement_identifier "LAB_000367b0") (; ";"))) (labeled_statement "LAB_000363b8:\n      puVar23 = (uint *)((int)puVar23 + (int)puVar27);" (statement_identifier "LAB_000363b8") (: ":") (expression_statement "puVar23 = (uint *)((int)puVar23 + (int)puVar27);" (assignment_expression "puVar23 = (uint *)((int)puVar23 + (int)puVar27)" (identifier "puVar23") (= "=") (cast_expression "(uint *)((int)puVar23 + (int)puVar27)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + (int)puVar27)" (( "(") (binary_expression "(int)puVar23 + (int)puVar27" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")))) (; ";"))) (expression_statement "pbVar6 = (byte *)((int)puVar28 + uVar2);" (assignment_expression "pbVar6 = (byte *)((int)puVar28 + uVar2)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)((int)puVar28 + uVar2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + uVar2)" (( "(") (binary_expression "(int)puVar28 + uVar2" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "uVar2")) () ")")))) (; ";")) (expression_statement "pbVar9 = (byte *)((int)puVar23 + -1);" (assignment_expression "pbVar9 = (byte *)((int)puVar23 + -1)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)((int)puVar23 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 + -1)" (( "(") (binary_expression "(int)puVar23 + -1" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "pbVar22 = (byte *)((int)puVar25 + uVar2);" (assignment_expression "pbVar22 = (byte *)((int)puVar25 + uVar2)" (identifier "pbVar22") (= "=") (cast_expression "(byte *)((int)puVar25 + uVar2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + uVar2)" (( "(") (binary_expression "(int)puVar25 + uVar2" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "uVar2")) () ")")))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)pbVar6" (* "*") (cast_expression "(undefined4 *)pbVar6" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar11 = pbVar22;" (assignment_expression "pbVar11 = pbVar22" (identifier "pbVar11") (= "=") (identifier "pbVar22")) (; ";")) (if_statement "if (pbVar9 != (byte *)0x0) {\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" (if "if") (parenthesized_expression "(pbVar9 != (byte *)0x0)" (( "(") (binary_expression "pbVar9 != (byte *)0x0" (identifier "pbVar9") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);\n        puVar23 = (uint *)((int)puVar23 * 4 + -4);\n        pbVar22 = pbVar22 + (int)puVar23;\n      }" ({ "{") (do_statement "do {\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        } while (pbVar9 != (byte *)0x0);" (do "do") (compound_statement "{\n          pbVar6 = pbVar6 + 4;\n          *(undefined4 *)pbVar11 = uVar17;\n          pbVar9 = pbVar9 + -1;\n          uVar17 = *(undefined4 *)pbVar6;\n          pbVar11 = pbVar11 + 4;\n        }" ({ "{") (expression_statement "pbVar6 = pbVar6 + 4;" (assignment_expression "pbVar6 = pbVar6 + 4" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 4" (identifier "pbVar6") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)pbVar11 = uVar17;" (assignment_expression "*(undefined4 *)pbVar11 = uVar17" (pointer_expression "*(undefined4 *)pbVar11" (* "*") (cast_expression "(undefined4 *)pbVar11" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar11"))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "pbVar9 = pbVar9 + -1;" (assignment_expression "pbVar9 = pbVar9 + -1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + -1" (identifier "pbVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar17 = *(undefined4 *)pbVar6;" (assignment_expression "uVar17 = *(undefined4 *)pbVar6" (identifier "uVar17") (= "=") (pointer_expression "*(undefined4 *)pbVar6" (* "*") (cast_expression "(undefined4 *)pbVar6" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 4;" (assignment_expression "pbVar11 = pbVar11 + 4" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 4" (identifier "pbVar11") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar9 != (byte *)0x0)" (( "(") (binary_expression "pbVar9 != (byte *)0x0" (identifier "pbVar9") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar23 = (uint *)((int)puVar23 * 4 + -4);" (assignment_expression "puVar23 = (uint *)((int)puVar23 * 4 + -4)" (identifier "puVar23") (= "=") (cast_expression "(uint *)((int)puVar23 * 4 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar23 * 4 + -4)" (( "(") (binary_expression "(int)puVar23 * 4 + -4" (binary_expression "(int)puVar23 * 4" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (* "*") (number_literal "4")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "pbVar22 = pbVar22 + (int)puVar23;" (assignment_expression "pbVar22 = pbVar22 + (int)puVar23" (identifier "pbVar22") (= "=") (binary_expression "pbVar22 + (int)puVar23" (identifier "pbVar22") (+ "+") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")))) (; ";")) (} "}"))) (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" (identifier "uVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)pbVar22 = uVar17;" (assignment_expression "*(undefined4 *)pbVar22 = uVar17" (pointer_expression "*(undefined4 *)pbVar22" (* "*") (cast_expression "(undefined4 *)pbVar22" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar22"))) (= "=") (identifier "uVar17")) (; ";")) (do_statement "do {\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      } while (uVar2 != uVar24);" (do "do") (compound_statement "{\n        puVar10 = (uint *)((int)puVar28 + uVar24);\n        puVar18 = (uint *)((int)puVar16 + uVar24);\n        puVar15 = (uint *)((int)puVar25 + uVar24);\n        uVar24 = uVar24 + 4;\n        *puVar15 = *puVar10 ^ *puVar18;\n      }" ({ "{") (expression_statement "puVar10 = (uint *)((int)puVar28 + uVar24);" (assignment_expression "puVar10 = (uint *)((int)puVar28 + uVar24)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar28 + uVar24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + uVar24)" (( "(") (binary_expression "(int)puVar28 + uVar24" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "uVar24")) () ")")))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar16 + uVar24);" (assignment_expression "puVar18 = (uint *)((int)puVar16 + uVar24)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar16 + uVar24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + uVar24)" (( "(") (binary_expression "(int)puVar16 + uVar24" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (identifier "uVar24")) () ")")))) (; ";")) (expression_statement "puVar15 = (uint *)((int)puVar25 + uVar24);" (assignment_expression "puVar15 = (uint *)((int)puVar25 + uVar24)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar25 + uVar24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + uVar24)" (( "(") (binary_expression "(int)puVar25 + uVar24" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "uVar24")) () ")")))) (; ";")) (expression_statement "uVar24 = uVar24 + 4;" (assignment_expression "uVar24 = uVar24 + 4" (identifier "uVar24") (= "=") (binary_expression "uVar24 + 4" (identifier "uVar24") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar15 = *puVar10 ^ *puVar18;" (assignment_expression "*puVar15 = *puVar10 ^ *puVar18" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (binary_expression "*puVar10 ^ *puVar18" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (^ "^") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != uVar24)" (( "(") (binary_expression "uVar2 != uVar24" (identifier "uVar2") (!= "!=") (identifier "uVar24")) () ")")) (; ";")) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" (identifier "uVar2") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar27;" (assignment_expression "puVar10 = puVar27" (identifier "puVar10") (= "=") (identifier "puVar27")) (; ";")) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" (if "if") (parenthesized_expression "(uVar2 + 1 != 0)" (( "(") (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036840;" (goto "goto") (statement_identifier "LAB_00036840") (; ";"))) (labeled_statement "LAB_00036438:\n      uVar2 = puVar25[1];" (statement_identifier "LAB_00036438") (: ":") (expression_statement "uVar2 = puVar25[1];" (assignment_expression "uVar2 = puVar25[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]"))) (; ";"))) (expression_statement "puVar25[1] = uVar2 + 1;" (assignment_expression "puVar25[1] = uVar2 + 1" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar27 = puVar10;" (assignment_expression "puVar27 = puVar10" (identifier "puVar27") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if (uVar2 + 1 != 0) goto LAB_00036840;" (if "if") (parenthesized_expression "(uVar2 + 1 != 0)" (( "(") (binary_expression "uVar2 + 1 != 0" (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00036840;" (goto "goto") (statement_identifier "LAB_00036840") (; ";"))) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" (identifier "iVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar16 = puVar25 + 2;" (assignment_expression "puVar16 = puVar25 + 2" (identifier "puVar16") (= "=") (binary_expression "puVar25 + 2" (identifier "puVar25") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      } while (uVar2 + 1 == 0);" (do "do") (compound_statement "{\n        puVar15 = puVar10;\n        if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }\n        uVar2 = *puVar16;\n        iVar4 = iVar4 + 1;\n        *puVar16 = uVar2 + 1;\n        puVar16 = puVar16 + 1;\n      }" ({ "{") (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" (identifier "puVar15") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if ((int)puVar10 <= iVar4) {\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" (if "if") (parenthesized_expression "((int)puVar10 <= iVar4)" (( "(") (binary_expression "(int)puVar10 <= iVar4" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (<= "<=") (identifier "iVar4")) () ")")) (compound_statement "{\n          puVar18 = (uint *)0x1;\n          unaff_s0 = (uint *)((int)puVar10 + 1);\n          goto LAB_00036844;\n        }" ({ "{") (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((int)puVar10 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (goto_statement "goto LAB_00036844;" (goto "goto") (statement_identifier "LAB_00036844") (; ";")) (} "}"))) (expression_statement "uVar2 = *puVar16;" (assignment_expression "uVar2 = *puVar16" (identifier "uVar2") (= "=") (pointer_expression "*puVar16" (* "*") (identifier "puVar16"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar16 = uVar2 + 1;" (assignment_expression "*puVar16 = uVar2 + 1" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + 1;" (assignment_expression "puVar16 = puVar16 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 + 1 == 0)" (( "(") (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" (identifier "unaff_s0") (= "=") (identifier "puVar10")) (; ";")) (} "}")) (else_clause "else {\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" (else "else") (compound_statement "{\n      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;\n      puVar26 = puVar26 + 1;\n      iVar4 = 1;\n      puVar15 = puVar16;\n      do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);\n      puVar15 = puVar10;\n      if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }\n      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }\nLAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;\nLAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }\n      uVar2 = *puVar25;\n      *puVar25 = uVar2 + 1;\n      if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }\nLAB_00036840:\n      puVar18 = (uint *)0x0;\n      unaff_s0 = puVar10;\n      puVar15 = puVar27;\n    }" ({ "{") (if_statement "if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;" (if "if") (parenthesized_expression "((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff))" (( "(") (binary_expression "(puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)" (parenthesized_expression "(puVar26 == puVar16)" (( "(") (binary_expression "puVar26 == puVar16" (identifier "puVar26") (== "==") (identifier "puVar16")) () ")")) (|| "||") (parenthesized_expression "(puVar23 == (uint *)0xffffffff)" (( "(") (binary_expression "puVar23 == (uint *)0xffffffff" (identifier "puVar23") (== "==") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")"))) () ")")) (goto_statement "goto LAB_00036390;" (goto "goto") (statement_identifier "LAB_00036390") (; ";"))) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" (identifier "puVar15") (= "=") (identifier "puVar16")) (; ";")) (do_statement "do {\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      } while (iVar4 < (int)puVar10);" (do "do") (compound_statement "{\n        puVar15 = puVar15 + 1;\n        uVar24 = *puVar26;\n        iVar4 = iVar4 + 1;\n        puVar26 = puVar26 + 1;\n        *puVar15 = uVar24;\n      }" ({ "{") (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar24 = *puVar26;" (assignment_expression "uVar24 = *puVar26" (identifier "uVar24") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar26 = puVar26 + 1;" (assignment_expression "puVar26 = puVar26 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar15 = uVar24;" (assignment_expression "*puVar15 = uVar24" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "uVar24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < (int)puVar10)" (( "(") (binary_expression "iVar4 < (int)puVar10" (identifier "iVar4") (< "<") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) () ")")) (; ";")) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" (identifier "puVar15") (= "=") (identifier "puVar10")) (; ";")) (if_statement "if ((int)puVar10 <= (int)puVar27) {\n        puVar15 = puVar27;\n      }" (if "if") (parenthesized_expression "((int)puVar10 <= (int)puVar27)" (( "(") (binary_expression "(int)puVar10 <= (int)puVar27" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (<= "<=") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (compound_statement "{\n        puVar15 = puVar27;\n      }" ({ "{") (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" (identifier "puVar15") (= "=") (identifier "puVar27")) (; ";")) (} "}"))) (if_statement "if ((int)*puVar14 < (int)((int)puVar15 + 1)) {\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" (if "if") (parenthesized_expression "((int)*puVar14 < (int)((int)puVar15 + 1))" (( "(") (binary_expression "(int)*puVar14 < (int)((int)puVar15 + 1)" (cast_expression "(int)*puVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (< "<") (cast_expression "(int)((int)puVar15 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar15 + 1)" (( "(") (binary_expression "(int)puVar15 + 1" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (+ "+") (number_literal "1")) () ")")))) () ")")) (compound_statement "{\n        pcVar36 = *(code **)(puVar30 + -0x7a84);\n        goto LAB_00036778;\n      }" ({ "{") (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7a84);" (assignment_expression "pcVar36 = *(code **)(puVar30 + -0x7a84)" (identifier "pcVar36") (= "=") (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")) () ")"))))) (; ";")) (goto_statement "goto LAB_00036778;" (goto "goto") (statement_identifier "LAB_00036778") (; ";")) (} "}"))) (labeled_statement "LAB_000363b0:\n      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" (statement_identifier "LAB_000363b0") (: ":") (if_statement "if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;" (if "if") (parenthesized_expression "((int)puVar10 < (int)puVar27)" (( "(") (binary_expression "(int)puVar10 < (int)puVar27" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (< "<") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")")) (goto_statement "goto LAB_000363b8;" (goto "goto") (statement_identifier "LAB_000363b8") (; ";")))) (labeled_statement "LAB_000367b0:\n      if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" (statement_identifier "LAB_000367b0") (: ":") (if_statement "if (puVar27 == puVar10) {\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }\n      else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" (if "if") (parenthesized_expression "(puVar27 == puVar10)" (( "(") (binary_expression "puVar27 == puVar10" (identifier "puVar27") (== "==") (identifier "puVar10")) () ")")) (compound_statement "{\n        iVar4 = (int)puVar10 << 2;\nLAB_00036804:\n        iVar21 = 0;\n        do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);\n      }" ({ "{") (expression_statement "iVar4 = (int)puVar10 << 2;" (assignment_expression "iVar4 = (int)puVar10 << 2" (identifier "iVar4") (= "=") (binary_expression "(int)puVar10 << 2" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (<< "<<") (number_literal "2"))) (; ";")) (labeled_statement "LAB_00036804:\n        iVar21 = 0;" (statement_identifier "LAB_00036804") (: ":") (expression_statement "iVar21 = 0;" (assignment_expression "iVar21 = 0" (identifier "iVar21") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        } while (iVar4 != iVar21);" (do "do") (compound_statement "{\n          puVar15 = (uint *)((int)puVar28 + iVar21);\n          puVar19 = (uint *)((int)puVar16 + iVar21);\n          puVar18 = (uint *)((int)puVar25 + iVar21);\n          iVar21 = iVar21 + 4;\n          *puVar18 = *puVar15 ^ *puVar19;\n        }" ({ "{") (expression_statement "puVar15 = (uint *)((int)puVar28 + iVar21);" (assignment_expression "puVar15 = (uint *)((int)puVar28 + iVar21)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar28 + iVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar28 + iVar21)" (( "(") (binary_expression "(int)puVar28 + iVar21" (cast_expression "(int)puVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar28")) (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "puVar19 = (uint *)((int)puVar16 + iVar21);" (assignment_expression "puVar19 = (uint *)((int)puVar16 + iVar21)" (identifier "puVar19") (= "=") (cast_expression "(uint *)((int)puVar16 + iVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + iVar21)" (( "(") (binary_expression "(int)puVar16 + iVar21" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "puVar18 = (uint *)((int)puVar25 + iVar21);" (assignment_expression "puVar18 = (uint *)((int)puVar25 + iVar21)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar25 + iVar21)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar25 + iVar21)" (( "(") (binary_expression "(int)puVar25 + iVar21" (cast_expression "(int)puVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar25")) (+ "+") (identifier "iVar21")) () ")")))) (; ";")) (expression_statement "iVar21 = iVar21 + 4;" (assignment_expression "iVar21 = iVar21 + 4" (identifier "iVar21") (= "=") (binary_expression "iVar21 + 4" (identifier "iVar21") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*puVar18 = *puVar15 ^ *puVar19;" (assignment_expression "*puVar18 = *puVar15 ^ *puVar19" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (binary_expression "*puVar15 ^ *puVar19" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (^ "^") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != iVar21)" (( "(") (binary_expression "iVar4 != iVar21" (identifier "iVar4") (!= "!=") (identifier "iVar21")) () ")")) (; ";")) (} "}")) (else_clause "else {\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" (else "else") (compound_statement "{\n        iVar4 = (int)puVar27 * 4;\n        puVar18 = puVar16 + (int)puVar27;\n        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));\n        puVar19 = puVar25 + (int)puVar27;\n        uVar2 = *puVar18;\n        puVar15 = puVar19;\n        if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }\n        *puVar19 = uVar2;\n        if (puVar27 != (uint *)0x0) goto LAB_00036804;\n      }" ({ "{") (expression_statement "iVar4 = (int)puVar27 * 4;" (assignment_expression "iVar4 = (int)puVar27 * 4" (identifier "iVar4") (= "=") (binary_expression "(int)puVar27 * 4" (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar18 = puVar16 + (int)puVar27;" (assignment_expression "puVar18 = puVar16 + (int)puVar27" (identifier "puVar18") (= "=") (binary_expression "puVar16 + (int)puVar27" (identifier "puVar16") (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27))" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar10 + (-1 - (int)puVar27))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" (( "(") (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (parenthesized_expression "(-1 - (int)puVar27)" (( "(") (binary_expression "-1 - (int)puVar27" (number_literal "-1") (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar19 = puVar25 + (int)puVar27;" (assignment_expression "puVar19 = puVar25 + (int)puVar27" (identifier "puVar19") (= "=") (binary_expression "puVar25 + (int)puVar27" (identifier "puVar25") (+ "+") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27")))) (; ";")) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" (identifier "uVar2") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar15 = puVar19;" (assignment_expression "puVar15 = puVar19" (identifier "puVar15") (= "=") (identifier "puVar19")) (; ";")) (if_statement "if (pbVar11 != (byte *)0x0) {\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" (if "if") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);\n          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));\n        }" ({ "{") (do_statement "do {\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          } while (pbVar11 != (byte *)0x0);" (do "do") (compound_statement "{\n            puVar18 = puVar18 + 1;\n            *puVar15 = uVar2;\n            pbVar11 = pbVar11 + -1;\n            uVar2 = *puVar18;\n            puVar15 = puVar15 + 1;\n          }" ({ "{") (expression_statement "puVar18 = puVar18 + 1;" (assignment_expression "puVar18 = puVar18 + 1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar15 = uVar2;" (assignment_expression "*puVar15 = uVar2" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + -1" (identifier "pbVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar2 = *puVar18;" (assignment_expression "uVar2 = *puVar18" (identifier "uVar2") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "puVar15 = puVar15 + 1;" (assignment_expression "puVar15 = puVar15 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + 1" (identifier "puVar15") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 != (byte *)0x0)" (( "(") (binary_expression "pbVar11 != (byte *)0x0" (identifier "pbVar11") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));" (assignment_expression "puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" (identifier "puVar19") (= "=") (binary_expression "puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27))" (identifier "puVar19") (+ "+") (cast_expression "(int)((int)puVar10 + (-1 - (int)puVar27))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar10 + (-1 - (int)puVar27))" (( "(") (binary_expression "(int)puVar10 + (-1 - (int)puVar27)" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (parenthesized_expression "(-1 - (int)puVar27)" (( "(") (binary_expression "-1 - (int)puVar27" (number_literal "-1") (- "-") (cast_expression "(int)puVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar27"))) () ")"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "*puVar19 = uVar2;" (assignment_expression "*puVar19 = uVar2" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (puVar27 != (uint *)0x0) goto LAB_00036804;" (if "if") (parenthesized_expression "(puVar27 != (uint *)0x0)" (( "(") (binary_expression "puVar27 != (uint *)0x0" (identifier "puVar27") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00036804;" (goto "goto") (statement_identifier "LAB_00036804") (; ";"))) (} "}"))))) (expression_statement "uVar2 = *puVar25;" (assignment_expression "uVar2 = *puVar25" (identifier "uVar2") (= "=") (pointer_expression "*puVar25" (* "*") (identifier "puVar25"))) (; ";")) (expression_statement "*puVar25 = uVar2 + 1;" (assignment_expression "*puVar25 = uVar2 + 1" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 + 1 == 0) {\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" (if "if") (parenthesized_expression "(uVar2 + 1 == 0)" (( "(") (binary_expression "uVar2 + 1 == 0" (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;\n        unaff_s0 = (uint *)((int)puVar10 + 1);\n        puVar18 = (uint *)0x1;\n        puVar15 = puVar10;\n        goto LAB_00036844;\n      }" ({ "{") (if_statement "if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;" (if "if") (parenthesized_expression "(puVar23 != (uint *)0xffffffff)" (( "(") (binary_expression "puVar23 != (uint *)0xffffffff" (identifier "puVar23") (!= "!=") (cast_expression "(uint *)0xffffffff" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) () ")")) (goto_statement "goto LAB_00036438;" (goto "goto") (statement_identifier "LAB_00036438") (; ";"))) (expression_statement "unaff_s0 = (uint *)((int)puVar10 + 1);" (assignment_expression "unaff_s0 = (uint *)((int)puVar10 + 1)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((int)puVar10 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 1)" (( "(") (binary_expression "(int)puVar10 + 1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar18 = (uint *)0x1;" (assignment_expression "puVar18 = (uint *)0x1" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar15 = puVar10;" (assignment_expression "puVar15 = puVar10" (identifier "puVar15") (= "=") (identifier "puVar10")) (; ";")) (goto_statement "goto LAB_00036844;" (goto "goto") (statement_identifier "LAB_00036844") (; ";")) (} "}"))) (labeled_statement "LAB_00036840:\n      puVar18 = (uint *)0x0;" (statement_identifier "LAB_00036840") (: ":") (expression_statement "puVar18 = (uint *)0x0;" (assignment_expression "puVar18 = (uint *)0x0" (identifier "puVar18") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "unaff_s0 = puVar10;" (assignment_expression "unaff_s0 = puVar10" (identifier "unaff_s0") (= "=") (identifier "puVar10")) (; ";")) (expression_statement "puVar15 = puVar27;" (assignment_expression "puVar15 = puVar27" (identifier "puVar15") (= "=") (identifier "puVar27")) (; ";")) (} "}")))) (labeled_statement "LAB_00036844:\n    puVar25[(int)puVar10] = (uint)puVar18;" (statement_identifier "LAB_00036844") (: ":") (expression_statement "puVar25[(int)puVar10] = (uint)puVar18;" (assignment_expression "puVar25[(int)puVar10] = (uint)puVar18" (subscript_expression "puVar25[(int)puVar10]" (identifier "puVar25") ([ "[") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (] "]")) (= "=") (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18"))) (; ";"))) (expression_statement "uVar2 = (puVar25 + (int)unaff_s0)[-1];" (assignment_expression "uVar2 = (puVar25 + (int)unaff_s0)[-1]" (identifier "uVar2") (= "=") (subscript_expression "(puVar25 + (int)unaff_s0)[-1]" (parenthesized_expression "(puVar25 + (int)unaff_s0)" (( "(") (binary_expression "puVar25 + (int)unaff_s0" (identifier "puVar25") (+ "+") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0"))) () ")")) ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "puVar16 = puVar25 + (int)unaff_s0;" (assignment_expression "puVar16 = puVar25 + (int)unaff_s0" (identifier "puVar16") (= "=") (binary_expression "puVar25 + (int)unaff_s0" (identifier "puVar25") (+ "+") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")))) (; ";")) (while_statement "while (uVar2 == 0) {\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" (while "while") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s0 = (uint *)((int)unaff_s0 + -1);\n      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;\n      uVar2 = puVar16[-2];\n      puVar16 = puVar16 + -1;\n    }" ({ "{") (expression_statement "unaff_s0 = (uint *)((int)unaff_s0 + -1);" (assignment_expression "unaff_s0 = (uint *)((int)unaff_s0 + -1)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)((int)unaff_s0 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s0 + -1)" (( "(") (binary_expression "(int)unaff_s0 + -1" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;" (if "if") (parenthesized_expression "(unaff_s0 == (uint *)0x0)" (( "(") (binary_expression "unaff_s0 == (uint *)0x0" (identifier "unaff_s0") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000366d4;" (goto "goto") (statement_identifier "LAB_000366d4") (; ";"))) (expression_statement "uVar2 = puVar16[-2];" (assignment_expression "uVar2 = puVar16[-2]" (identifier "uVar2") (= "=") (subscript_expression "puVar16[-2]" (identifier "puVar16") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "puVar16 = puVar16 + -1;" (assignment_expression "puVar16 = puVar16 + -1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + -1" (identifier "puVar16") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "unaff_s0 = (uint *)-(int)unaff_s0;" (assignment_expression "unaff_s0 = (uint *)-(int)unaff_s0" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)-(int)unaff_s0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)unaff_s0" (- "-") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0"))))) (; ";")) (} "}")))) (labeled_statement "LAB_000366d4:\n  puVar10 = *(uint **)(puVar32 + -0x30);" (statement_identifier "LAB_000366d4") (: ":") (expression_statement "puVar10 = *(uint **)(puVar32 + -0x30);" (assignment_expression "puVar10 = *(uint **)(puVar32 + -0x30)" (identifier "puVar10") (= "=") (pointer_expression "*(uint **)(puVar32 + -0x30)" (* "*") (cast_expression "(uint **)(puVar32 + -0x30)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x30)" (( "(") (binary_expression "puVar32 + -0x30" (identifier "puVar32") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";"))) (expression_statement "puVar14[1] = (uint)unaff_s0;" (assignment_expression "puVar14[1] = (uint)unaff_s0" (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)unaff_s0" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "unaff_s0"))) (; ";")) (expression_statement "puVar27 = puVar23;" (assignment_expression "puVar27 = puVar23" (identifier "puVar27") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "puVar35 = puVar34;" (assignment_expression "puVar35 = puVar34" (identifier "puVar35") (= "=") (identifier "puVar34")) (; ";")) (if_statement "if (puVar10 != (uint *)0x0) {\n    (**(code **)(puVar30 + -0x7a2c))();\n    puVar30 = *(undefined **)(puVar32 + -0x48);\n  }" (if "if") (parenthesized_expression "(puVar10 != (uint *)0x0)" (( "(") (binary_expression "puVar10 != (uint *)0x0" (identifier "puVar10") (!= "!=") (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 **)(puVar32 + -0x48);\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 **)(puVar32 + -0x48);" (assignment_expression "puVar30 = *(undefined **)(puVar32 + -0x48)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar32 + -0x48)" (* "*") (cast_expression "(undefined **)(puVar32 + -0x48)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x48)" (( "(") (binary_expression "puVar32 + -0x48" (identifier "puVar32") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_000366e0:\n  if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" (statement_identifier "LAB_000366e0") (: ":") (if_statement "if (*(int *)(puVar32 + -0x2c) == *piVar5) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar32 + -0x2c) == *piVar5)" (( "(") (binary_expression "*(int *)(puVar32 + -0x2c) == *piVar5" (pointer_expression "*(int *)(puVar32 + -0x2c)" (* "*") (cast_expression "(int *)(puVar32 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x2c)" (( "(") (binary_expression "puVar32 + -0x2c" (identifier "puVar32") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "pcVar36 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar36 = *(code **)(puVar30 + -0x7b70)" (identifier "pcVar36") (= "=") (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 "uVar17 = 0x36bd8;" (assignment_expression "uVar17 = 0x36bd8" (identifier "uVar17") (= "=") (number_literal "0x36bd8")) (; ";")) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" (( "(") (pointer_expression "*pcVar36" (* "*") (identifier "pcVar36")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar31 = pcVar36 + 0x68460;" (assignment_expression "pcVar31 = pcVar36 + 0x68460" (identifier "pcVar31") (= "=") (binary_expression "pcVar36 + 0x68460" (identifier "pcVar36") (+ "+") (number_literal "0x68460"))) (; ";")) (expression_statement "*(uint **)(puVar35 + -0x10) = puVar25;" (assignment_expression "*(uint **)(puVar35 + -0x10) = puVar25" (pointer_expression "*(uint **)(puVar35 + -0x10)" (* "*") (cast_expression "(uint **)(puVar35 + -0x10)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x10)" (( "(") (binary_expression "puVar35 + -0x10" (identifier "puVar35") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar25")) (; ";")) (expression_statement "*(code **)(puVar35 + -0x20) = pcVar31;" (assignment_expression "*(code **)(puVar35 + -0x20) = pcVar31" (pointer_expression "*(code **)(puVar35 + -0x20)" (* "*") (cast_expression "(code **)(puVar35 + -0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x20)" (( "(") (binary_expression "puVar35 + -0x20" (identifier "puVar35") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "pcVar31")) (; ";")) (expression_statement "*(uint **)(puVar35 + -0x14) = puVar27;" (assignment_expression "*(uint **)(puVar35 + -0x14) = puVar27" (pointer_expression "*(uint **)(puVar35 + -0x14)" (* "*") (cast_expression "(uint **)(puVar35 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x14)" (( "(") (binary_expression "puVar35 + -0x14" (identifier "puVar35") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "puVar27")) (; ";")) (expression_statement "*(uint **)(puVar35 + -0x18) = unaff_s0;" (assignment_expression "*(uint **)(puVar35 + -0x18) = unaff_s0" (pointer_expression "*(uint **)(puVar35 + -0x18)" (* "*") (cast_expression "(uint **)(puVar35 + -0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x18)" (( "(") (binary_expression "puVar35 + -0x18" (identifier "puVar35") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -4) = uVar17;" (assignment_expression "*(undefined4 *)(puVar35 + -4) = uVar17" (pointer_expression "*(undefined4 *)(puVar35 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -4)" (( "(") (binary_expression "puVar35 + -4" (identifier "puVar35") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "*(uint **)(puVar35 + -8) = puVar15;" (assignment_expression "*(uint **)(puVar35 + -8) = puVar15" (pointer_expression "*(uint **)(puVar35 + -8)" (* "*") (cast_expression "(uint **)(puVar35 + -8)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -8)" (( "(") (binary_expression "puVar35 + -8" (identifier "puVar35") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "*(uint **)(puVar35 + -0xc) = puVar26;" (assignment_expression "*(uint **)(puVar35 + -0xc) = puVar26" (pointer_expression "*(uint **)(puVar35 + -0xc)" (* "*") (cast_expression "(uint **)(puVar35 + -0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc)" (( "(") (binary_expression "puVar35 + -0xc" (identifier "puVar35") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar26")) (; ";")) (expression_statement "uVar24 = puVar18[1];" (assignment_expression "uVar24 = puVar18[1]" (identifier "uVar24") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = uVar24;" (assignment_expression "uVar2 = uVar24" (identifier "uVar2") (= "=") (identifier "uVar24")) (; ";")) (if_statement "if ((int)uVar24 < 0) {\n    uVar2 = -uVar24;\n  }" (if "if") (parenthesized_expression "((int)uVar24 < 0)" (( "(") (binary_expression "(int)uVar24 < 0" (cast_expression "(int)uVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar24")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = -uVar24;\n  }" ({ "{") (expression_statement "uVar2 = -uVar24;" (assignment_expression "uVar2 = -uVar24" (identifier "uVar2") (= "=") (unary_expression "-uVar24" (- "-") (identifier "uVar24"))) (; ";")) (} "}"))) (if_statement "if (puVar18 != puVar10) {\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" (if "if") (parenthesized_expression "(puVar18 != puVar10)" (( "(") (binary_expression "puVar18 != puVar10" (identifier "puVar18") (!= "!=") (identifier "puVar10")) () ")")) (compound_statement "{\n    uVar3 = puVar18[4];\n    if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }\n    if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n    if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }\n    puVar10[4] = uVar3;\n    if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }\n  }" ({ "{") (expression_statement "uVar3 = puVar18[4];" (assignment_expression "uVar3 = puVar18[4]" (identifier "uVar3") (= "=") (subscript_expression "puVar18[4]" (identifier "puVar18") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((int)*puVar10 < (int)uVar2) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" (if "if") (parenthesized_expression "((int)*puVar10 < (int)uVar2)" (( "(") (binary_expression "(int)*puVar10 < (int)uVar2" (cast_expression "(int)*puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (< "<") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);\n      pcVar31 = *(code **)(puVar35 + -0x20);\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2)" (parenthesized_expression "(**(code **)(pcVar36 + 0x609dc))" (( "(") (pointer_expression "**(code **)(pcVar36 + 0x609dc)" (* "*") (pointer_expression "*(code **)(pcVar36 + 0x609dc)" (* "*") (cast_expression "(code **)(pcVar36 + 0x609dc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar36 + 0x609dc)" (( "(") (binary_expression "pcVar36 + 0x609dc" (identifier "pcVar36") (+ "+") (number_literal "0x609dc")) () ")"))))) () ")")) (argument_list "(puVar10,uVar2)" (( "(") (identifier "puVar10") (, ",") (identifier "uVar2") () ")"))))) (; ";")) (expression_statement "pcVar31 = *(code **)(puVar35 + -0x20);" (assignment_expression "pcVar31 = *(code **)(puVar35 + -0x20)" (identifier "pcVar31") (= "=") (pointer_expression "*(code **)(puVar35 + -0x20)" (* "*") (cast_expression "(code **)(puVar35 + -0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x20)" (( "(") (binary_expression "puVar35 + -0x20" (identifier "puVar35") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[2];\n    }" (else "else") (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[2];\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)puVar10[2];" (assignment_expression "puVar8 = (undefined4 *)puVar10[2]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar10[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (uVar24 != 0) {\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" (if "if") (parenthesized_expression "(uVar24 != 0)" (( "(") (binary_expression "uVar24 != 0" (identifier "uVar24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[2];\n      iVar4 = uVar2 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }\n      *puVar8 = uVar17;\n    }" ({ "{") (expression_statement "puVar13 = (undefined4 *)puVar18[2];" (assignment_expression "puVar13 = (undefined4 *)puVar18[2]" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)puVar18[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar18[2]" (identifier "puVar18") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar4 = uVar2 - 1;" (assignment_expression "iVar4 = uVar2 - 1" (identifier "iVar4") (= "=") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" (identifier "uVar17") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" (identifier "puVar20") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar2 - 1);\n      }" ({ "{") (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" (do "do") (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" ({ "{") (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" (identifier "uVar17") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar8 = puVar8 + (uVar2 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar2 - 1)" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uVar2 - 1)" (identifier "puVar8") (+ "+") (parenthesized_expression "(uVar2 - 1)" (( "(") (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (if_statement "if ((int)puVar10[3] < (int)uVar3) {\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }\n    else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" (if "if") (parenthesized_expression "((int)puVar10[3] < (int)uVar3)" (( "(") (binary_expression "(int)puVar10[3] < (int)uVar3" (cast_expression "(int)puVar10[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (number_literal "3") (] "]"))) (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) () ")")) (compound_statement "{\n      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);" (assignment_expression "puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3)" (parenthesized_expression "(**(code **)(pcVar31 + -0x7a84))" (( "(") (pointer_expression "**(code **)(pcVar31 + -0x7a84)" (* "*") (pointer_expression "*(code **)(pcVar31 + -0x7a84)" (* "*") (cast_expression "(code **)(pcVar31 + -0x7a84)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar31 + -0x7a84)" (( "(") (binary_expression "pcVar31 + -0x7a84" (identifier "pcVar31") (+ "+") (number_literal "-0x7a84")) () ")"))))) () ")")) (argument_list "(puVar10 + 3,uVar3)" (( "(") (binary_expression "puVar10 + 3" (identifier "puVar10") (+ "+") (number_literal "3")) (, ",") (identifier "uVar3") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      puVar8 = (undefined4 *)puVar10[5];\n    }" (else "else") (compound_statement "{\n      puVar8 = (undefined4 *)puVar10[5];\n    }" ({ "{") (expression_statement "puVar8 = (undefined4 *)puVar10[5];" (assignment_expression "puVar8 = (undefined4 *)puVar10[5]" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)puVar10[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[5]" (identifier "puVar10") ([ "[") (number_literal "5") (] "]")))) (; ";")) (} "}")))) (expression_statement "puVar10[4] = uVar3;" (assignment_expression "puVar10[4] = uVar3" (subscript_expression "puVar10[4]" (identifier "puVar10") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (if_statement "if (uVar3 != 0) {\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar13 = (undefined4 *)puVar18[5];\n      iVar4 = uVar3 - 1;\n      uVar17 = *puVar13;\n      puVar20 = puVar8;\n      if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }\n      *puVar8 = uVar17;\n    }" ({ "{") (expression_statement "puVar13 = (undefined4 *)puVar18[5];" (assignment_expression "puVar13 = (undefined4 *)puVar18[5]" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)puVar18[5]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar18[5]" (identifier "puVar18") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "iVar4 = uVar3 - 1;" (assignment_expression "iVar4 = uVar3 - 1" (identifier "iVar4") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" (identifier "uVar17") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar20 = puVar8;" (assignment_expression "puVar20 = puVar8" (identifier "puVar20") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (iVar4 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);\n        puVar8 = puVar8 + (uVar3 - 1);\n      }" ({ "{") (do_statement "do {\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        } while (iVar4 != 0);" (do "do") (compound_statement "{\n          puVar13 = puVar13 + 1;\n          *puVar20 = uVar17;\n          iVar4 = iVar4 + -1;\n          uVar17 = *puVar13;\n          puVar20 = puVar20 + 1;\n        }" ({ "{") (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar20 = uVar17;" (assignment_expression "*puVar20 = uVar17" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar17 = *puVar13;" (assignment_expression "uVar17 = *puVar13" (identifier "uVar17") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar8 = puVar8 + (uVar3 - 1);" (assignment_expression "puVar8 = puVar8 + (uVar3 - 1)" (identifier "puVar8") (= "=") (binary_expression "puVar8 + (uVar3 - 1)" (identifier "puVar8") (+ "+") (parenthesized_expression "(uVar3 - 1)" (( "(") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar8 = uVar17;" (assignment_expression "*puVar8 = uVar17" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar10[1] = uVar2;" (assignment_expression "puVar10[1] = uVar2" (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) alternative: (else_clause (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: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (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: (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))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))))) (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: (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: (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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 (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_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: (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: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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)))) (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)))))) (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))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (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: (type_identifier) 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 (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) 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: (pointer_expression argument: (identifier))))))) (labeled_statement label: (statement_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: (type_identifier) 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: (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)))) (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: (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (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))))))))) alternative: (else_clause (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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 (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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: (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: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (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 (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (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 (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (type_identifier) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (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: (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: (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: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (type_identifier) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (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)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (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: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (type_identifier) 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 (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (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: (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (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: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) 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 (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (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)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (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: (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: (identifier)))) 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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_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) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (pointer_expression argument: (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 (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (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: (type_identifier) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))) (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) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (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: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (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)) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))

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

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  byte *pbVar6;
  uint *puVar7;
  undefined4 *puVar8;
  byte *pbVar9;
  uint *puVar10;
  byte *pbVar11;
  uint *puVar12;
  undefined4 *puVar13;
  uint *puVar14;
  uint *puVar15;
  uint *puVar16;
  undefined4 uVar17;
  uint *puVar18;
  uint *puVar19;
  undefined4 *puVar20;
  int iVar21;
  byte *pbVar22;
  uint *unaff_s0;
  uint *puVar23;
  undefined4 *unaff_s2;
  uint uVar24;
  uint *puVar25;
  uint *unaff_s3;
  uint *puVar26;
  uint *puVar27;
  int unaff_s5;
  uint *puVar28;
  uint unaff_s6;
  int unaff_s7;
  undefined *puVar29;
  undefined *puVar30;
  code *pcVar31;
  undefined1 *puVar32;
  undefined1 *puVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  code *pcVar36;
  undefined1 auStack_60 [16];
  uint *local_3c;
  uint local_34;
  uint *local_30;
  int local_2c;
  
  puVar29 = PTR___stack_chk_guard_00097540;
  puVar32 = auStack_60;
  puVar33 = auStack_60;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  uVar2 = param_3[1];
  if ((int)uVar2 < 0) {
    local_34 = -uVar2;
    if (uVar2 == 0) goto LAB_000361ac;
LAB_00035f20:
    uVar24 = local_34 * 4;
    local_3c = (uint *)param_3[2];
    unaff_s2 = (undefined4 *)(uVar24 - 4);
    puVar16 = local_3c + (local_34 - 1);
    uVar2 = *puVar16;
    if ((uVar2 - 1 & uVar2) == 0) {
      if (local_3c < puVar16) {
        uVar3 = *local_3c;
        puVar14 = local_3c;
        while (uVar3 == 0) {
          puVar14 = puVar14 + 1;
          if (puVar16 <= puVar14) goto LAB_00035f84;
          uVar3 = *puVar14;
        }
        goto LAB_00036124;
      }
LAB_00035f84:
      puVar16 = (uint *)0x1;
      if (0xffff < uVar2) goto LAB_00035f90;
LAB_00036130:
      iVar4 = 0x20;
      if (0xff < uVar2) {
        iVar4 = 0x18;
      }
      iVar21 = 9;
      if (0xff >= uVar2) {
        iVar21 = 1;
      }
      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));
      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);
    }
    else {
LAB_00036124:
      puVar16 = (uint *)0x0;
      if (uVar2 < 0x10000) goto LAB_00036130;
LAB_00035f90:
      iVar4 = 0x10;
      if (0xffffff < uVar2) {
        iVar4 = 8;
      }
      iVar21 = 0x19;
      if (0xffffff >= uVar2) {
        iVar21 = 0x11;
      }
      puVar14 = (uint *)(PTR___gmpn_clz_tab_0009718c + (uVar2 >> iVar21));
      unaff_s0 = (uint *)((local_34 * 0x20 - (iVar4 - (uint)*(byte *)puVar14)) - (int)puVar16);
    }
    if (unaff_s0 != (uint *)0x0) {
      local_30 = (uint *)0x0;
      unaff_s6 = uVar24;
      puVar32 = auStack_60;
      if (param_3 == param_1) goto LAB_000361b8;
      goto LAB_00035fe8;
    }
    param_1[1] = 0;
  }
  else {
    local_34 = uVar2;
    if (uVar2 != 0) goto LAB_00035f20;
LAB_000361ac:
    (*(code *)PTR___gmp_divide_by_zero_000975dc)();
LAB_000361b8:
    if (unaff_s6 < 0x7f01) {
      iVar4 = -((int)unaff_s2 + 0xbU & 0xfffffff8);
      puVar33 = auStack_60 + iVar4;
      puVar16 = (uint *)(&stack0xffffffb0 + iVar4);
    }
    else {
      puVar16 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,unaff_s6);
    }
    iVar4 = local_34 - 1;
    uVar2 = *local_3c;
    puVar14 = puVar16;
    puVar32 = puVar33;
    if (iVar4 == 0) {
      *puVar16 = uVar2;
      local_3c = puVar16;
    }
    else {
      do {
        local_3c = local_3c + 1;
        *puVar14 = uVar2;
        iVar4 = iVar4 + -1;
        uVar2 = *local_3c;
        puVar14 = puVar14 + 1;
      } while (iVar4 != 0);
      *(uint *)((int)puVar16 + (int)unaff_s2) = uVar2;
      local_3c = puVar16;
    }
LAB_00035fe8:
    if ((int)*param_1 < (int)local_34) {
      unaff_s3 = (uint *)(*(code *)PTR___gmpz_realloc_000975bc)(param_1,local_34);
    }
    else {
      unaff_s3 = (uint *)param_1[2];
    }
    piVar5 = (int *)((int)unaff_s3 + (int)unaff_s2);
    unaff_s7 = (int)unaff_s3 + unaff_s6;
    unaff_s2 = (undefined4 *)((int)local_3c + unaff_s6);
    *piVar5 = 0;
    unaff_s6 = 0xffffffff;
    iVar4 = 0x50;
    do {
      unaff_s5 = iVar4;
      (**(code **)(*(int *)(param_2 + 0x10) + 4))(param_2,unaff_s3,unaff_s0);
      uVar2 = local_34;
      iVar4 = unaff_s7;
      puVar8 = unaff_s2;
      do {
        uVar2 = uVar2 - 1;
        puVar8 = puVar8 + -1;
        if (uVar2 == 0xffffffff) goto joined_r0x00036070;
        puVar20 = (undefined4 *)(iVar4 + -4);
        param_3 = (uint *)*puVar8;
        iVar4 = iVar4 + -4;
      } while ((uint *)*puVar20 == param_3);
      puVar16 = (uint *)(uint)(param_3 < (uint *)*puVar20);
      if (puVar16 == (uint *)0x0) goto LAB_00036094;
joined_r0x00036070:
      iVar4 = unaff_s5 + -1;
    } while (unaff_s5 + -1 != 0);
    unaff_s5 = unaff_s5 + -1;
    puVar16 = unaff_s3;
    (*(code *)PTR___gmpn_sub_n_00097514)(unaff_s3,unaff_s3,local_3c,local_34);
    param_3 = local_3c;
LAB_00036094:
    iVar4 = *piVar5;
    uVar2 = local_34;
    while ((iVar4 == 0 && (uVar2 = uVar2 - 1, uVar2 != 0))) {
      iVar4 = *(int *)(unaff_s7 + -8);
      unaff_s7 = unaff_s7 + -4;
    }
    param_1[1] = uVar2;
    puVar14 = local_30;
    if (local_30 != (uint *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (local_2c == *(int *)puVar29) {
    return;
  }
  pcVar36 = __gmpz_xor;
  puVar29 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar29 + 0x68dd0;
  puVar34 = puVar32 + -0x58;
  puVar35 = puVar32 + -0x58;
  *(uint *)(puVar32 + -0x10) = unaff_s6;
  *(uint *)(puVar32 + -0x24) = local_34;
  piVar5 = *(int **)(puVar29 + 0x612d0);
  puVar23 = (uint *)puVar16[1];
  *(undefined1 **)(puVar32 + -8) = auStack_60;
  *(int *)(puVar32 + -0xc) = unaff_s7;
  *(int *)(puVar32 + -0x14) = unaff_s5;
  *(int *)(puVar32 + -0x18) = param_2;
  *(uint **)(puVar32 + -0x1c) = unaff_s3;
  *(undefined4 **)(puVar32 + -0x20) = unaff_s2;
  *(code **)(puVar32 + -4) = pcVar36;
  *(uint **)(puVar32 + -0x28) = unaff_s0;
  *(undefined **)(puVar32 + -0x48) = puVar30;
  *(undefined4 *)(puVar32 + -0x30) = 0;
  puVar27 = (uint *)param_3[1];
  puVar26 = (uint *)puVar16[2];
  puVar28 = (uint *)param_3[2];
  puVar25 = (uint *)puVar14[2];
  *(int *)(puVar32 + -0x2c) = *piVar5;
  puVar10 = (uint *)-(int)puVar23;
  if ((int)puVar23 < 0) {
    puVar16 = puVar23;
    puVar15 = puVar26;
    if (-1 < (int)puVar27) goto LAB_0003630c;
    puVar25 = (uint *)-(int)puVar27;
    uVar2 = ((int)puVar10 - (int)puVar27) * 4;
    if (uVar2 < 0x7f01) {
      iVar4 = -(uVar2 + 7 & 0xfffffff8);
      puVar34 = puVar32 + iVar4 + -0x58;
      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);
      puVar15 = puVar10;
      puVar18 = puVar25;
    }
    else {
      pcVar36 = *(code **)(puVar29 + 0x61080);
      *(uint **)(puVar32 + -0x38) = puVar25;
      *(uint **)(puVar32 + -0x34) = puVar10;
      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar18 = *(uint **)(puVar32 + -0x38);
      puVar15 = *(uint **)(puVar32 + -0x34);
    }
    uVar2 = *puVar26;
    puVar19 = puVar16 + (int)puVar15;
    *puVar16 = uVar2 - 1;
    if (uVar2 == 0) {
      if (puVar23 != (uint *)0xffffffff) {
        uVar2 = puVar26[1];
        puVar16[1] = uVar2 - 1;
        if (uVar2 == 0) {
          puVar12 = puVar26 + 2;
          iVar4 = 2;
          puVar7 = puVar16 + 2;
          do {
            if ((int)puVar15 <= iVar4) goto LAB_000365a4;
            uVar2 = *puVar12;
            iVar4 = iVar4 + 1;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2 - 1;
            puVar7 = puVar7 + 1;
          } while (uVar2 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar16 != puVar26) && (iVar4 < (int)puVar15)) {
          puVar12 = puVar26 + iVar4;
          puVar26 = puVar26 + (int)puVar15;
          puVar7 = puVar16 + iVar4;
          do {
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2;
            puVar7 = puVar7 + 1;
          } while (puVar12 != puVar26);
          uVar2 = *puVar28;
          goto LAB_000365a8;
        }
      }
LAB_000365a4:
      uVar2 = *puVar28;
    }
    else {
      if ((puVar16 == puVar26) || (puVar23 == (uint *)0xffffffff)) goto LAB_000365a4;
      puVar26 = puVar26 + 1;
      iVar4 = 1;
      puVar7 = puVar16;
      do {
        puVar7 = puVar7 + 1;
        uVar2 = *puVar26;
        iVar4 = iVar4 + 1;
        puVar26 = puVar26 + 1;
        *puVar7 = uVar2;
      } while (iVar4 < (int)puVar15);
      uVar2 = *puVar28;
    }
LAB_000365a8:
    *puVar19 = uVar2 - 1;
    if (uVar2 == 0) {
      if (puVar27 != (uint *)0xffffffff) {
        uVar2 = puVar28[1];
        puVar19[1] = uVar2 - 1;
        if (uVar2 == 0) {
          puVar12 = puVar28 + 2;
          iVar4 = 2;
          puVar7 = puVar19 + 2;
          do {
            bVar1 = (int)puVar18 <= iVar4;
            iVar4 = iVar4 + 1;
            if (bVar1) goto LAB_00036608;
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2 - 1;
            puVar7 = puVar7 + 1;
          } while (uVar2 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar28 != puVar19) && (iVar4 < (int)puVar18)) {
          puVar12 = puVar28 + iVar4;
          puVar7 = puVar19 + iVar4;
          do {
            uVar2 = *puVar12;
            puVar12 = puVar12 + 1;
            *puVar7 = uVar2;
            puVar7 = puVar7 + 1;
          } while (puVar28 + (int)puVar18 != puVar12);
        }
      }
    }
    else if ((puVar28 != puVar19) && (iVar4 = 1, puVar7 = puVar19, puVar27 != (uint *)0xffffffff)) {
      do {
        puVar28 = puVar28 + 1;
        iVar4 = iVar4 + 1;
        puVar7[1] = *puVar28;
        puVar7 = puVar7 + 1;
      } while (iVar4 < (int)puVar18);
    }
LAB_00036608:
    puVar28 = puVar19;
    unaff_s0 = puVar10;
    if ((int)puVar27 <= (int)puVar23) {
      puVar28 = puVar16;
      puVar16 = puVar19;
      unaff_s0 = puVar18;
      puVar25 = puVar15;
      puVar27 = puVar23;
    }
    pcVar36 = *(code **)(puVar30 + -0x7a84);
    if ((int)*puVar14 < (int)unaff_s0) {
      *(uint **)(puVar32 + -0x38) = puVar16;
      *(uint **)(puVar32 + -0x34) = puVar28;
      uVar2 = (*pcVar36)(puVar14,unaff_s0);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar28 = *(uint **)(puVar32 + -0x34);
      puVar16 = *(uint **)(puVar32 + -0x38);
    }
    else {
      uVar2 = puVar14[2];
    }
    if (unaff_s0 == puVar25) {
      puVar10 = (uint *)((int)unaff_s0 << 2);
    }
    else {
      puVar10 = (uint *)((int)puVar25 * 4);
      puVar18 = puVar16 + (int)puVar25;
      pbVar11 = (byte *)((int)unaff_s0 + (-1 - (int)puVar25));
      puVar19 = (uint *)(uVar2 + (int)puVar10);
      uVar24 = *puVar18;
      puVar15 = puVar19;
      if (pbVar11 != (byte *)0x0) {
        do {
          puVar18 = puVar18 + 1;
          *puVar15 = uVar24;
          pbVar11 = pbVar11 + -1;
          uVar24 = *puVar18;
          puVar15 = puVar15 + 1;
        } while (pbVar11 != (byte *)0x0);
        puVar19 = puVar19 + (int)((int)unaff_s0 + (-1 - (int)puVar25));
      }
      *puVar19 = uVar24;
    }
    puVar15 = (uint *)((int)((int)puVar27 + (int)puVar25) * 4);
    do {
      puVar27 = (uint *)((int)puVar28 + (int)puVar15);
      pbVar11 = (byte *)((int)puVar16 + (int)puVar15);
      puVar19 = (uint *)(uVar2 + (int)puVar15);
      puVar15 = puVar15 + 1;
      puVar18 = *(uint **)pbVar11;
      *puVar19 = *puVar27 ^ (uint)puVar18;
    } while (puVar10 != puVar15);
    iVar4 = uVar2 + (int)unaff_s0 * 4;
    do {
      if (*(int *)(iVar4 + -4) != 0) break;
      unaff_s0 = (uint *)((int)unaff_s0 + -1);
      iVar4 = iVar4 + -4;
    } while (unaff_s0 != (uint *)0x0);
  }
  else {
    if (-1 < (int)puVar27) {
      puVar18 = (uint *)(uint)((int)puVar23 < (int)puVar27);
      puVar10 = puVar14;
      puVar15 = puVar27;
      if (puVar18 == (uint *)0x0) {
        pcVar36 = *(code **)(puVar29 + 0x6134c);
        if ((int)*puVar14 < (int)puVar23) {
          *(uint **)(puVar32 + -0x34) = param_3;
          puVar18 = puVar23;
          (*pcVar36)();
          puVar30 = *(undefined **)(puVar32 + -0x48);
          puVar25 = (uint *)puVar14[2];
          puVar28 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);
        }
        if ((puVar25 != puVar26) && (puVar23 != puVar27)) {
          puVar19 = puVar26 + (int)puVar27;
          pbVar11 = (byte *)((int)puVar23 + (-1 - (int)puVar27));
          puVar7 = puVar25 + (int)puVar27;
          puVar18 = (uint *)*puVar19;
          puVar16 = puVar7;
          if (pbVar11 != (byte *)0x0) {
            do {
              puVar19 = puVar19 + 1;
              puVar10 = puVar16 + 1;
              *puVar16 = (uint)puVar18;
              pbVar11 = pbVar11 + -1;
              puVar18 = (uint *)*puVar19;
              puVar16 = puVar10;
            } while (pbVar11 != (byte *)0x0);
            puVar7 = puVar7 + (int)((int)puVar23 + (-1 - (int)puVar27));
          }
          *puVar7 = (uint)puVar18;
        }
        puVar16 = (uint *)0x0;
        if (puVar27 != (uint *)0x0) {
          puVar15 = (uint *)((int)puVar27 << 2);
          do {
            puVar27 = (uint *)((int)puVar26 + (int)puVar16);
            pbVar11 = (byte *)((int)puVar28 + (int)puVar16);
            puVar10 = (uint *)((int)puVar25 + (int)puVar16);
            puVar16 = puVar16 + 1;
            puVar18 = *(uint **)pbVar11;
            *puVar10 = *puVar27 ^ (uint)puVar18;
          } while (puVar15 != puVar16);
        }
        puVar27 = puVar23;
        if (puVar23 != (uint *)0x0) goto LAB_00036910;
        puVar27 = (uint *)0x0;
      }
      else {
        pcVar36 = *(code **)(puVar29 + 0x6134c);
        if ((int)*puVar14 < (int)puVar27) {
          *(uint **)(puVar32 + -0x34) = puVar16;
          puVar18 = puVar27;
          (*pcVar36)();
          puVar30 = *(undefined **)(puVar32 + -0x48);
          puVar25 = (uint *)puVar14[2];
          puVar26 = *(uint **)(*(int *)(puVar32 + -0x34) + 8);
        }
        if (puVar25 != puVar28) {
          puVar19 = puVar28 + (int)puVar23;
          pbVar11 = (byte *)((int)puVar27 + (-1 - (int)puVar23));
          puVar7 = puVar25 + (int)puVar23;
          puVar18 = (uint *)*puVar19;
          puVar16 = puVar7;
          if (pbVar11 != (byte *)0x0) {
            do {
              puVar19 = puVar19 + 1;
              puVar10 = puVar16 + 1;
              *puVar16 = (uint)puVar18;
              pbVar11 = pbVar11 + -1;
              puVar18 = (uint *)*puVar19;
              puVar16 = puVar10;
            } while (pbVar11 != (byte *)0x0);
            puVar7 = puVar7 + (int)((int)puVar27 + (-1 - (int)puVar23));
          }
          *puVar7 = (uint)puVar18;
        }
        if (puVar23 != (uint *)0x0) {
          iVar4 = 0;
          do {
            puVar16 = (uint *)((int)puVar26 + iVar4);
            pbVar11 = (byte *)((int)puVar28 + iVar4);
            puVar10 = (uint *)((int)puVar25 + iVar4);
            iVar4 = iVar4 + 4;
            puVar18 = *(uint **)pbVar11;
            *puVar10 = *puVar16 ^ (uint)puVar18;
          } while ((int)puVar23 << 2 != iVar4);
        }
LAB_00036910:
        if (puVar25[(int)((int)puVar27 + -1)] == 0) {
          puVar16 = puVar25 + (int)puVar27;
          do {
            puVar27 = (uint *)((int)puVar27 + -1);
            if (puVar27 == (uint *)0x0) {
              puVar27 = (uint *)0x0;
              break;
            }
            puVar28 = puVar16 + -2;
            puVar16 = puVar16 + -1;
          } while (*puVar28 == 0);
        }
      }
      puVar14[1] = (uint)puVar27;
      goto LAB_000366e0;
    }
    puVar10 = (uint *)-(int)puVar27;
    param_3 = puVar16;
    puVar16 = puVar27;
    puVar15 = puVar28;
    puVar27 = puVar23;
    puVar28 = puVar26;
LAB_0003630c:
    puVar26 = puVar15;
    puVar23 = puVar16;
    uVar2 = (int)puVar10 * 4;
    if (uVar2 < 0x7f01) {
      iVar4 = -(uVar2 + 7 & 0xfffffff8);
      puVar16 = (uint *)(puVar32 + iVar4 + -0x48);
      puVar34 = puVar32 + iVar4 + -0x58;
    }
    else {
      pcVar36 = *(code **)(puVar29 + 0x61080);
      *(uint **)(puVar32 + -0x38) = param_3;
      *(uint *)(puVar32 + -0x34) = uVar2;
      puVar16 = (uint *)(*pcVar36)(puVar32 + -0x30,uVar2);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      param_3 = *(uint **)(puVar32 + -0x38);
      uVar2 = *(uint *)(puVar32 + -0x34);
      puVar34 = puVar32 + -0x58;
    }
    uVar24 = *puVar26;
    *puVar16 = uVar24 - 1;
    if (uVar24 == 0) {
      if (puVar23 != (uint *)0xffffffff) {
        uVar24 = puVar26[1];
        puVar16[1] = uVar24 - 1;
        if (uVar24 == 0) {
          puVar18 = puVar26 + 2;
          iVar4 = 2;
          puVar15 = puVar16 + 2;
          do {
            if ((int)puVar10 <= iVar4) goto LAB_00036390;
            uVar24 = *puVar18;
            iVar4 = iVar4 + 1;
            puVar18 = puVar18 + 1;
            *puVar15 = uVar24 - 1;
            puVar15 = puVar15 + 1;
          } while (uVar24 == 0);
        }
        else {
          iVar4 = 2;
        }
        if ((puVar26 != puVar16) && (iVar4 < (int)puVar10)) {
          puVar18 = puVar26 + iVar4;
          puVar26 = puVar26 + (int)puVar10;
          puVar15 = puVar16 + iVar4;
          do {
            uVar24 = *puVar18;
            puVar18 = puVar18 + 1;
            *puVar15 = uVar24;
            puVar15 = puVar15 + 1;
          } while (puVar26 != puVar18);
        }
      }
LAB_00036390:
      puVar15 = puVar10;
      if ((int)puVar10 <= (int)puVar27) {
        puVar15 = puVar27;
      }
      pcVar36 = *(code **)(puVar30 + -0x7a84);
      if ((int)((int)puVar15 + 1) <= (int)*puVar14) goto LAB_000363b0;
LAB_00036778:
      *(uint *)(puVar32 + -0x3c) = uVar2;
      *(uint **)(puVar32 + -0x38) = param_3;
      *(uint **)(puVar32 + -0x34) = puVar16;
      (*pcVar36)(puVar14);
      puVar30 = *(undefined **)(puVar32 + -0x48);
      puVar25 = (uint *)puVar14[2];
      uVar2 = *(uint *)(puVar32 + -0x3c);
      puVar28 = *(uint **)(*(int *)(puVar32 + -0x38) + 8);
      puVar16 = *(uint **)(puVar32 + -0x34);
      if ((int)puVar27 <= (int)puVar10) goto LAB_000367b0;
LAB_000363b8:
      puVar23 = (uint *)((int)puVar23 + (int)puVar27);
      pbVar6 = (byte *)((int)puVar28 + uVar2);
      pbVar9 = (byte *)((int)puVar23 + -1);
      pbVar22 = (byte *)((int)puVar25 + uVar2);
      uVar17 = *(undefined4 *)pbVar6;
      pbVar11 = pbVar22;
      if (pbVar9 != (byte *)0x0) {
        do {
          pbVar6 = pbVar6 + 4;
          *(undefined4 *)pbVar11 = uVar17;
          pbVar9 = pbVar9 + -1;
          uVar17 = *(undefined4 *)pbVar6;
          pbVar11 = pbVar11 + 4;
        } while (pbVar9 != (byte *)0x0);
        puVar23 = (uint *)((int)puVar23 * 4 + -4);
        pbVar22 = pbVar22 + (int)puVar23;
      }
      uVar24 = 0;
      *(undefined4 *)pbVar22 = uVar17;
      do {
        puVar10 = (uint *)((int)puVar28 + uVar24);
        puVar18 = (uint *)((int)puVar16 + uVar24);
        puVar15 = (uint *)((int)puVar25 + uVar24);
        uVar24 = uVar24 + 4;
        *puVar15 = *puVar10 ^ *puVar18;
      } while (uVar2 != uVar24);
      uVar2 = *puVar25;
      *puVar25 = uVar2 + 1;
      puVar10 = puVar27;
      if (uVar2 + 1 != 0) goto LAB_00036840;
LAB_00036438:
      uVar2 = puVar25[1];
      puVar25[1] = uVar2 + 1;
      puVar27 = puVar10;
      if (uVar2 + 1 != 0) goto LAB_00036840;
      iVar4 = 2;
      puVar16 = puVar25 + 2;
      do {
        puVar15 = puVar10;
        if ((int)puVar10 <= iVar4) {
          puVar18 = (uint *)0x1;
          unaff_s0 = (uint *)((int)puVar10 + 1);
          goto LAB_00036844;
        }
        uVar2 = *puVar16;
        iVar4 = iVar4 + 1;
        *puVar16 = uVar2 + 1;
        puVar16 = puVar16 + 1;
      } while (uVar2 + 1 == 0);
      puVar18 = (uint *)0x0;
      unaff_s0 = puVar10;
    }
    else {
      if ((puVar26 == puVar16) || (puVar23 == (uint *)0xffffffff)) goto LAB_00036390;
      puVar26 = puVar26 + 1;
      iVar4 = 1;
      puVar15 = puVar16;
      do {
        puVar15 = puVar15 + 1;
        uVar24 = *puVar26;
        iVar4 = iVar4 + 1;
        puVar26 = puVar26 + 1;
        *puVar15 = uVar24;
      } while (iVar4 < (int)puVar10);
      puVar15 = puVar10;
      if ((int)puVar10 <= (int)puVar27) {
        puVar15 = puVar27;
      }
      if ((int)*puVar14 < (int)((int)puVar15 + 1)) {
        pcVar36 = *(code **)(puVar30 + -0x7a84);
        goto LAB_00036778;
      }
LAB_000363b0:
      if ((int)puVar10 < (int)puVar27) goto LAB_000363b8;
LAB_000367b0:
      if (puVar27 == puVar10) {
        iVar4 = (int)puVar10 << 2;
LAB_00036804:
        iVar21 = 0;
        do {
          puVar15 = (uint *)((int)puVar28 + iVar21);
          puVar19 = (uint *)((int)puVar16 + iVar21);
          puVar18 = (uint *)((int)puVar25 + iVar21);
          iVar21 = iVar21 + 4;
          *puVar18 = *puVar15 ^ *puVar19;
        } while (iVar4 != iVar21);
      }
      else {
        iVar4 = (int)puVar27 * 4;
        puVar18 = puVar16 + (int)puVar27;
        pbVar11 = (byte *)((int)puVar10 + (-1 - (int)puVar27));
        puVar19 = puVar25 + (int)puVar27;
        uVar2 = *puVar18;
        puVar15 = puVar19;
        if (pbVar11 != (byte *)0x0) {
          do {
            puVar18 = puVar18 + 1;
            *puVar15 = uVar2;
            pbVar11 = pbVar11 + -1;
            uVar2 = *puVar18;
            puVar15 = puVar15 + 1;
          } while (pbVar11 != (byte *)0x0);
          puVar19 = puVar19 + (int)((int)puVar10 + (-1 - (int)puVar27));
        }
        *puVar19 = uVar2;
        if (puVar27 != (uint *)0x0) goto LAB_00036804;
      }
      uVar2 = *puVar25;
      *puVar25 = uVar2 + 1;
      if (uVar2 + 1 == 0) {
        if (puVar23 != (uint *)0xffffffff) goto LAB_00036438;
        unaff_s0 = (uint *)((int)puVar10 + 1);
        puVar18 = (uint *)0x1;
        puVar15 = puVar10;
        goto LAB_00036844;
      }
LAB_00036840:
      puVar18 = (uint *)0x0;
      unaff_s0 = puVar10;
      puVar15 = puVar27;
    }
LAB_00036844:
    puVar25[(int)puVar10] = (uint)puVar18;
    uVar2 = (puVar25 + (int)unaff_s0)[-1];
    puVar16 = puVar25 + (int)unaff_s0;
    while (uVar2 == 0) {
      unaff_s0 = (uint *)((int)unaff_s0 + -1);
      if (unaff_s0 == (uint *)0x0) goto LAB_000366d4;
      uVar2 = puVar16[-2];
      puVar16 = puVar16 + -1;
    }
    unaff_s0 = (uint *)-(int)unaff_s0;
  }
LAB_000366d4:
  puVar10 = *(uint **)(puVar32 + -0x30);
  puVar14[1] = (uint)unaff_s0;
  puVar27 = puVar23;
  puVar35 = puVar34;
  if (puVar10 != (uint *)0x0) {
    (**(code **)(puVar30 + -0x7a2c))();
    puVar30 = *(undefined **)(puVar32 + -0x48);
  }
LAB_000366e0:
  if (*(int *)(puVar32 + -0x2c) == *piVar5) {
    return;
  }
  pcVar36 = *(code **)(puVar30 + -0x7b70);
  uVar17 = 0x36bd8;
  (*pcVar36)();
  pcVar31 = pcVar36 + 0x68460;
  *(uint **)(puVar35 + -0x10) = puVar25;
  *(code **)(puVar35 + -0x20) = pcVar31;
  *(uint **)(puVar35 + -0x14) = puVar27;
  *(uint **)(puVar35 + -0x18) = unaff_s0;
  *(undefined4 *)(puVar35 + -4) = uVar17;
  *(uint **)(puVar35 + -8) = puVar15;
  *(uint **)(puVar35 + -0xc) = puVar26;
  uVar24 = puVar18[1];
  uVar2 = uVar24;
  if ((int)uVar24 < 0) {
    uVar2 = -uVar24;
  }
  if (puVar18 != puVar10) {
    uVar3 = puVar18[4];
    if ((int)*puVar10 < (int)uVar2) {
      puVar8 = (undefined4 *)(**(code **)(pcVar36 + 0x609dc))(puVar10,uVar2);
      pcVar31 = *(code **)(puVar35 + -0x20);
    }
    else {
      puVar8 = (undefined4 *)puVar10[2];
    }
    if (uVar24 != 0) {
      puVar13 = (undefined4 *)puVar18[2];
      iVar4 = uVar2 - 1;
      uVar17 = *puVar13;
      puVar20 = puVar8;
      if (iVar4 != 0) {
        do {
          puVar13 = puVar13 + 1;
          *puVar20 = uVar17;
          iVar4 = iVar4 + -1;
          uVar17 = *puVar13;
          puVar20 = puVar20 + 1;
        } while (iVar4 != 0);
        puVar8 = puVar8 + (uVar2 - 1);
      }
      *puVar8 = uVar17;
    }
    if ((int)puVar10[3] < (int)uVar3) {
      puVar8 = (undefined4 *)(**(code **)(pcVar31 + -0x7a84))(puVar10 + 3,uVar3);
    }
    else {
      puVar8 = (undefined4 *)puVar10[5];
    }
    puVar10[4] = uVar3;
    if (uVar3 != 0) {
      puVar13 = (undefined4 *)puVar18[5];
      iVar4 = uVar3 - 1;
      uVar17 = *puVar13;
      puVar20 = puVar8;
      if (iVar4 != 0) {
        do {
          puVar13 = puVar13 + 1;
          *puVar20 = uVar17;
          iVar4 = iVar4 + -1;
          uVar17 = *puVar13;
          puVar20 = puVar20 + 1;
        } while (iVar4 != 0);
        puVar8 = puVar8 + (uVar3 - 1);
      }
      *puVar8 = uVar17;
    }
  }
  puVar10[1] = uVar2;
  return;
}

