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

ulong lc(mp_ptr rp,__gmp_randstate_struct *rstate)

{
  int *piVar1;
  mp_limb_t **ppmVar2;
  __mpz_struct *p_Var3;
  undefined *puVar4;
  int *piVar5;
  undefined4 *puVar6;
  undefined4 uVar7;
  mp_limb_t **ppmVar8;
  ulong uVar9;
  undefined1 *puVar10;
  int iVar11;
  mp_ptr pmVar12;
  int *piVar13;
  undefined4 *puVar14;
  mp_limb_t mVar16;
  uint uVar17;
  __gmp_randstate_struct *p_Var18;
  int iVar19;
  int *piVar20;
  int *piVar21;
  mp_limb_t *pmVar22;
  void *pvVar23;
  mp_limb_t *pmVar24;
  uint uVar25;
  int *piVar26;
  undefined1 *puVar27;
  mp_limb_t *pmVar28;
  int *piVar29;
  __gmp_randstate_struct *p_Var30;
  gmp_randalg_t gVar31;
  __gmp_randstate_struct *p_Var32;
  undefined *puVar33;
  undefined *puVar34;
  int iVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  code *pcVar38;
  code *pcVar39;
  undefined1 auStack_60 [24];
  tmp_reentrant_t *__tmp_marker;
  mp_limb_t *local_2c;
  undefined4 *puVar15;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  puVar36 = auStack_60;
  iVar19 = rstate->_mp_seed[0]._mp_size;
  pvVar23 = (rstate->_mp_algdata)._mp_lc;
  pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc;
  puVar10 = (undefined1 *)(iVar19 + (int)pvVar23);
  gVar31 = rstate[1]._mp_alg;
  pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5);
  __tmp_marker = (tmp_reentrant_t *)0x0;
  local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540;
  p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d;
  uVar17 = (int)(puVar10 + 1) * 4;
  if ((int)pmVar24 < (int)(puVar10 + 1)) {
    if (uVar17 < 0x7f01) {
      iVar11 = -(uVar17 + 7 & 0xfffffff8);
      puVar36 = auStack_60 + iVar11;
      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);
    }
    else {
      p_Var30 = (__gmp_randstate_struct *)
                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);
    }
  }
  else {
    puVar27 = (undefined1 *)((int)pmVar24 + 1);
    if ((uint)((int)puVar27 * 4) < 0x7f01) {
      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);
      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);
      puVar36 = auStack_60 + iVar11;
    }
    else {
      p_Var30 = (__gmp_randstate_struct *)
                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);
      puVar36 = auStack_60;
    }
    if (puVar10 != puVar27) {
      iVar11 = (int)puVar27 - (int)puVar10;
      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;
      do {
        iVar11 = iVar11 + -1;
        *piVar21 = 0;
        piVar21 = piVar21 + 1;
      } while (iVar11 != 0);
    }
  }
  *(void **)(puVar36 + 0x10) = pvVar23;
  p_Var18 = p_Var32;
  (*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19);
  pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size;
  if (((pmVar28 != (mp_limb_t *)0x0) &&
      (p_Var18 = p_Var30, pmVar22 = pmVar28,
      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),
      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)) {
    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;
    mVar16 = *piVar21 + 1;
    *piVar21 = mVar16;
    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {
      piVar20 = piVar21 + 1;
      piVar21 = piVar21 + 1;
      mVar16 = *piVar20 + 1;
      *piVar21 = mVar16;
    }
  }
  piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5);
  *piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f));
  if (pmVar24 != (mp_limb_t *)0x0) {
    pmVar28 = rstate->_mp_seed[0]._mp_d;
    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;
    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {
      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);
      pmVar22 = pmVar28;
      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;
      do {
        *pmVar22 = mVar16;
        ppmVar2 = ppmVar8 + 1;
        mVar16 = (mp_limb_t)*ppmVar8;
        pmVar22 = pmVar22 + 1;
        ppmVar8 = ppmVar2;
      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);
      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);
      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);
    }
    *pmVar28 = mVar16;
  }
  uVar17 = gVar31 >> 6;
  piVar20 = (int *)((int)pmVar24 - uVar17);
  piVar21 = piVar20;
  if (0 < (int)piVar20) {
    pmVar24 = (mp_limb_t *)(uVar17 * 4);
    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);
    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);
    if (pmVar22 == (mp_limb_t *)0x0) {
      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;
      if (piVar20 != (int *)&DAT_00000001) {
        p_Var3 = p_Var18->_mp_seed;
        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);
        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;
        pmVar12 = rp;
        do {
          *pmVar12 = mVar16;
          ppmVar2 = ppmVar8 + 1;
          mVar16 = (mp_limb_t)*ppmVar8;
          ppmVar8 = ppmVar2;
          pmVar12 = pmVar12 + 1;
        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);
        piVar21 = (int *)((int)piVar20 * 4 + -4);
        rp = rp + (int)((int)piVar20 + -1);
      }
      *rp = mVar16;
    }
    else {
      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);
      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;
      if (uVar17 != 0) {
        pmVar24 = rp + uVar17;
        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;
        pmVar12 = rp;
        do {
          rp = pmVar12 + 1;
          *pmVar12 = (mp_limb_t)pmVar28;
          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);
          pmVar28 = *ppmVar8;
          ppmVar8 = (mp_limb_t **)p_Var30;
          pmVar12 = rp;
        } while (rp != pmVar24);
      }
      *rp = (mp_limb_t)pmVar28;
      piVar21 = piVar20;
    }
  }
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (local_2c == *(mp_limb_t **)puVar4) {
    return gVar31 + 1 >> 1;
  }
  pcVar38 = randget_lc;
  pmVar28 = local_2c;
  puVar33 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar34 = puVar33 + 0x23144;
  mVar16 = pmVar28[2];
  puVar37 = puVar36 + -0x60;
  puVar6 = *(undefined4 **)(puVar33 + 0x1b644);
  *(mp_limb_t **)(puVar36 + -0x28) = pmVar24;
  *(undefined1 **)(puVar36 + -8) = auStack_60;
  uVar25 = *(uint *)(mVar16 + 0x20);
  *(undefined4 **)(puVar36 + -0x48) = puVar6;
  *(mp_ptr *)(puVar36 + -0x10) = rp;
  piVar26 = (int *)(uVar25 >> 1);
  uVar7 = *puVar6;
  *(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate;
  *(gmp_randalg_t *)(puVar36 + -0x18) = gVar31;
  *(undefined4 *)(puVar36 + -0x2c) = uVar7;
  iVar19 = (int)((int)piVar26 + 0x1f) >> 5;
  *(uint *)(puVar36 + -0x24) = uVar17;
  *(code **)(puVar36 + -4) = pcVar38;
  uVar17 = iVar19 * 4;
  *(int *)(puVar36 + -0x3c) = iVar19;
  *(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32;
  *(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30;
  *(undefined **)(puVar36 + -0x20) = puVar4;
  *(undefined **)(puVar36 + -0x50) = puVar34;
  *(undefined4 *)(puVar36 + -0x30) = 0;
  *(uint *)(puVar36 + -0x44) = uVar17;
  piVar20 = piVar21;
  if (uVar17 < 0x7f01) {
    iVar19 = -(uVar17 + 7 & 0xfffffff8);
    puVar37 = puVar36 + iVar19 + -0x60;
    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);
    p_Var32 = p_Var18;
  }
  else {
    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);
    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);
    puVar34 = *(undefined **)(puVar36 + -0x50);
  }
  piVar29 = *(int **)(puVar34 + -0x7fd4);
  *(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f;
  *(int **)(puVar36 + -0x34) = piVar29 + -0x111b;
  uVar17 = 0;
  piVar5 = piVar26;
  piVar13 = (int *)0x0;
  while (piVar1 = piVar5, piVar1 <= piVar21) {
    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];
    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);
    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;
    if (pmVar24 == (mp_limb_t *)0x0) {
      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);
      puVar34 = *(undefined **)(puVar36 + -0x50);
    }
    else {
      (**(code **)(puVar36 + -0x34))(p_Var30);
      piVar20 = *(int **)(puVar36 + -0x3c);
      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);
      *(int *)(puVar36 + -0x38) = *piVar29;
      p_Var32 = p_Var30;
      pmVar22 = pmVar24;
      uVar7 = (*pcVar38)(piVar29,p_Var30);
      iVar19 = *(int *)(puVar36 + -0x40);
      puVar34 = *(undefined **)(puVar36 + -0x50);
      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);
      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {
        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;
      }
    }
    uVar17 = (uint)piVar1 >> 5;
    piVar13 = piVar1;
    piVar5 = (int *)((int)piVar26 + (int)piVar1);
  }
  if (piVar13 == piVar21) {
    iVar19 = *(int *)(puVar36 + -0x30);
LAB_0007c054:
    pcVar38 = *(code **)(puVar34 + -0x7a2c);
    if (iVar19 == 0) goto LAB_0007c05c;
  }
  else {
    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));
    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);
    if ((int)puVar10 < 0) {
      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));
    }
    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];
    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);
    *(int **)(puVar36 + -0x34) = piVar13;
    piVar29 = (int *)((int)puVar10 >> 5);
    lc((mp_ptr)p_Var30,p_Var32);
    puVar34 = *(undefined **)(puVar36 + -0x50);
    if (pmVar28 == (mp_limb_t *)0x0) {
      if (piVar29 != (int *)0x0) {
        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;
        if (piVar29 != (int *)&DAT_00000001) {
          p_Var3 = p_Var30->_mp_seed;
          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);
          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;
          piVar13 = piVar26;
          do {
            *piVar13 = (int)p_Var32;
            ppmVar2 = ppmVar8 + 1;
            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;
            ppmVar8 = ppmVar2;
            piVar13 = piVar13 + 1;
          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);
          piVar26 = piVar26 + (int)((int)piVar29 + -1);
        }
        *piVar26 = (int)p_Var32;
      }
    }
    else {
      uVar25 = *piVar26;
      piVar20 = piVar29;
      pmVar22 = pmVar28;
      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);
      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);
      iVar19 = *(int *)(puVar36 + -0x34);
      puVar34 = *(undefined **)(puVar36 + -0x50);
      *piVar26 = *piVar26 | uVar25;
      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {
        piVar26 = piVar26 + (int)piVar29;
        *piVar26 = uVar17;
      }
    }
    uVar17 = (uint)piVar21 & 0x1f;
    iVar19 = *(int *)(puVar36 + -0x30);
    if (uVar17 == 0) goto LAB_0007c054;
    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);
    *piVar21 = *piVar21 & ~(-1 << uVar17);
    if (iVar19 == 0) goto LAB_0007c05c;
    pcVar38 = *(code **)(puVar34 + -0x7a2c);
  }
  (*pcVar38)();
  puVar34 = *(undefined **)(puVar36 + -0x50);
LAB_0007c05c:
  if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {
    return **(ulong **)(puVar36 + -0x48);
  }
  pcVar38 = *(code **)(puVar34 + -0x7b70);
  pcVar39 = __gmp_randinit_lc_2exp;
  (*pcVar38)();
  *(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40;
  *(code **)(puVar37 + -4) = pcVar39;
  *(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18;
  *(mp_limb_t **)(puVar37 + -0xc) = pmVar28;
  *(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30;
  *(int **)(puVar37 + -0x14) = piVar29;
  *(int **)(puVar37 + -0x18) = piVar21;
  *(int **)(puVar37 + -0x1c) = piVar26;
  if (pmVar22 != (mp_limb_t *)0x0) {
    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;
    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);
    iVar35 = *(int *)(puVar37 + -0x28);
    *(int *)(iVar19 + 8) = iVar11;
    pcVar38 = *(code **)(iVar35 + -0x7ebc);
    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;
    (*pcVar38)(iVar11,pmVar22);
    iVar19 = *(int *)(puVar37 + -0x28);
    puVar6 = *(undefined4 **)(iVar11 + 8);
    if (uVar17 != 0) {
      puVar14 = puVar6;
      do {
        puVar15 = puVar14 + 1;
        *puVar14 = 0;
        puVar14 = puVar15;
      } while (puVar15 != puVar6 + uVar17);
    }
    pcVar38 = *(code **)(iVar19 + -0x7f10);
    *(uint *)(iVar11 + 4) = uVar17;
    *puVar6 = 1;
    (*pcVar38)(iVar11 + 0xc);
    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);
    if (*(int *)(iVar11 + 0x10) == 0) {
      *(undefined4 *)(iVar11 + 0x10) = 1;
      **(undefined4 **)(iVar11 + 0x14) = 0;
    }
    *(int **)(iVar11 + 0x1c) = piVar20;
    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;
    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);
    return (uint)(piVar20 != (int *)0x0);
  }
  uVar9 = (**(code **)(pcVar38 + 0x1b220))
                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78
                    );
  return uVar9;
}



uint FUN_0007bb94(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  uint *puVar3;
  undefined *puVar4;
  uint *puVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  int *piVar11;
  uint uVar12;
  undefined4 *puVar13;
  int iVar14;
  uint *puVar15;
  uint *puVar16;
  undefined4 *puVar17;
  int iVar18;
  undefined4 *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  undefined4 *puVar23;
  uint *puVar24;
  uint uVar25;
  undefined4 *puVar26;
  undefined4 *puVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  undefined4 uVar33;
  code *pcVar34;
  undefined1 auStack_60 [24];
  int local_30;
  undefined4 *local_2c;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  puVar31 = auStack_60;
  iVar14 = *(int *)(param_2 + 4);
  iVar18 = *(int *)(param_2 + 0x10);
  puVar17 = *(undefined4 **)(param_2 + 0x14);
  iVar7 = iVar14 + iVar18;
  uVar25 = *(uint *)(param_2 + 0x20);
  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);
  local_30 = 0;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;
  puVar27 = *(undefined4 **)(param_2 + 8);
  uVar12 = (iVar7 + 1) * 4;
  if ((int)puVar19 < iVar7 + 1) {
    if (uVar12 < 0x7f01) {
      iVar7 = -(uVar12 + 7 & 0xfffffff8);
      puVar31 = auStack_60 + iVar7;
      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);
    }
    else {
      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
    }
  }
  else {
    iVar22 = (int)puVar19 + 1;
    if ((uint)(iVar22 * 4) < 0x7f01) {
      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);
      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);
      puVar31 = auStack_60 + iVar2;
    }
    else {
      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
      puVar31 = auStack_60;
    }
    if (iVar7 != iVar22) {
      iVar22 = iVar22 - iVar7;
      puVar23 = puVar26 + iVar7;
      do {
        iVar22 = iVar22 + -1;
        *puVar23 = 0;
        puVar23 = puVar23 + 1;
      } while (iVar22 != 0);
    }
  }
  *(int *)(puVar31 + 0x10) = iVar18;
  puVar13 = puVar27;
  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);
  puVar23 = *(undefined4 **)(param_2 + 0x18);
  if (((puVar23 != (undefined4 *)0x0) &&
      (puVar13 = puVar26, puVar17 = puVar23,
      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&
     ((int)puVar23 < (int)puVar19)) {
    piVar11 = puVar26 + (int)puVar23;
    iVar7 = *piVar11 + 1;
    *piVar11 = iVar7;
    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {
      piVar1 = piVar11 + 1;
      piVar11 = piVar11 + 1;
      iVar7 = *piVar1 + 1;
      *piVar11 = iVar7;
    }
  }
  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));
  if (puVar19 != (undefined4 *)0x0) {
    puVar23 = *(undefined4 **)(param_2 + 8);
    uVar10 = *puVar26;
    if (puVar19 != (undefined4 *)0x1) {
      puVar13 = puVar26 + (int)puVar19;
      puVar17 = puVar23;
      puVar6 = puVar26 + 1;
      do {
        *puVar17 = uVar10;
        puVar8 = puVar6 + 1;
        uVar10 = *puVar6;
        puVar17 = puVar17 + 1;
        puVar6 = puVar8;
      } while (puVar8 != puVar13);
      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);
      puVar23 = puVar23 + (int)puVar19 + -1;
    }
    *puVar23 = uVar10;
  }
  uVar12 = uVar25 >> 6;
  puVar15 = (uint *)((int)puVar19 - uVar12);
  puVar16 = puVar15;
  if (0 < (int)puVar15) {
    puVar19 = (undefined4 *)(uVar12 * 4);
    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);
    puVar13 = puVar26 + uVar12;
    if (puVar17 == (undefined4 *)0x0) {
      uVar10 = *puVar13;
      if (puVar15 != (uint *)0x1) {
        puVar23 = puVar13 + 1;
        puVar13 = puVar13 + (int)puVar15;
        puVar6 = param_1;
        do {
          *puVar6 = uVar10;
          puVar8 = puVar23 + 1;
          uVar10 = *puVar23;
          puVar23 = puVar8;
          puVar6 = puVar6 + 1;
        } while (puVar8 != puVar13);
        puVar16 = (uint *)((int)puVar15 * 4 + -4);
        param_1 = param_1 + (int)puVar15 + -1;
      }
      *param_1 = uVar10;
    }
    else {
      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);
      uVar10 = *puVar26;
      if (uVar12 != 0) {
        puVar19 = param_1 + uVar12;
        puVar23 = puVar26 + 1;
        puVar6 = param_1;
        do {
          param_1 = puVar6 + 1;
          *puVar6 = uVar10;
          puVar26 = puVar23 + 1;
          uVar10 = *puVar23;
          puVar23 = puVar26;
          puVar6 = param_1;
        } while (param_1 != puVar19);
      }
      *param_1 = uVar10;
      puVar16 = puVar15;
    }
  }
  if (local_30 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (local_2c == *(undefined4 **)puVar4) {
    return uVar25 + 1 >> 1;
  }
  uVar33 = 0x7befc;
  puVar23 = local_2c;
  puVar28 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar28 + 0x23144;
  iVar7 = puVar23[2];
  puVar32 = puVar31 + -0x60;
  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);
  *(undefined4 **)(puVar31 + -0x28) = puVar19;
  *(undefined1 **)(puVar31 + -8) = auStack_60;
  uVar20 = *(uint *)(iVar7 + 0x20);
  *(undefined4 **)(puVar31 + -0x48) = puVar6;
  *(undefined4 **)(puVar31 + -0x10) = param_1;
  puVar21 = (uint *)(uVar20 >> 1);
  uVar10 = *puVar6;
  *(int *)(puVar31 + -0x14) = param_2;
  *(uint *)(puVar31 + -0x18) = uVar25;
  *(undefined4 *)(puVar31 + -0x2c) = uVar10;
  iVar7 = (int)puVar21 + 0x1f >> 5;
  *(uint *)(puVar31 + -0x24) = uVar12;
  *(undefined4 *)(puVar31 + -4) = uVar33;
  uVar12 = iVar7 * 4;
  *(int *)(puVar31 + -0x3c) = iVar7;
  *(undefined4 **)(puVar31 + -0xc) = puVar27;
  *(undefined4 **)(puVar31 + -0x1c) = puVar26;
  *(undefined **)(puVar31 + -0x20) = puVar4;
  *(undefined **)(puVar31 + -0x50) = puVar30;
  *(undefined4 *)(puVar31 + -0x30) = 0;
  *(uint *)(puVar31 + -0x44) = uVar12;
  puVar15 = puVar16;
  if (uVar12 < 0x7f01) {
    iVar7 = -(uVar12 + 7 & 0xfffffff8);
    puVar32 = puVar31 + iVar7 + -0x60;
    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);
    puVar19 = puVar13;
  }
  else {
    puVar19 = *(undefined4 **)(puVar31 + -0x44);
    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);
    puVar30 = *(undefined **)(puVar31 + -0x50);
  }
  puVar24 = *(uint **)(puVar30 + -0x7fd4);
  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;
  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;
  uVar12 = 0;
  puVar5 = puVar21;
  puVar9 = (uint *)0x0;
  while (puVar3 = puVar5, puVar3 <= puVar16) {
    puVar19 = (undefined4 *)puVar23[2];
    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);
    puVar24 = puVar13 + uVar12;
    if (puVar26 == (undefined4 *)0x0) {
      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);
      puVar30 = *(undefined **)(puVar31 + -0x50);
    }
    else {
      (**(code **)(puVar31 + -0x34))(puVar27);
      puVar15 = *(uint **)(puVar31 + -0x3c);
      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);
      *(uint *)(puVar31 + -0x38) = *puVar24;
      puVar19 = puVar27;
      puVar17 = puVar26;
      uVar10 = (*pcVar29)(puVar24,puVar27);
      iVar7 = *(int *)(puVar31 + -0x40);
      puVar30 = *(undefined **)(puVar31 + -0x50);
      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);
      if (0x20 < (uint)(iVar7 + (int)puVar26)) {
        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;
      }
    }
    uVar12 = (uint)puVar3 >> 5;
    puVar9 = puVar3;
    puVar5 = (uint *)((int)puVar21 + (int)puVar3);
  }
  if (puVar9 == puVar16) {
    iVar7 = *(int *)(puVar31 + -0x30);
LAB_0007c054:
    pcVar29 = *(code **)(puVar30 + -0x7a2c);
    if (iVar7 == 0) goto LAB_0007c05c;
  }
  else {
    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);
    puVar21 = puVar13 + ((uint)puVar9 >> 5);
    if (iVar7 < 0) {
      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);
    }
    puVar19 = (undefined4 *)puVar23[2];
    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);
    *(uint **)(puVar31 + -0x34) = puVar9;
    puVar24 = (uint *)(iVar7 >> 5);
    FUN_0007bb94(puVar27,puVar19);
    puVar30 = *(undefined **)(puVar31 + -0x50);
    if (puVar23 == (undefined4 *)0x0) {
      if (puVar24 != (uint *)0x0) {
        puVar19 = (undefined4 *)*puVar27;
        if (puVar24 != (uint *)0x1) {
          puVar26 = puVar27 + 1;
          puVar27 = puVar27 + (int)puVar24;
          puVar9 = puVar21;
          do {
            *puVar9 = (uint)puVar19;
            puVar6 = puVar26 + 1;
            puVar19 = (undefined4 *)*puVar26;
            puVar26 = puVar6;
            puVar9 = puVar9 + 1;
          } while (puVar6 != puVar27);
          puVar21 = puVar21 + (int)puVar24 + -1;
        }
        *puVar21 = (uint)puVar19;
      }
    }
    else {
      uVar25 = *puVar21;
      puVar15 = puVar24;
      puVar17 = puVar23;
      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);
      puVar19 = (undefined4 *)((int)puVar24 * 0x20);
      iVar7 = *(int *)(puVar31 + -0x34);
      puVar30 = *(undefined **)(puVar31 + -0x50);
      *puVar21 = *puVar21 | uVar25;
      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {
        puVar21 = puVar21 + (int)puVar24;
        *puVar21 = uVar12;
      }
    }
    uVar12 = (uint)puVar16 & 0x1f;
    iVar7 = *(int *)(puVar31 + -0x30);
    if (uVar12 == 0) goto LAB_0007c054;
    puVar16 = puVar13 + ((uint)puVar16 >> 5);
    *puVar16 = *puVar16 & ~(-1 << uVar12);
    if (iVar7 == 0) goto LAB_0007c05c;
    pcVar29 = *(code **)(puVar30 + -0x7a2c);
  }
  (*pcVar29)();
  puVar30 = *(undefined **)(puVar31 + -0x50);
LAB_0007c05c:
  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {
    return **(uint **)(puVar31 + -0x48);
  }
  pcVar29 = *(code **)(puVar30 + -0x7b70);
  pcVar34 = __gmp_randinit_lc_2exp;
  (*pcVar29)();
  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;
  *(code **)(puVar32 + -4) = pcVar34;
  *(undefined4 **)(puVar32 + -8) = puVar13;
  *(undefined4 **)(puVar32 + -0xc) = puVar23;
  *(undefined4 **)(puVar32 + -0x10) = puVar27;
  *(uint **)(puVar32 + -0x14) = puVar24;
  *(uint **)(puVar32 + -0x18) = puVar16;
  *(uint **)(puVar32 + -0x1c) = puVar21;
  if (puVar17 != (undefined4 *)0x0) {
    uVar12 = (int)puVar17 + 0x1fU >> 5;
    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);
    iVar18 = *(int *)(puVar32 + -0x28);
    *(int *)(iVar7 + 8) = iVar14;
    pcVar29 = *(code **)(iVar18 + -0x7ebc);
    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;
    (*pcVar29)(iVar14,puVar17);
    iVar7 = *(int *)(puVar32 + -0x28);
    puVar27 = *(undefined4 **)(iVar14 + 8);
    if (uVar12 != 0) {
      puVar26 = puVar27;
      do {
        puVar23 = puVar26 + 1;
        *puVar26 = 0;
        puVar26 = puVar23;
      } while (puVar23 != puVar27 + uVar12);
    }
    pcVar29 = *(code **)(iVar7 + -0x7f10);
    *(uint *)(iVar14 + 4) = uVar12;
    *puVar27 = 1;
    (*pcVar29)(iVar14 + 0xc);
    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);
    if (*(int *)(iVar14 + 0x10) == 0) {
      *(undefined4 *)(iVar14 + 0x10) = 1;
      **(undefined4 **)(iVar14 + 0x14) = 0;
    }
    *(uint **)(iVar14 + 0x1c) = puVar15;
    *(undefined4 **)(iVar14 + 0x20) = puVar17;
    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);
    return (uint)(puVar15 != (uint *)0x0);
  }
  pcVar34 = *(code **)(pcVar29 + 0x1b220);
  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);
  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);
                    /* WARNING: Could not recover jumptable at 0x0007c36c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);
  return uVar12;
}


lui gp,0x2
addiu gp,gp,0x34ac
addu gp,gp,t9
addiu sp,sp,-0x60
lw a2,0x4(a1)
lw t0,0x10(a1)
lw a3,0x14(a1)
sw s4,0x48(sp)
sw s2,0x40(sp)
addu v1,a2,t0
sw s0,0x38(sp)
lw s4,0x20(a1)
lw s2,-0x7b00(gp)
sw s8,0x58(sp)
or s8,sp,zero
addiu s0,s4,0x1f
sw s7,0x54(sp)
sw s5,0x4c(sp)
or s5,a1,zero
sw s6,0x50(sp)
srl s0,s0,0x5
sw ra,0x5c(sp)
or s6,a0,zero
sw s3,0x44(sp)
sw s1,0x3c(sp)
sw gp,0x18(sp)
sw zero,0x30(s8)
lw v0,0x0(s2)
lw s7,0x8(a1)
addiu a1,v1,0x1
sw v0,0x34(s8)
slt v0,s0,a1
bne v0,zero,0x0007bd70
_sll a1,a1,0x2
addiu s1,s0,0x1
sll a1,s1,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x0007be3c
_lw t9,-0x7d50(gp)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu s3,sp,0x18
beq v1,s1,0x0007bc64
_sll a0,v1,0x2
subu v1,s1,v1
addu a0,s3,a0
addiu a0,a0,0x4
addiu v1,v1,-0x1
bne v1,zero,0x0007bc54
_sw zero,-0x4(a0)
lw t9,-0x7d8c(gp)
or a1,s7,zero
sw t0,0x10(sp)
jalr t9
_or a0,s3,zero
lw s1,0x18(s5)
bne s1,zero,0x0007bd94
_lw gp,0x18(s8)
srl v0,s4,0x5
li v1,-0x1
sll v0,v0,0x2
sllv v1,v1,s4
addu v0,s3,v0
nor v1,zero,v1
lw a0,0x0(v0)
and v1,a0,v1
beq s0,zero,0x0007bcec
_sw v1,0x0(v0)
li v0,0x1
lw a2,0x8(s5)
beq s0,v0,0x0007bce8
_lw a0,0x0(s3)
sll a3,s0,0x2
addiu v1,s3,0x4
addu a1,s3,a3
or v0,a2,zero
addiu v0,v0,0x4
sw a0,-0x4(v0)
addiu v1,v1,0x4
bne v1,a1,0x0007bccc
_lw a0,-0x4(v1)
addiu a3,a3,-0x4
addu a2,a2,a3
sw a0,0x0(a2)
srl s1,s4,0x6
subu a2,s0,s1
blez a2,0x0007bd20
_lw a0,0x30(s8)
sll s0,s1,0x2
ext a3,s4,0x1,0x5
bne a3,zero,0x0007be70
_addu a1,s3,s0
li v0,0x1
bne a2,v0,0x0007be08
_lw a0,0x0(a1)
sw a0,0x0(s6)
lw a0,0x30(s8)
bne a0,zero,0x0007beb4
_lw t9,-0x7a2c(gp)
lw a0,0x34(s8)
addiu v0,s4,0x1
lw v1,0x0(s2)
bne a0,v1,0x0007bef0
_srl v0,v0,0x1
or sp,s8,zero
lw ra,0x5c(sp)
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
sltiu v0,a1,0x7f01
beq v0,zero,0x0007bec4
_lw t9,-0x7d50(gp)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
b 0x0007bc64
_addiu s3,sp,0x18
lw t9,-0x7d0c(gp)
addiu a2,s5,0x1c
or a3,s1,zero
or a1,s3,zero
jalr t9
_or a0,s3,zero
beq v0,zero,0x0007bc84
_lw gp,0x18(s8)
slt v0,s1,s0
beq v0,zero,0x0007bc84
_sll a0,s1,0x2
addiu v0,s1,0x1
addu a0,s3,a0
lw v1,0x0(a0)
addiu v1,v1,0x1
beq v1,zero,0x0007bdf8
_sw v1,0x0(a0)
b 0x0007bc88
_srl v0,s4,0x5
lw v1,0x4(a0)
addiu a0,a0,0x4
addiu v0,v0,0x1
addiu v1,v1,0x1
bne v1,zero,0x0007bc84
_sw v1,0x0(a0)
bne s0,v0,0x0007bde0
_nop
b 0x0007bc88
_srl v0,s4,0x5
sll v1,a2,0x2
addiu v0,a1,0x4
addu a1,a1,v1
or v1,s6,zero
addiu v1,v1,0x4
sw a0,-0x4(v1)
addiu v0,v0,0x4
bne v0,a1,0x0007be18
_lw a0,-0x4(v0)
sll a2,a2,0x2
addiu a2,a2,-0x4
b 0x0007bd18
_addu s6,s6,a2
addiu a0,s8,0x30
sw v1,0x20(s8)
sw t0,0x24(s8)
sw a3,0x28(s8)
jalr t9
_sw a2,0x2c(s8)
lw gp,0x18(s8)
or s3,v0,zero
lw v1,0x20(s8)
lw t0,0x24(s8)
lw a3,0x28(s8)
b 0x0007bc44
_lw a2,0x2c(s8)
lw t9,-0x7ae0(gp)
jalr t9
_or a0,s3,zero
lw gp,0x18(s8)
beq s1,zero,0x0007bea4
_lw v0,0x0(s3)
addiu s3,s3,0x4
addu s0,s6,s0
addiu s6,s6,0x4
sw v0,-0x4(s6)
addiu s3,s3,0x4
bne s6,s0,0x0007be90
_lw v0,-0x4(s3)
lw a0,0x30(s8)
beq a0,zero,0x0007bd28
_sw v0,0x0(s6)
lw t9,-0x7a2c(gp)
jalr t9
_nop
b 0x0007bd28
_lw gp,0x18(s8)
addiu a0,s8,0x30
sw t0,0x24(s8)
sw a3,0x28(s8)
jalr t9
_sw a2,0x2c(s8)
lw gp,0x18(s8)
or s3,v0,zero
lw t0,0x24(s8)
lw a3,0x28(s8)
b 0x0007bc64
_lw a2,0x2c(s8)
lw t9,-0x7b70(gp)
jalr t9
_nop
lui gp,0x2
addiu gp,gp,0x3144
addu gp,gp,t9
lw v1,0x8(a0)
addiu sp,sp,-0x60
lw v0,-0x7b00(gp)
sw s0,0x38(sp)
sw s8,0x58(sp)
or s8,sp,zero
lw s0,0x20(v1)
sw v0,0x18(s8)
sw s6,0x50(sp)
srl s0,s0,0x1
lw v0,0x0(v0)
sw s5,0x4c(sp)
or s5,a1,zero
addiu s6,s0,0x1f
sw s4,0x48(sp)
sw v0,0x34(s8)
or s4,a0,zero
sra v0,s6,0x5
sw s1,0x3c(sp)
sw ra,0x5c(sp)
or s1,a2,zero
sll v1,v0,0x2
sw v0,0x24(s8)
sw s7,0x54(sp)
sltiu v0,v1,0x7f01
sw s3,0x44(sp)
sw s2,0x40(sp)
sw gp,0x10(sp)
sw zero,0x30(s8)
beq v0,zero,0x0007c1d8
_sw v1,0x1c(s8)
addiu v0,v1,0x7
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
addiu s3,sp,0x10
lw s2,-0x7fd4(gp)
or v1,zero,zero
andi v0,s0,0x1f
sw v0,0x20(s8)
addu s7,s0,v1
addiu v0,s2,-0x446c
sw v0,0x2c(s8)
sltu v0,s1,s7
bne v0,zero,0x0007c048
_srl t0,v1,0x5
lw a1,0x8(s4)
andi s6,v1,0x1f
sll t0,t0,0x2
beq s6,zero,0x0007c0a0
_addu s2,s5,t0
lw t9,0x2c(s8)
jalr t9
_or a0,s3,zero
or a0,s2,zero
lw gp,0x10(s8)
or a3,s6,zero
lw t0,0x0(s2)
or a1,s3,zero
lw a2,0x24(s8)
lw t9,-0x7ad4(gp)
jalr t9
_sw t0,0x28(s8)
lw v1,0x20(s8)
lw a0,0x0(s2)
lw t0,0x28(s8)
addu v1,v1,s6
lw gp,0x10(s8)
or a0,a0,t0
sltiu v1,v1,0x21
bne v1,zero,0x0007c034
_sw a0,0x0(s2)
lw v1,0x1c(s8)
addu t0,s2,v1
sw v0,0x0(t0)
or v1,s7,zero
addu s7,s0,v1
sltu v0,s1,s7
beq v0,zero,0x0007bfc0
_srl t0,v1,0x5
bne v1,s1,0x0007c0b8
_subu a0,s1,v1
lw a0,0x30(s8)
bne a0,zero,0x0007c174
_lw t9,-0x7a2c(gp)
lw v0,0x18(s8)
lw v1,0x34(s8)
lw v0,0x0(v0)
bne v1,v0,0x0007c1f4
_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
lw t9,0x2c(s8)
jalr t9
_or a0,s2,zero
or v1,s7,zero
b 0x0007c038
_lw gp,0x10(s8)
srl s0,v1,0x5
sll s0,s0,0x2
addiu v0,a0,0x1f
bgez v0,0x0007c0d0
_addu s0,s5,s0
addiu v0,a0,0x3e
lw t9,-0x7fd4(gp)
or a0,s3,zero
lw a1,0x8(s4)
andi s4,v1,0x1f
sw v1,0x2c(s8)
addiu t9,t9,-0x446c
bal 0x0007bb94
_sra s2,v0,0x5
bne s4,zero,0x0007c184
_lw gp,0x10(s8)
beq s2,zero,0x0007c140
_andi v1,s1,0x1f
li v0,0x1
beq s2,v0,0x0007c138
_lw a1,0x0(s3)
sll a0,s2,0x2
addiu v0,s3,0x4
addu s3,s3,a0
or v1,s0,zero
addiu v1,v1,0x4
sw a1,-0x4(v1)
addiu v0,v0,0x4
bne v0,s3,0x0007c11c
_lw a1,-0x4(v0)
addiu a0,a0,-0x4
addu s0,s0,a0
sw a1,0x0(s0)
andi v1,s1,0x1f
beq v1,zero,0x0007c054
_lw a0,0x30(s8)
srl s1,s1,0x5
li v0,-0x1
sll s1,s1,0x2
sllv v0,v0,v1
addu s1,s5,s1
nor v0,zero,v0
lw v1,0x0(s1)
and v0,v1,v0
beq a0,zero,0x0007c05c
_sw v0,0x0(s1)
lw t9,-0x7a2c(gp)
jalr t9
_nop
b 0x0007c05c
_lw gp,0x10(s8)
lw t9,-0x7ad4(gp)
or a1,s3,zero
or a0,s0,zero
lw s6,0x0(s0)
or a3,s4,zero
jalr t9
_or a2,s2,zero
sll a1,s2,0x5
lw v1,0x2c(s8)
lw a0,0x0(s0)
lw gp,0x10(s8)
subu v1,v1,s4
or a0,a0,s6
addu v1,v1,a1
sltu v1,v1,s1
beq v1,zero,0x0007c13c
_sw a0,0x0(s0)
sll a0,s2,0x2
addu s0,s0,a0
b 0x0007c13c
_sw v0,0x0(s0)
lw t9,-0x7d50(gp)
addiu a0,s8,0x30
jalr t9
_lw a1,0x1c(s8)
lw gp,0x10(s8)
b 0x0007bf98
_or s3,v0,zero
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "uint FUN_0007bb94(undefined4 *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    /* WARNING: Could not recover jumptable at 0x0007c36c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}\n\n" (function_definition "uint FUN_0007bb94(undefined4 *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    /* WARNING: Could not recover jumptable at 0x0007c36c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" type_identifier (function_declarator "FUN_0007bb94(undefined4 *param_1,int param_2)" identifier (parameter_list "(undefined4 *param_1,int param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    /* WARNING: Could not recover jumptable at 0x0007c36c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "undefined4 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined4 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "undefined4 uVar33;" type_identifier identifier ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "undefined1 auStack_60 [24];" type_identifier (array_declarator "auStack_60 [24]" identifier [ number_literal ]) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" identifier = identifier) ;) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x10)" identifier = (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) ))))) ;) (expression_statement "puVar17 = *(undefined4 **)(param_2 + 0x14);" (assignment_expression "puVar17 = *(undefined4 **)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x14)" * (cast_expression "(undefined4 **)(param_2 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iVar14 + iVar18;" (assignment_expression "iVar7 = iVar14 + iVar18" identifier = (binary_expression "iVar14 + iVar18" identifier + identifier)) ;) (expression_statement "uVar25 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar25 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);" (assignment_expression "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5)" identifier = (cast_expression "(undefined4 *)(uVar25 + 0x1f >> 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + 0x1f >> 5)" ( (binary_expression "uVar25 + 0x1f >> 5" (binary_expression "uVar25 + 0x1f" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00097540" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_00097540" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar27 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 8)" * (cast_expression "(undefined4 **)(param_2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (iVar7 + 1) * 4;" (assignment_expression "uVar12 = (iVar7 + 1) * 4" identifier = (binary_expression "(iVar7 + 1) * 4" (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" if (parenthesized_expression "((int)puVar19 < iVar7 + 1)" ( (binary_expression "(int)puVar19 < iVar7 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "iVar7 + 1" identifier + number_literal)) )) (compound_statement "{\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }" { (if_statement "if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" if (parenthesized_expression "(uVar12 < 0x7f01)" ( (binary_expression "uVar12 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }" { (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar12 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" ( (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar31 = auStack_60 + iVar7;" (assignment_expression "puVar31 = auStack_60 + iVar7" identifier = (binary_expression "auStack_60 + iVar7" identifier + identifier)) ;) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7)" identifier = (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar7)" ( (binary_expression "&stack0xffffffb8 + iVar7" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" else (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" { (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" ( (pointer_expression "&local_30" & identifier) ))))) ;) }))) }) (else_clause "else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" else (compound_statement "{\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" { (expression_statement "iVar22 = (int)puVar19 + 1;" (assignment_expression "iVar22 = (int)puVar19 + 1" identifier = (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" if (parenthesized_expression "((uint)(iVar22 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar22 * 4) < 0x7f01" (call_expression "(uint)(iVar22 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar22 * 4)" ( (binary_expression "iVar22 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }" { (expression_statement "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar22 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar22 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar22 * 4 + 7U & 0xfffffff8" (binary_expression "iVar22 * 4 + 7U" (binary_expression "iVar22 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2)" identifier = (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar2)" ( (binary_expression "&stack0xffffffb8 + iVar2" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) (expression_statement "puVar31 = auStack_60 + iVar2;" (assignment_expression "puVar31 = auStack_60 + iVar2" identifier = (binary_expression "auStack_60 + iVar2" identifier + identifier)) ;) }) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" else (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" { (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" ( (pointer_expression "&local_30" & identifier) ))))) ;) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" identifier = identifier) ;) }))) (if_statement "if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" if (parenthesized_expression "(iVar7 != iVar22)" ( (binary_expression "iVar7 != iVar22" identifier != identifier) )) (compound_statement "{\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" { (expression_statement "iVar22 = iVar22 - iVar7;" (assignment_expression "iVar22 = iVar22 - iVar7" identifier = (binary_expression "iVar22 - iVar7" identifier - identifier)) ;) (expression_statement "puVar23 = puVar26 + iVar7;" (assignment_expression "puVar23 = puVar26 + iVar7" identifier = (binary_expression "puVar26 + iVar7" identifier + identifier)) ;) (do_statement "do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);" do (compound_statement "{\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) })) }))) (expression_statement "*(int *)(puVar31 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar31 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar31 + 0x10)" * (cast_expression "(int *)(puVar31 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar13 = puVar27;" (assignment_expression "puVar13 = puVar27" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);" (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26,puVar27,iVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar23 = *(undefined4 **)(param_2 + 0x18);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x18)" * (cast_expression "(undefined4 **)(param_2 + 0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" if (parenthesized_expression "(((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19))" ( (binary_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)" (parenthesized_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0))" ( (binary_expression "(puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" ( (comma_expression "puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar13 = puVar26" identifier = identifier) , (comma_expression "puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar17 = puVar23" identifier = identifier) , (comma_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26,puVar26,param_2 + 0x1c)" ( identifier , identifier , (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (binary_expression "iVar7 != 0" identifier != number_literal)))) ))) )) && (parenthesized_expression "((int)puVar23 < (int)puVar19)" ( (binary_expression "(int)puVar23 < (int)puVar19" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" { (expression_statement "piVar11 = puVar26 + (int)puVar23;" (assignment_expression "piVar11 = puVar26 + (int)puVar23" identifier = (binary_expression "puVar26 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar7 = *piVar11 + 1;" (assignment_expression "iVar7 = *piVar11 + 1" identifier = (binary_expression "*piVar11 + 1" (pointer_expression "*piVar11" * identifier) + number_literal)) ;) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" * identifier) = identifier) ;) (while_statement "while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" while (parenthesized_expression "((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)))" ( (parenthesized_expression "(iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))" ( (binary_expression "iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" (binary_expression "iVar7 == 0" identifier == number_literal) && (parenthesized_expression "(puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" ( (comma_expression "puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23" (assignment_expression "puVar23 = (undefined4 *)((int)puVar23 + 1)" identifier = (cast_expression "(undefined4 *)((int)puVar23 + 1)" ( (type_descriptor "undefined4 *" 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) )))) , (binary_expression "puVar19 != puVar23" identifier != identifier)) ))) )) )) (compound_statement "{\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" { (expression_statement "piVar1 = piVar11 + 1;" (assignment_expression "piVar1 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = *piVar1 + 1;" (assignment_expression "iVar7 = *piVar1 + 1" identifier = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" * identifier) = identifier) ;) })) })) (expression_statement "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));" (assignment_expression "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" identifier [ (binary_expression "uVar25 >> 5" identifier >> number_literal) ]) = (binary_expression "puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" identifier [ (binary_expression "uVar25 >> 5" identifier >> number_literal) ]) & (unary_expression "~(-1 << (uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar25 & 0x1f))" ( (binary_expression "-1 << (uVar25 & 0x1f)" number_literal << (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) ))) ))))) ;) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" ( (binary_expression "puVar19 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" { (expression_statement "puVar23 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 8)" * (cast_expression "(undefined4 **)(param_2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (if_statement "if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x1)" ( (binary_expression "puVar19 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" { (expression_statement "puVar13 = puVar26 + (int)puVar19;" (assignment_expression "puVar13 = puVar26 + (int)puVar19" identifier = (binary_expression "puVar26 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" identifier = identifier) ;) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (do_statement "do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);" do (compound_statement "{\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      }" { (expression_statement "*puVar17 = uVar10;" (assignment_expression "*puVar17 = uVar10" (pointer_expression "*puVar17" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar6 + 1;" (assignment_expression "puVar8 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != puVar13)" ( (binary_expression "puVar8 != puVar13" identifier != identifier) )) ;) (expression_statement "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);" (assignment_expression "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4)" identifier = (cast_expression "(undefined4 *)((int)puVar19 * 4 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 * 4 - 4)" ( (binary_expression "(int)puVar19 * 4 - 4" (binary_expression "(int)puVar19 * 4" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - number_literal) )))) ;) (expression_statement "puVar23 = puVar23 + (int)puVar19 + -1;" (assignment_expression "puVar23 = puVar23 + (int)puVar19 + -1" identifier = (binary_expression "puVar23 + (int)puVar19 + -1" (binary_expression "puVar23 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar23 = uVar10;" (assignment_expression "*puVar23 = uVar10" (pointer_expression "*puVar23" * identifier) = identifier) ;) })) (expression_statement "uVar12 = uVar25 >> 6;" (assignment_expression "uVar12 = uVar25 >> 6" identifier = (binary_expression "uVar25 >> 6" identifier >> number_literal)) ;) (expression_statement "puVar15 = (uint *)((int)puVar19 - uVar12);" (assignment_expression "puVar15 = (uint *)((int)puVar19 - uVar12)" identifier = (cast_expression "(uint *)((int)puVar19 - uVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 - uVar12)" ( (binary_expression "(int)puVar19 - uVar12" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) (if_statement "if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" if (parenthesized_expression "(0 < (int)puVar15)" ( (binary_expression "0 < (int)puVar15" number_literal < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" { (expression_statement "puVar19 = (undefined4 *)(uVar12 * 4);" (assignment_expression "puVar19 = (undefined4 *)(uVar12 * 4)" identifier = (cast_expression "(undefined4 *)(uVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 * 4)" ( (binary_expression "uVar12 * 4" identifier * number_literal) )))) ;) (expression_statement "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);" (assignment_expression "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b)" identifier = (cast_expression "(undefined4 *)((uVar25 << 0x1a) >> 0x1b)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar25 << 0x1a) >> 0x1b)" ( (binary_expression "(uVar25 << 0x1a) >> 0x1b" (parenthesized_expression "(uVar25 << 0x1a)" ( (binary_expression "uVar25 << 0x1a" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "puVar13 = puVar26 + uVar12;" (assignment_expression "puVar13 = puVar26 + uVar12" identifier = (binary_expression "puVar26 + uVar12" identifier + identifier)) ;) (if_statement "if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" if (parenthesized_expression "(puVar17 == (undefined4 *)0x0)" ( (binary_expression "puVar17 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }" { (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (if_statement "if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" if (parenthesized_expression "(puVar15 != (uint *)0x1)" ( (binary_expression "puVar15 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" { (expression_statement "puVar23 = puVar13 + 1;" (assignment_expression "puVar23 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (int)puVar15;" (assignment_expression "puVar13 = puVar13 + (int)puVar15" identifier = (binary_expression "puVar13 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (do_statement "do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);" do (compound_statement "{\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar13)" ( (binary_expression "puVar8 != puVar13" identifier != identifier) )) ;) (expression_statement "puVar16 = (uint *)((int)puVar15 * 4 + -4);" (assignment_expression "puVar16 = (uint *)((int)puVar15 * 4 + -4)" identifier = (cast_expression "(uint *)((int)puVar15 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 * 4 + -4)" ( (binary_expression "(int)puVar15 * 4 + -4" (binary_expression "(int)puVar15 * 4" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "param_1 = param_1 + (int)puVar15 + -1;" (assignment_expression "param_1 = param_1 + (int)puVar15 + -1" identifier = (binary_expression "param_1 + (int)puVar15 + -1" (binary_expression "param_1 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" else (compound_statement "{\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" { (expression_statement "(*(code *)PTR___gmpn_rshift_00097560)(puVar26);" (call_expression "(*(code *)PTR___gmpn_rshift_00097560)(puVar26)" (parenthesized_expression "(*(code *)PTR___gmpn_rshift_00097560)" ( (pointer_expression "*(code *)PTR___gmpn_rshift_00097560" * (cast_expression "(code *)PTR___gmpn_rshift_00097560" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26)" ( identifier ))) ;) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (if_statement "if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" { (expression_statement "puVar19 = param_1 + uVar12;" (assignment_expression "puVar19 = param_1 + uVar12" identifier = (binary_expression "param_1 + uVar12" identifier + identifier)) ;) (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (do_statement "do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);" do (compound_statement "{\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        }" { (expression_statement "param_1 = puVar6 + 1;" (assignment_expression "param_1 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar26 = puVar23 + 1;" (assignment_expression "puVar26 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar26;" (assignment_expression "puVar23 = puVar26" identifier = identifier) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(param_1 != puVar19)" ( (binary_expression "param_1 != puVar19" identifier != identifier) )) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }))) })) (if_statement "if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar4)" ( (binary_expression "local_2c == *(undefined4 **)puVar4" identifier == (pointer_expression "*(undefined4 **)puVar4" * (cast_expression "(undefined4 **)puVar4" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar25 + 1 >> 1;\n  }" { (return_statement "return uVar25 + 1 >> 1;" return (binary_expression "uVar25 + 1 >> 1" (binary_expression "uVar25 + 1" identifier + number_literal) >> number_literal) ;) })) (expression_statement "uVar33 = 0x7befc;" (assignment_expression "uVar33 = 0x7befc" identifier = number_literal) ;) (expression_statement "puVar23 = local_2c;" (assignment_expression "puVar23 = local_2c" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar28 + 0x23144;" (assignment_expression "puVar30 = puVar28 + 0x23144" identifier = (binary_expression "puVar28 + 0x23144" identifier + number_literal)) ;) (expression_statement "iVar7 = puVar23[2];" (assignment_expression "iVar7 = puVar23[2]" identifier = (subscript_expression "puVar23[2]" identifier [ number_literal ])) ;) (expression_statement "puVar32 = puVar31 + -0x60;" (assignment_expression "puVar32 = puVar31 + -0x60" identifier = (binary_expression "puVar31 + -0x60" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(puVar28 + 0x1b644);" (assignment_expression "puVar6 = *(undefined4 **)(puVar28 + 0x1b644)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x1b644)" * (cast_expression "(undefined4 **)(puVar28 + 0x1b644)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x1b644)" ( (binary_expression "puVar28 + 0x1b644" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x28) = puVar19;" (assignment_expression "*(undefined4 **)(puVar31 + -0x28) = puVar19" (pointer_expression "*(undefined4 **)(puVar31 + -0x28)" * (cast_expression "(undefined4 **)(puVar31 + -0x28)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar20 = *(uint *)(iVar7 + 0x20);" (assignment_expression "uVar20 = *(uint *)(iVar7 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x20)" * (cast_expression "(uint *)(iVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x20)" ( (binary_expression "iVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x48) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x48) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x48)" * (cast_expression "(undefined4 **)(puVar31 + -0x48)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)(puVar31 + -0x10) = param_1" (pointer_expression "*(undefined4 **)(puVar31 + -0x10)" * (cast_expression "(undefined4 **)(puVar31 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar21 = (uint *)(uVar20 >> 1);" (assignment_expression "puVar21 = (uint *)(uVar20 >> 1)" identifier = (cast_expression "(uint *)(uVar20 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar20 >> 1)" ( (binary_expression "uVar20 >> 1" identifier >> number_literal) )))) ;) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(int *)(puVar31 + -0x14) = param_2;" (assignment_expression "*(int *)(puVar31 + -0x14) = param_2" (pointer_expression "*(int *)(puVar31 + -0x14)" * (cast_expression "(int *)(puVar31 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar31 + -0x18) = uVar25;" (assignment_expression "*(uint *)(puVar31 + -0x18) = uVar25" (pointer_expression "*(uint *)(puVar31 + -0x18)" * (cast_expression "(uint *)(puVar31 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = uVar10" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" * (cast_expression "(undefined4 *)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = (int)puVar21 + 0x1f >> 5;" (assignment_expression "iVar7 = (int)puVar21 + 0x1f >> 5" identifier = (binary_expression "(int)puVar21 + 0x1f >> 5" (binary_expression "(int)puVar21 + 0x1f" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal)) ;) (expression_statement "*(uint *)(puVar31 + -0x24) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x24) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x24)" * (cast_expression "(uint *)(puVar31 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar33;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar33" (pointer_expression "*(undefined4 *)(puVar31 + -4)" * (cast_expression "(undefined4 *)(puVar31 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar12 = iVar7 * 4;" (assignment_expression "uVar12 = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x3c) = iVar7;" (assignment_expression "*(int *)(puVar31 + -0x3c) = iVar7" (pointer_expression "*(int *)(puVar31 + -0x3c)" * (cast_expression "(int *)(puVar31 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x3c)" ( (binary_expression "puVar31 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0xc) = puVar27;" (assignment_expression "*(undefined4 **)(puVar31 + -0xc) = puVar27" (pointer_expression "*(undefined4 **)(puVar31 + -0xc)" * (cast_expression "(undefined4 **)(puVar31 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x1c) = puVar26;" (assignment_expression "*(undefined4 **)(puVar31 + -0x1c) = puVar26" (pointer_expression "*(undefined4 **)(puVar31 + -0x1c)" * (cast_expression "(undefined4 **)(puVar31 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x20) = puVar4;" (assignment_expression "*(undefined **)(puVar31 + -0x20) = puVar4" (pointer_expression "*(undefined **)(puVar31 + -0x20)" * (cast_expression "(undefined **)(puVar31 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x50) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x50) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" * (cast_expression "(undefined4 *)(puVar31 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar31 + -0x44) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x44) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x44)" * (cast_expression "(uint *)(puVar31 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) (if_statement "if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" if (parenthesized_expression "(uVar12 < 0x7f01)" ( (binary_expression "uVar12 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }" { (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar12 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" ( (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + iVar7 + -0x60;" (assignment_expression "puVar32 = puVar31 + iVar7 + -0x60" identifier = (binary_expression "puVar31 + iVar7 + -0x60" (binary_expression "puVar31 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);" (assignment_expression "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50)" identifier = (cast_expression "(undefined4 *)(puVar31 + iVar7 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + iVar7 + -0x50)" ( (binary_expression "puVar31 + iVar7 + -0x50" (binary_expression "puVar31 + iVar7" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar19 = puVar13;" (assignment_expression "puVar19 = puVar13" identifier = identifier) ;) }) (else_clause "else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" else (compound_statement "{\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" { (expression_statement "puVar19 = *(undefined4 **)(puVar31 + -0x44);" (assignment_expression "puVar19 = *(undefined4 **)(puVar31 + -0x44)" identifier = (pointer_expression "*(undefined4 **)(puVar31 + -0x44)" * (cast_expression "(undefined4 **)(puVar31 + -0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);" (assignment_expression "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" (parenthesized_expression "(**(code **)(puVar28 + 0x1b3f4))" ( (pointer_expression "**(code **)(puVar28 + 0x1b3f4)" * (pointer_expression "*(code **)(puVar28 + 0x1b3f4)" * (cast_expression "(code **)(puVar28 + 0x1b3f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x1b3f4)" ( (binary_expression "puVar28 + 0x1b3f4" identifier + number_literal) ))))) )) (argument_list "(puVar31 + -0x30,puVar19)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar24 = *(uint **)(puVar30 + -0x7fd4);" (assignment_expression "puVar24 = *(uint **)(puVar30 + -0x7fd4)" identifier = (pointer_expression "*(uint **)(puVar30 + -0x7fd4)" * (cast_expression "(uint **)(puVar30 + -0x7fd4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7fd4)" ( (binary_expression "puVar30 + -0x7fd4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;" (assignment_expression "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f" (pointer_expression "*(uint *)(puVar31 + -0x40)" * (cast_expression "(uint *)(puVar31 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)puVar21 & 0x1f" (cast_expression "(uint)puVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = (binary_expression "puVar24 + -0x111b" identifier + number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = puVar21;" (assignment_expression "puVar5 = puVar21" identifier = identifier) ;) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" while (parenthesized_expression "(puVar3 = puVar5, puVar3 <= puVar16)" ( (comma_expression "puVar3 = puVar5, puVar3 <= puVar16" (assignment_expression "puVar3 = puVar5" identifier = identifier) , (binary_expression "puVar3 <= puVar16" identifier <= identifier)) )) (compound_statement "{\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" { (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" identifier = (cast_expression "(undefined4 *)puVar23[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar23[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f)" identifier = (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 & 0x1f)" ( (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "puVar24 = puVar13 + uVar12;" (assignment_expression "puVar24 = puVar13 + uVar12" identifier = (binary_expression "puVar13 + uVar12" identifier + identifier)) ;) (if_statement "if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" if (parenthesized_expression "(puVar26 == (undefined4 *)0x0)" ( (binary_expression "puVar26 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }" { (expression_statement "(**(code **)(puVar31 + -0x34))(puVar24,puVar19);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar24,puVar19)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" ( (pointer_expression "**(code **)(puVar31 + -0x34)" * (pointer_expression "*(code **)(puVar31 + -0x34)" * (cast_expression "(code **)(puVar31 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) )) (argument_list "(puVar24,puVar19)" ( identifier , identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" else (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" { (expression_statement "(**(code **)(puVar31 + -0x34))(puVar27);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar27)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" ( (pointer_expression "**(code **)(puVar31 + -0x34)" * (pointer_expression "*(code **)(puVar31 + -0x34)" * (cast_expression "(code **)(puVar31 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) )) (argument_list "(puVar27)" ( identifier ))) ;) (expression_statement "puVar15 = *(uint **)(puVar31 + -0x3c);" (assignment_expression "puVar15 = *(uint **)(puVar31 + -0x3c)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x3c)" * (cast_expression "(uint **)(puVar31 + -0x3c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x3c)" ( (binary_expression "puVar31 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);" (assignment_expression "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" identifier = (pointer_expression "*(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x50) + -0x7ad4)" ( (binary_expression "*(int *)(puVar31 + -0x50) + -0x7ad4" (pointer_expression "*(int *)(puVar31 + -0x50)" * (cast_expression "(int *)(puVar31 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x38) = *puVar24;" (assignment_expression "*(uint *)(puVar31 + -0x38) = *puVar24" (pointer_expression "*(uint *)(puVar31 + -0x38)" * (cast_expression "(uint *)(puVar31 + -0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))) = (pointer_expression "*puVar24" * identifier)) ;) (expression_statement "puVar19 = puVar27;" (assignment_expression "puVar19 = puVar27" identifier = identifier) ;) (expression_statement "puVar17 = puVar26;" (assignment_expression "puVar17 = puVar26" identifier = identifier) ;) (expression_statement "uVar10 = (*pcVar29)(puVar24,puVar27);" (assignment_expression "uVar10 = (*pcVar29)(puVar24,puVar27)" identifier = (call_expression "(*pcVar29)(puVar24,puVar27)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar24,puVar27)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x40);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x40)" identifier = (pointer_expression "*(int *)(puVar31 + -0x40)" * (cast_expression "(int *)(puVar31 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);" (assignment_expression "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" * identifier) = (binary_expression "*puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" * identifier) | (pointer_expression "*(uint *)(puVar31 + -0x38)" * (cast_expression "(uint *)(puVar31 + -0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))))) ;) (if_statement "if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" if (parenthesized_expression "(0x20 < (uint)(iVar7 + (int)puVar26))" ( (binary_expression "0x20 < (uint)(iVar7 + (int)puVar26)" number_literal < (call_expression "(uint)(iVar7 + (int)puVar26)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 + (int)puVar26)" ( (binary_expression "iVar7 + (int)puVar26" identifier + (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" { (expression_statement "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;" (assignment_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10" (pointer_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" * (cast_expression "(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + *(int *)(puVar31 + -0x44))" ( (binary_expression "(int)puVar24 + *(int *)(puVar31 + -0x44)" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar31 + -0x44)" * (cast_expression "(int *)(puVar31 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) ))))) )))) = identifier) ;) })) }))) (expression_statement "uVar12 = (uint)puVar3 >> 5;" (assignment_expression "uVar12 = (uint)puVar3 >> 5" identifier = (binary_expression "(uint)puVar3 >> 5" (cast_expression "(uint)puVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "puVar9 = puVar3;" (assignment_expression "puVar9 = puVar3" identifier = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar21 + (int)puVar3);" (assignment_expression "puVar5 = (uint *)((int)puVar21 + (int)puVar3)" identifier = (cast_expression "(uint *)((int)puVar21 + (int)puVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar3)" ( (binary_expression "(int)puVar21 + (int)puVar3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" if (parenthesized_expression "(puVar9 == puVar16)" ( (binary_expression "puVar9 == puVar16" identifier == identifier) )) (compound_statement "{\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }" { (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" identifier = (pointer_expression "*(int *)(puVar31 + -0x30)" * (cast_expression "(int *)(puVar31 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);" statement_identifier : (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" identifier = (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) ))))) ;)) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" else (compound_statement "{\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" { (expression_statement "iVar7 = (int)puVar16 + (0x1f - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x1f - (int)puVar9)" identifier = (binary_expression "(int)puVar16 + (0x1f - (int)puVar9)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x1f - (int)puVar9)" ( (binary_expression "0x1f - (int)puVar9" number_literal - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar21 = puVar13 + ((uint)puVar9 >> 5);" (assignment_expression "puVar21 = puVar13 + ((uint)puVar9 >> 5)" identifier = (binary_expression "puVar13 + ((uint)puVar9 >> 5)" identifier + (parenthesized_expression "((uint)puVar9 >> 5)" ( (binary_expression "(uint)puVar9 >> 5" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" { (expression_statement "iVar7 = (int)puVar16 + (0x3e - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x3e - (int)puVar9)" identifier = (binary_expression "(int)puVar16 + (0x3e - (int)puVar9)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x3e - (int)puVar9)" ( (binary_expression "0x3e - (int)puVar9" number_literal - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" identifier = (cast_expression "(undefined4 *)puVar23[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar23[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f)" identifier = (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 & 0x1f)" ( (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar9;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar9" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar24 = (uint *)(iVar7 >> 5);" (assignment_expression "puVar24 = (uint *)(iVar7 >> 5)" identifier = (cast_expression "(uint *)(iVar7 >> 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 >> 5)" ( (binary_expression "iVar7 >> 5" identifier >> number_literal) )))) ;) (expression_statement "FUN_0007bb94(puVar27,puVar19);" (call_expression "FUN_0007bb94(puVar27,puVar19)" identifier (argument_list "(puVar27,puVar19)" ( identifier , identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (if_statement "if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" if (parenthesized_expression "(puVar23 == (undefined4 *)0x0)" ( (binary_expression "puVar23 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }" { (if_statement "if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" if (parenthesized_expression "(puVar24 != (uint *)0x0)" ( (binary_expression "puVar24 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" { (expression_statement "puVar19 = (undefined4 *)*puVar27;" (assignment_expression "puVar19 = (undefined4 *)*puVar27" identifier = (cast_expression "(undefined4 *)*puVar27" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar27" * identifier))) ;) (if_statement "if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" if (parenthesized_expression "(puVar24 != (uint *)0x1)" ( (binary_expression "puVar24 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" { (expression_statement "puVar26 = puVar27 + 1;" (assignment_expression "puVar26 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar27 + (int)puVar24;" (assignment_expression "puVar27 = puVar27 + (int)puVar24" identifier = (binary_expression "puVar27 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = puVar21;" (assignment_expression "puVar9 = puVar21" identifier = identifier) ;) (do_statement "do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);" do (compound_statement "{\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          }" { (expression_statement "*puVar9 = (uint)puVar19;" (assignment_expression "*puVar9 = (uint)puVar19" (pointer_expression "*puVar9" * identifier) = (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = (undefined4 *)*puVar26;" (assignment_expression "puVar19 = (undefined4 *)*puVar26" identifier = (cast_expression "(undefined4 *)*puVar26" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (expression_statement "puVar26 = puVar6;" (assignment_expression "puVar26 = puVar6" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar27)" ( (binary_expression "puVar6 != puVar27" identifier != identifier) )) ;) (expression_statement "puVar21 = puVar21 + (int)puVar24 + -1;" (assignment_expression "puVar21 = puVar21 + (int)puVar24 + -1" identifier = (binary_expression "puVar21 + (int)puVar24 + -1" (binary_expression "puVar21 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar21 = (uint)puVar19;" (assignment_expression "*puVar21 = (uint)puVar19" (pointer_expression "*puVar21" * identifier) = (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) }) (else_clause "else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" else (compound_statement "{\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" { (expression_statement "uVar25 = *puVar21;" (assignment_expression "uVar25 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "puVar15 = puVar24;" (assignment_expression "puVar15 = puVar24" identifier = identifier) ;) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" identifier = identifier) ;) (expression_statement "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);" (assignment_expression "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" identifier = (call_expression "(**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" (parenthesized_expression "(**(code **)(puVar30 + -0x7ad4))" ( (pointer_expression "**(code **)(puVar30 + -0x7ad4)" * (pointer_expression "*(code **)(puVar30 + -0x7ad4)" * (cast_expression "(code **)(puVar30 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7ad4)" ( (binary_expression "puVar30 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar21,puVar27)" ( identifier , identifier )))) ;) (expression_statement "puVar19 = (undefined4 *)((int)puVar24 * 0x20);" (assignment_expression "puVar19 = (undefined4 *)((int)puVar24 * 0x20)" identifier = (cast_expression "(undefined4 *)((int)puVar24 * 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 * 0x20)" ( (binary_expression "(int)puVar24 * 0x20" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x34);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x34)" identifier = (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar21 = *puVar21 | uVar25;" (assignment_expression "*puVar21 = *puVar21 | uVar25" (pointer_expression "*puVar21" * identifier) = (binary_expression "*puVar21 | uVar25" (pointer_expression "*puVar21" * identifier) | identifier)) ;) (if_statement "if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" if (parenthesized_expression "((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16)" ( (binary_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16" (cast_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar7 - (int)puVar23) + (int)puVar19)" ( (binary_expression "(iVar7 - (int)puVar23) + (int)puVar19" (parenthesized_expression "(iVar7 - (int)puVar23)" ( (binary_expression "iVar7 - (int)puVar23" identifier - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) )) (compound_statement "{\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" { (expression_statement "puVar21 = puVar21 + (int)puVar24;" (assignment_expression "puVar21 = puVar21 + (int)puVar24" identifier = (binary_expression "puVar21 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar21 = uVar12;" (assignment_expression "*puVar21 = uVar12" (pointer_expression "*puVar21" * identifier) = identifier) ;) })) }))) (expression_statement "uVar12 = (uint)puVar16 & 0x1f;" (assignment_expression "uVar12 = (uint)puVar16 & 0x1f" identifier = (binary_expression "(uint)puVar16 & 0x1f" (cast_expression "(uint)puVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" identifier = (pointer_expression "*(int *)(puVar31 + -0x30)" * (cast_expression "(int *)(puVar31 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 == 0) goto LAB_0007c054;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c054;" goto statement_identifier ;)) (expression_statement "puVar16 = puVar13 + ((uint)puVar16 >> 5);" (assignment_expression "puVar16 = puVar13 + ((uint)puVar16 >> 5)" identifier = (binary_expression "puVar13 + ((uint)puVar16 >> 5)" identifier + (parenthesized_expression "((uint)puVar16 >> 5)" ( (binary_expression "(uint)puVar16 >> 5" (cast_expression "(uint)puVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*puVar16 = *puVar16 & ~(-1 << uVar12);" (assignment_expression "*puVar16 = *puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" * identifier) = (binary_expression "*puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" * identifier) & (unary_expression "~(-1 << uVar12)" ~ (parenthesized_expression "(-1 << uVar12)" ( (binary_expression "-1 << uVar12" number_literal << identifier) ))))) ;) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" identifier = (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) ))))) ;) }))) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" statement_identifier : (if_statement "if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" if (parenthesized_expression "(*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48))" ( (binary_expression "*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)" (pointer_expression "*(uint *)(puVar31 + -0x2c)" * (cast_expression "(uint *)(puVar31 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(uint **)(puVar31 + -0x48)" * (pointer_expression "*(uint **)(puVar31 + -0x48)" * (cast_expression "(uint **)(puVar31 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) )))))) )) (compound_statement "{\n    return **(uint **)(puVar31 + -0x48);\n  }" { (return_statement "return **(uint **)(puVar31 + -0x48);" return (pointer_expression "**(uint **)(puVar31 + -0x48)" * (pointer_expression "*(uint **)(puVar31 + -0x48)" * (cast_expression "(uint **)(puVar31 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = __gmp_randinit_lc_2exp;" (assignment_expression "pcVar34 = __gmp_randinit_lc_2exp" identifier = identifier) ;) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;" (assignment_expression "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40" (pointer_expression "*(code **)(puVar32 + -0x28)" * (cast_expression "(code **)(puVar32 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar29 + 0x22e40" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar32 + -4) = pcVar34;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar34" (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 "*(undefined4 **)(puVar32 + -8) = puVar13;" (assignment_expression "*(undefined4 **)(puVar32 + -8) = puVar13" (pointer_expression "*(undefined4 **)(puVar32 + -8)" * (cast_expression "(undefined4 **)(puVar32 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -8)" ( (binary_expression "puVar32 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0xc) = puVar23;" (assignment_expression "*(undefined4 **)(puVar32 + -0xc) = puVar23" (pointer_expression "*(undefined4 **)(puVar32 + -0xc)" * (cast_expression "(undefined4 **)(puVar32 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xc)" ( (binary_expression "puVar32 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0x10) = puVar27;" (assignment_expression "*(undefined4 **)(puVar32 + -0x10) = puVar27" (pointer_expression "*(undefined4 **)(puVar32 + -0x10)" * (cast_expression "(undefined4 **)(puVar32 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x10)" ( (binary_expression "puVar32 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x14) = puVar24;" (assignment_expression "*(uint **)(puVar32 + -0x14) = puVar24" (pointer_expression "*(uint **)(puVar32 + -0x14)" * (cast_expression "(uint **)(puVar32 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x14)" ( (binary_expression "puVar32 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x18) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x18) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x18)" * (cast_expression "(uint **)(puVar32 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x18)" ( (binary_expression "puVar32 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x1c) = puVar21;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = puVar21" (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) ;) (if_statement "if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" if (parenthesized_expression "(puVar17 != (undefined4 *)0x0)" ( (binary_expression "puVar17 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" { (expression_statement "uVar12 = (int)puVar17 + 0x1fU >> 5;" (assignment_expression "uVar12 = (int)puVar17 + 0x1fU >> 5" identifier = (binary_expression "(int)puVar17 + 0x1fU >> 5" (binary_expression "(int)puVar17 + 0x1fU" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal)) ;) (expression_statement "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);" (assignment_expression "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" * (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar29 + 0x1b30c)" * (pointer_expression "*(undefined4 **)(pcVar29 + 0x1b30c)" * (cast_expression "(undefined4 **)(pcVar29 + 0x1b30c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x1b30c)" ( (binary_expression "pcVar29 + 0x1b30c" identifier + number_literal) ))))))) )) (argument_list "(0x24)" ( number_literal )))) ;) (expression_statement "iVar18 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar18 = *(int *)(puVar32 + -0x28)" identifier = (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar7 + 8) = iVar14;" (assignment_expression "*(int *)(iVar7 + 8) = iVar14" (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar29 = *(code **)(iVar18 + -0x7ebc);" (assignment_expression "pcVar29 = *(code **)(iVar18 + -0x7ebc)" identifier = (pointer_expression "*(code **)(iVar18 + -0x7ebc)" * (cast_expression "(code **)(iVar18 + -0x7ebc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x7ebc)" ( (binary_expression "iVar18 + -0x7ebc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;" (assignment_expression "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar18 + -0x7fe4)" * (cast_expression "(int *)(iVar18 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -0x7fe4)" ( (binary_expression "iVar18 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar29)(iVar14,puVar17);" (call_expression "(*pcVar29)(iVar14,puVar17)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(iVar14,puVar17)" ( identifier , identifier ))) ;) (expression_statement "iVar7 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar7 = *(int *)(puVar32 + -0x28)" identifier = (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = *(undefined4 **)(iVar14 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(iVar14 + 8)" identifier = (pointer_expression "*(undefined4 **)(iVar14 + 8)" * (cast_expression "(undefined4 **)(iVar14 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" { (expression_statement "puVar26 = puVar27;" (assignment_expression "puVar26 = puVar27" identifier = identifier) ;) (do_statement "do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);" do (compound_statement "{\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      }" { (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar26 = 0;" (assignment_expression "*puVar26 = 0" (pointer_expression "*puVar26" * identifier) = number_literal) ;) (expression_statement "puVar26 = puVar23;" (assignment_expression "puVar26 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "(puVar23 != puVar27 + uVar12)" ( (binary_expression "puVar23 != puVar27 + uVar12" identifier != (binary_expression "puVar27 + uVar12" identifier + identifier)) )) ;) })) (expression_statement "pcVar29 = *(code **)(iVar7 + -0x7f10);" (assignment_expression "pcVar29 = *(code **)(iVar7 + -0x7f10)" identifier = (pointer_expression "*(code **)(iVar7 + -0x7f10)" * (cast_expression "(code **)(iVar7 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + -0x7f10)" ( (binary_expression "iVar7 + -0x7f10" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar14 + 4) = uVar12;" (assignment_expression "*(uint *)(iVar14 + 4) = uVar12" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar27 = 1;" (assignment_expression "*puVar27 = 1" (pointer_expression "*puVar27" * identifier) = number_literal) ;) (expression_statement "(*pcVar29)(iVar14 + 0xc);" (call_expression "(*pcVar29)(iVar14 + 0xc)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(iVar14 + 0xc)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);" (call_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17)" (parenthesized_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))" ( (pointer_expression "**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" * (pointer_expression "*(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" * (cast_expression "(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x28) + -0x7ea4)" ( (binary_expression "*(int *)(puVar32 + -0x28) + -0x7ea4" (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar14 + 0xc,puVar19,puVar17)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) , identifier , identifier ))) ;) (if_statement "if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" if (parenthesized_expression "(*(int *)(iVar14 + 0x10) == 0)" ( (binary_expression "*(int *)(iVar14 + 0x10) == 0" (pointer_expression "*(int *)(iVar14 + 0x10)" * (cast_expression "(int *)(iVar14 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" { (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" * (cast_expression "(undefined4 *)(iVar14 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined4 **)(iVar14 + 0x14) = 0;" (assignment_expression "**(undefined4 **)(iVar14 + 0x14) = 0" (pointer_expression "**(undefined4 **)(iVar14 + 0x14)" * (pointer_expression "*(undefined4 **)(iVar14 + 0x14)" * (cast_expression "(undefined4 **)(iVar14 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) ))))) = number_literal) ;) })) (expression_statement "*(uint **)(iVar14 + 0x1c) = puVar15;" (assignment_expression "*(uint **)(iVar14 + 0x1c) = puVar15" (pointer_expression "*(uint **)(iVar14 + 0x1c)" * (cast_expression "(uint **)(iVar14 + 0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x1c)" ( (binary_expression "iVar14 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(iVar14 + 0x20) = puVar17;" (assignment_expression "*(undefined4 **)(iVar14 + 0x20) = puVar17" (pointer_expression "*(undefined4 **)(iVar14 + 0x20)" * (cast_expression "(undefined4 **)(iVar14 + 0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);" (assignment_expression "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0)" (pointer_expression "*(uint *)(iVar14 + 0x18)" * (cast_expression "(uint *)(iVar14 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))) = (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar15 != (uint *)0x0)" ( (binary_expression "puVar15 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (return_statement "return (uint)(puVar15 != (uint *)0x0);" return (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar15 != (uint *)0x0)" ( (binary_expression "puVar15 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (expression_statement "pcVar34 = *(code **)(pcVar29 + 0x1b220);" (assignment_expression "pcVar34 = *(code **)(pcVar29 + 0x1b220)" identifier = (pointer_expression "*(code **)(pcVar29 + 0x1b220)" * (cast_expression "(code **)(pcVar29 + 0x1b220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x1b220)" ( (binary_expression "pcVar29 + 0x1b220" identifier + number_literal) ))))) ;) (expression_statement "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);" (assignment_expression "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" identifier = (cast_expression "(int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" ( (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c84" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" * (cast_expression "(int *)(pcVar29 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar29 + 0x1ae6c)" ( (binary_expression "pcVar29 + 0x1ae6c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);" (call_expression "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" ( identifier , number_literal , (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c78" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" * (cast_expression "(int *)(pcVar29 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar29 + 0x1ae6c)" ( (binary_expression "pcVar29 + 0x1ae6c" identifier + number_literal) )))) + number_literal) ))) ;) comment comment (expression_statement "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);" (assignment_expression "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" * (cast_expression "(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar34 + 0x1ae80)" * (pointer_expression "*(undefined4 **)(pcVar34 + 0x1ae80)" * (cast_expression "(undefined4 **)(pcVar34 + 0x1ae80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x1ae80)" ( (binary_expression "pcVar34 + 0x1ae80" identifier + number_literal) ))))))) )) (argument_list "(piVar11[2],*piVar11 << 2)" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) , (binary_expression "*piVar11 << 2" (pointer_expression "*piVar11" * identifier) << number_literal) )))) ;) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "gmp_randalg_t": Some values do not have unique names */\n\nulong lc(mp_ptr rp,__gmp_randstate_struct *rstate)\n\n{\n  int *piVar1;\n  mp_limb_t **ppmVar2;\n  __mpz_struct *p_Var3;\n  undefined *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  mp_limb_t **ppmVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  mp_ptr pmVar12;\n  int *piVar13;\n  undefined4 *puVar14;\n  mp_limb_t mVar16;\n  uint uVar17;\n  __gmp_randstate_struct *p_Var18;\n  int iVar19;\n  int *piVar20;\n  int *piVar21;\n  mp_limb_t *pmVar22;\n  void *pvVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  int *piVar26;\n  undefined1 *puVar27;\n  mp_limb_t *pmVar28;\n  int *piVar29;\n  __gmp_randstate_struct *p_Var30;\n  gmp_randalg_t gVar31;\n  __gmp_randstate_struct *p_Var32;\n  undefined *puVar33;\n  undefined *puVar34;\n  int iVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  code *pcVar38;\n  code *pcVar39;\n  undefined1 auStack_60 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t *local_2c;\n  undefined4 *puVar15;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar36 = auStack_60;\n  iVar19 = rstate->_mp_seed[0]._mp_size;\n  pvVar23 = (rstate->_mp_algdata)._mp_lc;\n  pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc;\n  puVar10 = (undefined1 *)(iVar19 + (int)pvVar23);\n  gVar31 = rstate[1]._mp_alg;\n  pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5);\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d;\n  uVar17 = (int)(puVar10 + 1) * 4;\n  if ((int)pmVar24 < (int)(puVar10 + 1)) {\n    if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n  }\n  else {\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }\n  *(void **)(puVar36 + 0x10) = pvVar23;\n  p_Var18 = p_Var32;\n  (*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19);\n  pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size;\n  if (((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)) {\n    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;\n    mVar16 = *piVar21 + 1;\n    *piVar21 = mVar16;\n    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }\n  }\n  piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5);\n  *piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f));\n  if (pmVar24 != (mp_limb_t *)0x0) {\n    pmVar28 = rstate->_mp_seed[0]._mp_d;\n    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;\n    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }\n    *pmVar28 = mVar16;\n  }\n  uVar17 = gVar31 >> 6;\n  piVar20 = (int *)((int)pmVar24 - uVar17);\n  piVar21 = piVar20;\n  if (0 < (int)piVar20) {\n    pmVar24 = (mp_limb_t *)(uVar17 * 4);\n    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);\n    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);\n    if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(mp_limb_t **)puVar4) {\n    return gVar31 + 1 >> 1;\n  }\n  pcVar38 = randget_lc;\n  pmVar28 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar34 = puVar33 + 0x23144;\n  mVar16 = pmVar28[2];\n  puVar37 = puVar36 + -0x60;\n  puVar6 = *(undefined4 **)(puVar33 + 0x1b644);\n  *(mp_limb_t **)(puVar36 + -0x28) = pmVar24;\n  *(undefined1 **)(puVar36 + -8) = auStack_60;\n  uVar25 = *(uint *)(mVar16 + 0x20);\n  *(undefined4 **)(puVar36 + -0x48) = puVar6;\n  *(mp_ptr *)(puVar36 + -0x10) = rp;\n  piVar26 = (int *)(uVar25 >> 1);\n  uVar7 = *puVar6;\n  *(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate;\n  *(gmp_randalg_t *)(puVar36 + -0x18) = gVar31;\n  *(undefined4 *)(puVar36 + -0x2c) = uVar7;\n  iVar19 = (int)((int)piVar26 + 0x1f) >> 5;\n  *(uint *)(puVar36 + -0x24) = uVar17;\n  *(code **)(puVar36 + -4) = pcVar38;\n  uVar17 = iVar19 * 4;\n  *(int *)(puVar36 + -0x3c) = iVar19;\n  *(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32;\n  *(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30;\n  *(undefined **)(puVar36 + -0x20) = puVar4;\n  *(undefined **)(puVar36 + -0x50) = puVar34;\n  *(undefined4 *)(puVar36 + -0x30) = 0;\n  *(uint *)(puVar36 + -0x44) = uVar17;\n  piVar20 = piVar21;\n  if (uVar17 < 0x7f01) {\n    iVar19 = -(uVar17 + 7 & 0xfffffff8);\n    puVar37 = puVar36 + iVar19 + -0x60;\n    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);\n    p_Var32 = p_Var18;\n  }\n  else {\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }\n  piVar29 = *(int **)(puVar34 + -0x7fd4);\n  *(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f;\n  *(int **)(puVar36 + -0x34) = piVar29 + -0x111b;\n  uVar17 = 0;\n  piVar5 = piVar26;\n  piVar13 = (int *)0x0;\n  while (piVar1 = piVar5, piVar1 <= piVar21) {\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;\n    if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }\n    uVar17 = (uint)piVar1 >> 5;\n    piVar13 = piVar1;\n    piVar5 = (int *)((int)piVar26 + (int)piVar1);\n  }\n  if (piVar13 == piVar21) {\n    iVar19 = *(int *)(puVar36 + -0x30);\nLAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n    if (iVar19 == 0) goto LAB_0007c05c;\n  }\n  else {\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }\n  (*pcVar38)();\n  puVar34 = *(undefined **)(puVar36 + -0x50);\nLAB_0007c05c:\n  if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {\n    return **(ulong **)(puVar36 + -0x48);\n  }\n  pcVar38 = *(code **)(puVar34 + -0x7b70);\n  pcVar39 = __gmp_randinit_lc_2exp;\n  (*pcVar38)();\n  *(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40;\n  *(code **)(puVar37 + -4) = pcVar39;\n  *(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18;\n  *(mp_limb_t **)(puVar37 + -0xc) = pmVar28;\n  *(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30;\n  *(int **)(puVar37 + -0x14) = piVar29;\n  *(int **)(puVar37 + -0x18) = piVar21;\n  *(int **)(puVar37 + -0x1c) = piVar26;\n  if (pmVar22 != (mp_limb_t *)0x0) {\n    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;\n    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);\n    iVar35 = *(int *)(puVar37 + -0x28);\n    *(int *)(iVar19 + 8) = iVar11;\n    pcVar38 = *(code **)(iVar35 + -0x7ebc);\n    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;\n    (*pcVar38)(iVar11,pmVar22);\n    iVar19 = *(int *)(puVar37 + -0x28);\n    puVar6 = *(undefined4 **)(iVar11 + 8);\n    if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }\n    pcVar38 = *(code **)(iVar19 + -0x7f10);\n    *(uint *)(iVar11 + 4) = uVar17;\n    *puVar6 = 1;\n    (*pcVar38)(iVar11 + 0xc);\n    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);\n    if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }\n    *(int **)(iVar11 + 0x1c) = piVar20;\n    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;\n    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);\n    return (uint)(piVar20 != (int *)0x0);\n  }\n  uVar9 = (**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    );\n  return uVar9;\n}\n\n" comment (function_definition "ulong lc(mp_ptr rp,__gmp_randstate_struct *rstate)\n\n{\n  int *piVar1;\n  mp_limb_t **ppmVar2;\n  __mpz_struct *p_Var3;\n  undefined *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  mp_limb_t **ppmVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  mp_ptr pmVar12;\n  int *piVar13;\n  undefined4 *puVar14;\n  mp_limb_t mVar16;\n  uint uVar17;\n  __gmp_randstate_struct *p_Var18;\n  int iVar19;\n  int *piVar20;\n  int *piVar21;\n  mp_limb_t *pmVar22;\n  void *pvVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  int *piVar26;\n  undefined1 *puVar27;\n  mp_limb_t *pmVar28;\n  int *piVar29;\n  __gmp_randstate_struct *p_Var30;\n  gmp_randalg_t gVar31;\n  __gmp_randstate_struct *p_Var32;\n  undefined *puVar33;\n  undefined *puVar34;\n  int iVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  code *pcVar38;\n  code *pcVar39;\n  undefined1 auStack_60 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t *local_2c;\n  undefined4 *puVar15;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar36 = auStack_60;\n  iVar19 = rstate->_mp_seed[0]._mp_size;\n  pvVar23 = (rstate->_mp_algdata)._mp_lc;\n  pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc;\n  puVar10 = (undefined1 *)(iVar19 + (int)pvVar23);\n  gVar31 = rstate[1]._mp_alg;\n  pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5);\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d;\n  uVar17 = (int)(puVar10 + 1) * 4;\n  if ((int)pmVar24 < (int)(puVar10 + 1)) {\n    if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n  }\n  else {\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }\n  *(void **)(puVar36 + 0x10) = pvVar23;\n  p_Var18 = p_Var32;\n  (*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19);\n  pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size;\n  if (((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)) {\n    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;\n    mVar16 = *piVar21 + 1;\n    *piVar21 = mVar16;\n    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }\n  }\n  piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5);\n  *piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f));\n  if (pmVar24 != (mp_limb_t *)0x0) {\n    pmVar28 = rstate->_mp_seed[0]._mp_d;\n    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;\n    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }\n    *pmVar28 = mVar16;\n  }\n  uVar17 = gVar31 >> 6;\n  piVar20 = (int *)((int)pmVar24 - uVar17);\n  piVar21 = piVar20;\n  if (0 < (int)piVar20) {\n    pmVar24 = (mp_limb_t *)(uVar17 * 4);\n    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);\n    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);\n    if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(mp_limb_t **)puVar4) {\n    return gVar31 + 1 >> 1;\n  }\n  pcVar38 = randget_lc;\n  pmVar28 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar34 = puVar33 + 0x23144;\n  mVar16 = pmVar28[2];\n  puVar37 = puVar36 + -0x60;\n  puVar6 = *(undefined4 **)(puVar33 + 0x1b644);\n  *(mp_limb_t **)(puVar36 + -0x28) = pmVar24;\n  *(undefined1 **)(puVar36 + -8) = auStack_60;\n  uVar25 = *(uint *)(mVar16 + 0x20);\n  *(undefined4 **)(puVar36 + -0x48) = puVar6;\n  *(mp_ptr *)(puVar36 + -0x10) = rp;\n  piVar26 = (int *)(uVar25 >> 1);\n  uVar7 = *puVar6;\n  *(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate;\n  *(gmp_randalg_t *)(puVar36 + -0x18) = gVar31;\n  *(undefined4 *)(puVar36 + -0x2c) = uVar7;\n  iVar19 = (int)((int)piVar26 + 0x1f) >> 5;\n  *(uint *)(puVar36 + -0x24) = uVar17;\n  *(code **)(puVar36 + -4) = pcVar38;\n  uVar17 = iVar19 * 4;\n  *(int *)(puVar36 + -0x3c) = iVar19;\n  *(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32;\n  *(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30;\n  *(undefined **)(puVar36 + -0x20) = puVar4;\n  *(undefined **)(puVar36 + -0x50) = puVar34;\n  *(undefined4 *)(puVar36 + -0x30) = 0;\n  *(uint *)(puVar36 + -0x44) = uVar17;\n  piVar20 = piVar21;\n  if (uVar17 < 0x7f01) {\n    iVar19 = -(uVar17 + 7 & 0xfffffff8);\n    puVar37 = puVar36 + iVar19 + -0x60;\n    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);\n    p_Var32 = p_Var18;\n  }\n  else {\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }\n  piVar29 = *(int **)(puVar34 + -0x7fd4);\n  *(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f;\n  *(int **)(puVar36 + -0x34) = piVar29 + -0x111b;\n  uVar17 = 0;\n  piVar5 = piVar26;\n  piVar13 = (int *)0x0;\n  while (piVar1 = piVar5, piVar1 <= piVar21) {\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;\n    if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }\n    uVar17 = (uint)piVar1 >> 5;\n    piVar13 = piVar1;\n    piVar5 = (int *)((int)piVar26 + (int)piVar1);\n  }\n  if (piVar13 == piVar21) {\n    iVar19 = *(int *)(puVar36 + -0x30);\nLAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n    if (iVar19 == 0) goto LAB_0007c05c;\n  }\n  else {\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }\n  (*pcVar38)();\n  puVar34 = *(undefined **)(puVar36 + -0x50);\nLAB_0007c05c:\n  if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {\n    return **(ulong **)(puVar36 + -0x48);\n  }\n  pcVar38 = *(code **)(puVar34 + -0x7b70);\n  pcVar39 = __gmp_randinit_lc_2exp;\n  (*pcVar38)();\n  *(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40;\n  *(code **)(puVar37 + -4) = pcVar39;\n  *(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18;\n  *(mp_limb_t **)(puVar37 + -0xc) = pmVar28;\n  *(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30;\n  *(int **)(puVar37 + -0x14) = piVar29;\n  *(int **)(puVar37 + -0x18) = piVar21;\n  *(int **)(puVar37 + -0x1c) = piVar26;\n  if (pmVar22 != (mp_limb_t *)0x0) {\n    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;\n    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);\n    iVar35 = *(int *)(puVar37 + -0x28);\n    *(int *)(iVar19 + 8) = iVar11;\n    pcVar38 = *(code **)(iVar35 + -0x7ebc);\n    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;\n    (*pcVar38)(iVar11,pmVar22);\n    iVar19 = *(int *)(puVar37 + -0x28);\n    puVar6 = *(undefined4 **)(iVar11 + 8);\n    if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }\n    pcVar38 = *(code **)(iVar19 + -0x7f10);\n    *(uint *)(iVar11 + 4) = uVar17;\n    *puVar6 = 1;\n    (*pcVar38)(iVar11 + 0xc);\n    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);\n    if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }\n    *(int **)(iVar11 + 0x1c) = piVar20;\n    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;\n    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);\n    return (uint)(piVar20 != (int *)0x0);\n  }\n  uVar9 = (**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    );\n  return uVar9;\n}" type_identifier (function_declarator "lc(mp_ptr rp,__gmp_randstate_struct *rstate)" identifier (parameter_list "(mp_ptr rp,__gmp_randstate_struct *rstate)" ( (parameter_declaration "mp_ptr rp" type_identifier identifier) , (parameter_declaration "__gmp_randstate_struct *rstate" type_identifier (pointer_declarator "*rstate" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  mp_limb_t **ppmVar2;\n  __mpz_struct *p_Var3;\n  undefined *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  undefined4 uVar7;\n  mp_limb_t **ppmVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  int iVar11;\n  mp_ptr pmVar12;\n  int *piVar13;\n  undefined4 *puVar14;\n  mp_limb_t mVar16;\n  uint uVar17;\n  __gmp_randstate_struct *p_Var18;\n  int iVar19;\n  int *piVar20;\n  int *piVar21;\n  mp_limb_t *pmVar22;\n  void *pvVar23;\n  mp_limb_t *pmVar24;\n  uint uVar25;\n  int *piVar26;\n  undefined1 *puVar27;\n  mp_limb_t *pmVar28;\n  int *piVar29;\n  __gmp_randstate_struct *p_Var30;\n  gmp_randalg_t gVar31;\n  __gmp_randstate_struct *p_Var32;\n  undefined *puVar33;\n  undefined *puVar34;\n  int iVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  code *pcVar38;\n  code *pcVar39;\n  undefined1 auStack_60 [24];\n  tmp_reentrant_t *__tmp_marker;\n  mp_limb_t *local_2c;\n  undefined4 *puVar15;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar36 = auStack_60;\n  iVar19 = rstate->_mp_seed[0]._mp_size;\n  pvVar23 = (rstate->_mp_algdata)._mp_lc;\n  pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc;\n  puVar10 = (undefined1 *)(iVar19 + (int)pvVar23);\n  gVar31 = rstate[1]._mp_alg;\n  pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5);\n  __tmp_marker = (tmp_reentrant_t *)0x0;\n  local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540;\n  p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d;\n  uVar17 = (int)(puVar10 + 1) * 4;\n  if ((int)pmVar24 < (int)(puVar10 + 1)) {\n    if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n  }\n  else {\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }\n  *(void **)(puVar36 + 0x10) = pvVar23;\n  p_Var18 = p_Var32;\n  (*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19);\n  pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size;\n  if (((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)) {\n    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;\n    mVar16 = *piVar21 + 1;\n    *piVar21 = mVar16;\n    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }\n  }\n  piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5);\n  *piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f));\n  if (pmVar24 != (mp_limb_t *)0x0) {\n    pmVar28 = rstate->_mp_seed[0]._mp_d;\n    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;\n    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }\n    *pmVar28 = mVar16;\n  }\n  uVar17 = gVar31 >> 6;\n  piVar20 = (int *)((int)pmVar24 - uVar17);\n  piVar21 = piVar20;\n  if (0 < (int)piVar20) {\n    pmVar24 = (mp_limb_t *)(uVar17 * 4);\n    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);\n    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);\n    if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }\n  }\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(mp_limb_t **)puVar4) {\n    return gVar31 + 1 >> 1;\n  }\n  pcVar38 = randget_lc;\n  pmVar28 = local_2c;\n  puVar33 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar34 = puVar33 + 0x23144;\n  mVar16 = pmVar28[2];\n  puVar37 = puVar36 + -0x60;\n  puVar6 = *(undefined4 **)(puVar33 + 0x1b644);\n  *(mp_limb_t **)(puVar36 + -0x28) = pmVar24;\n  *(undefined1 **)(puVar36 + -8) = auStack_60;\n  uVar25 = *(uint *)(mVar16 + 0x20);\n  *(undefined4 **)(puVar36 + -0x48) = puVar6;\n  *(mp_ptr *)(puVar36 + -0x10) = rp;\n  piVar26 = (int *)(uVar25 >> 1);\n  uVar7 = *puVar6;\n  *(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate;\n  *(gmp_randalg_t *)(puVar36 + -0x18) = gVar31;\n  *(undefined4 *)(puVar36 + -0x2c) = uVar7;\n  iVar19 = (int)((int)piVar26 + 0x1f) >> 5;\n  *(uint *)(puVar36 + -0x24) = uVar17;\n  *(code **)(puVar36 + -4) = pcVar38;\n  uVar17 = iVar19 * 4;\n  *(int *)(puVar36 + -0x3c) = iVar19;\n  *(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32;\n  *(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30;\n  *(undefined **)(puVar36 + -0x20) = puVar4;\n  *(undefined **)(puVar36 + -0x50) = puVar34;\n  *(undefined4 *)(puVar36 + -0x30) = 0;\n  *(uint *)(puVar36 + -0x44) = uVar17;\n  piVar20 = piVar21;\n  if (uVar17 < 0x7f01) {\n    iVar19 = -(uVar17 + 7 & 0xfffffff8);\n    puVar37 = puVar36 + iVar19 + -0x60;\n    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);\n    p_Var32 = p_Var18;\n  }\n  else {\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }\n  piVar29 = *(int **)(puVar34 + -0x7fd4);\n  *(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f;\n  *(int **)(puVar36 + -0x34) = piVar29 + -0x111b;\n  uVar17 = 0;\n  piVar5 = piVar26;\n  piVar13 = (int *)0x0;\n  while (piVar1 = piVar5, piVar1 <= piVar21) {\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;\n    if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }\n    uVar17 = (uint)piVar1 >> 5;\n    piVar13 = piVar1;\n    piVar5 = (int *)((int)piVar26 + (int)piVar1);\n  }\n  if (piVar13 == piVar21) {\n    iVar19 = *(int *)(puVar36 + -0x30);\nLAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n    if (iVar19 == 0) goto LAB_0007c05c;\n  }\n  else {\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }\n  (*pcVar38)();\n  puVar34 = *(undefined **)(puVar36 + -0x50);\nLAB_0007c05c:\n  if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {\n    return **(ulong **)(puVar36 + -0x48);\n  }\n  pcVar38 = *(code **)(puVar34 + -0x7b70);\n  pcVar39 = __gmp_randinit_lc_2exp;\n  (*pcVar38)();\n  *(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40;\n  *(code **)(puVar37 + -4) = pcVar39;\n  *(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18;\n  *(mp_limb_t **)(puVar37 + -0xc) = pmVar28;\n  *(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30;\n  *(int **)(puVar37 + -0x14) = piVar29;\n  *(int **)(puVar37 + -0x18) = piVar21;\n  *(int **)(puVar37 + -0x1c) = piVar26;\n  if (pmVar22 != (mp_limb_t *)0x0) {\n    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;\n    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);\n    iVar35 = *(int *)(puVar37 + -0x28);\n    *(int *)(iVar19 + 8) = iVar11;\n    pcVar38 = *(code **)(iVar35 + -0x7ebc);\n    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;\n    (*pcVar38)(iVar11,pmVar22);\n    iVar19 = *(int *)(puVar37 + -0x28);\n    puVar6 = *(undefined4 **)(iVar11 + 8);\n    if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }\n    pcVar38 = *(code **)(iVar19 + -0x7f10);\n    *(uint *)(iVar11 + 4) = uVar17;\n    *puVar6 = 1;\n    (*pcVar38)(iVar11 + 0xc);\n    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);\n    if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }\n    *(int **)(iVar11 + 0x1c) = piVar20;\n    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;\n    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);\n    return (uint)(piVar20 != (int *)0x0);\n  }\n  uVar9 = (**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    );\n  return uVar9;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "mp_limb_t **ppmVar2;" type_identifier (pointer_declarator "**ppmVar2" * (pointer_declarator "*ppmVar2" * identifier)) ;) (declaration "__mpz_struct *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "mp_limb_t **ppmVar8;" type_identifier (pointer_declarator "**ppmVar8" * (pointer_declarator "*ppmVar8" * identifier)) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "mp_ptr pmVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "mp_limb_t mVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "__gmp_randstate_struct *p_Var18;" type_identifier (pointer_declarator "*p_Var18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "mp_limb_t *pmVar22;" type_identifier (pointer_declarator "*pmVar22" * identifier) ;) (declaration "void *pvVar23;" primitive_type (pointer_declarator "*pvVar23" * identifier) ;) (declaration "mp_limb_t *pmVar24;" type_identifier (pointer_declarator "*pmVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "mp_limb_t *pmVar28;" type_identifier (pointer_declarator "*pmVar28" * identifier) ;) (declaration "int *piVar29;" primitive_type (pointer_declarator "*piVar29" * identifier) ;) (declaration "__gmp_randstate_struct *p_Var30;" type_identifier (pointer_declarator "*p_Var30" * identifier) ;) (declaration "gmp_randalg_t gVar31;" type_identifier identifier ;) (declaration "__gmp_randstate_struct *p_Var32;" type_identifier (pointer_declarator "*p_Var32" * identifier) ;) (declaration "undefined *puVar33;" type_identifier (pointer_declarator "*puVar33" * identifier) ;) (declaration "undefined *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "int iVar35;" primitive_type identifier ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "code *pcVar38;" type_identifier (pointer_declarator "*pcVar38" * identifier) ;) (declaration "code *pcVar39;" type_identifier (pointer_declarator "*pcVar39" * identifier) ;) (declaration "undefined1 auStack_60 [24];" type_identifier (array_declarator "auStack_60 [24]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mp_limb_t *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar36 = auStack_60;" (assignment_expression "puVar36 = auStack_60" identifier = identifier) ;) (expression_statement "iVar19 = rstate->_mp_seed[0]._mp_size;" (assignment_expression "iVar19 = rstate->_mp_seed[0]._mp_size" identifier = (field_expression "rstate->_mp_seed[0]._mp_size" (subscript_expression "rstate->_mp_seed[0]" (field_expression "rstate->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "pvVar23 = (rstate->_mp_algdata)._mp_lc;" (assignment_expression "pvVar23 = (rstate->_mp_algdata)._mp_lc" identifier = (field_expression "(rstate->_mp_algdata)._mp_lc" (parenthesized_expression "(rstate->_mp_algdata)" ( (field_expression "rstate->_mp_algdata" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc;" (assignment_expression "pmVar22 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc" identifier = (cast_expression "(mp_limb_t *)rstate[1]._mp_seed[0]._mp_alloc" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "rstate[1]._mp_seed[0]._mp_alloc" (subscript_expression "rstate[1]._mp_seed[0]" (field_expression "rstate[1]._mp_seed" (subscript_expression "rstate[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "puVar10 = (undefined1 *)(iVar19 + (int)pvVar23);" (assignment_expression "puVar10 = (undefined1 *)(iVar19 + (int)pvVar23)" identifier = (cast_expression "(undefined1 *)(iVar19 + (int)pvVar23)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + (int)pvVar23)" ( (binary_expression "iVar19 + (int)pvVar23" identifier + (cast_expression "(int)pvVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "gVar31 = rstate[1]._mp_alg;" (assignment_expression "gVar31 = rstate[1]._mp_alg" identifier = (field_expression "rstate[1]._mp_alg" (subscript_expression "rstate[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5);" (assignment_expression "pmVar24 = (mp_limb_t *)(gVar31 + 0x1f >> 5)" identifier = (cast_expression "(mp_limb_t *)(gVar31 + 0x1f >> 5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(gVar31 + 0x1f >> 5)" ( (binary_expression "gVar31 + 0x1f >> 5" (binary_expression "gVar31 + 0x1f" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(mp_limb_t **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(mp_limb_t **)PTR___stack_chk_guard_00097540" * (cast_expression "(mp_limb_t **)PTR___stack_chk_guard_00097540" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d;" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d" identifier = (cast_expression "(__gmp_randstate_struct *)rstate->_mp_seed[0]._mp_d" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "rstate->_mp_seed[0]._mp_d" (subscript_expression "rstate->_mp_seed[0]" (field_expression "rstate->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "uVar17 = (int)(puVar10 + 1) * 4;" (assignment_expression "uVar17 = (int)(puVar10 + 1) * 4" identifier = (binary_expression "(int)(puVar10 + 1) * 4" (cast_expression "(int)(puVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar10 + 1)" ( (binary_expression "puVar10 + 1" identifier + number_literal) ))) * number_literal)) ;) (if_statement "if ((int)pmVar24 < (int)(puVar10 + 1)) {\n    if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n  }\n  else {\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }" if (parenthesized_expression "((int)pmVar24 < (int)(puVar10 + 1))" ( (binary_expression "(int)pmVar24 < (int)(puVar10 + 1)" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(puVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar10 + 1)" ( (binary_expression "puVar10 + 1" identifier + number_literal) )))) )) (compound_statement "{\n    if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n  }" { (if_statement "if (uVar17 < 0x7f01) {\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" if (parenthesized_expression "(uVar17 < 0x7f01)" ( (binary_expression "uVar17 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar11 = -(uVar17 + 7 & 0xfffffff8);\n      puVar36 = auStack_60 + iVar11;\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n    }" { (expression_statement "iVar11 = -(uVar17 + 7 & 0xfffffff8);" (assignment_expression "iVar11 = -(uVar17 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar17 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar17 + 7 & 0xfffffff8)" ( (binary_expression "uVar17 + 7 & 0xfffffff8" (binary_expression "uVar17 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar36 = auStack_60 + iVar11;" (assignment_expression "puVar36 = auStack_60 + iVar11" identifier = (binary_expression "auStack_60 + iVar11" identifier + identifier)) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11)" identifier = (cast_expression "(__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar11)" ( (binary_expression "&stack0xffffffb8 + iVar11" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" else (compound_statement "{\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" { (expression_statement "p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" identifier = (cast_expression "(__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) ))))) ;) }))) }) (else_clause "else {\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }" else (compound_statement "{\n    puVar27 = (undefined1 *)((int)pmVar24 + 1);\n    if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }\n    if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }\n  }" { (expression_statement "puVar27 = (undefined1 *)((int)pmVar24 + 1);" (assignment_expression "puVar27 = (undefined1 *)((int)pmVar24 + 1)" identifier = (cast_expression "(undefined1 *)((int)pmVar24 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 + 1)" ( (binary_expression "(int)pmVar24 + 1" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((uint)((int)puVar27 * 4) < 0x7f01) {\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }\n    else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }" if (parenthesized_expression "((uint)((int)puVar27 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)puVar27 * 4) < 0x7f01" (call_expression "(uint)((int)puVar27 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar27 * 4)" ( (binary_expression "(int)puVar27 * 4" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);\n      p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);\n      puVar36 = auStack_60 + iVar11;\n    }" { (expression_statement "iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar11 = -((int)puVar27 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)puVar27 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)puVar27 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)puVar27 * 4 + 7U & 0xfffffff8" (binary_expression "(int)puVar27 * 4 + 7U" (binary_expression "(int)puVar27 * 4" (cast_expression "(int)puVar27" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11)" identifier = (cast_expression "(__gmp_randstate_struct *)(&stack0xffffffb8 + iVar11)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar11)" ( (binary_expression "&stack0xffffffb8 + iVar11" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) (expression_statement "puVar36 = auStack_60 + iVar11;" (assignment_expression "puVar36 = auStack_60 + iVar11" identifier = (binary_expression "auStack_60 + iVar11" identifier + identifier)) ;) }) (else_clause "else {\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }" else (compound_statement "{\n      p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n      puVar36 = auStack_60;\n    }" { (expression_statement "p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" identifier = (cast_expression "(__gmp_randstate_struct *)\n                (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker)" ( (pointer_expression "&__tmp_marker" & identifier) ))))) ;) (expression_statement "puVar36 = auStack_60;" (assignment_expression "puVar36 = auStack_60" identifier = identifier) ;) }))) (if_statement "if (puVar10 != puVar27) {\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }" if (parenthesized_expression "(puVar10 != puVar27)" ( (binary_expression "puVar10 != puVar27" identifier != identifier) )) (compound_statement "{\n      iVar11 = (int)puVar27 - (int)puVar10;\n      piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;\n      do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);\n    }" { (expression_statement "iVar11 = (int)puVar27 - (int)puVar10;" (assignment_expression "iVar11 = (int)puVar27 - (int)puVar10" identifier = (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))) ;) (expression_statement "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10;" (assignment_expression "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10" identifier = (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + (int)puVar10" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      } while (iVar11 != 0);" do (compound_statement "{\n        iVar11 = iVar11 + -1;\n        *piVar21 = 0;\n        piVar21 = piVar21 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + -1;" (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ;) (expression_statement "*piVar21 = 0;" (assignment_expression "*piVar21 = 0" (pointer_expression "*piVar21" * identifier) = number_literal) ;) (expression_statement "piVar21 = piVar21 + 1;" (assignment_expression "piVar21 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) ;) })) }))) (expression_statement "*(void **)(puVar36 + 0x10) = pvVar23;" (assignment_expression "*(void **)(puVar36 + 0x10) = pvVar23" (pointer_expression "*(void **)(puVar36 + 0x10)" * (cast_expression "(void **)(puVar36 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + 0x10)" ( (binary_expression "puVar36 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "p_Var18 = p_Var32;" (assignment_expression "p_Var18 = p_Var32" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19);" (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(p_Var30,p_Var32,iVar19)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_Var30,p_Var32,iVar19)" ( identifier , identifier , identifier ))) ;) (expression_statement "pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size;" (assignment_expression "pmVar28 = (mp_limb_t *)rstate[1]._mp_seed[0]._mp_size" identifier = (cast_expression "(mp_limb_t *)rstate[1]._mp_seed[0]._mp_size" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "rstate[1]._mp_seed[0]._mp_size" (subscript_expression "rstate[1]._mp_seed[0]" (field_expression "rstate[1]._mp_seed" (subscript_expression "rstate[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if (((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)) {\n    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;\n    mVar16 = *piVar21 + 1;\n    *piVar21 = mVar16;\n    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }\n  }" if (parenthesized_expression "(((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24))" ( (binary_expression "((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)) && ((int)pmVar28 < (int)pmVar24)" (parenthesized_expression "((pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0))" ( (binary_expression "(pmVar28 != (mp_limb_t *)0x0) &&\n      (p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)" (parenthesized_expression "(pmVar28 != (mp_limb_t *)0x0)" ( (binary_expression "pmVar28 != (mp_limb_t *)0x0" identifier != (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0)" ( (comma_expression "p_Var18 = p_Var30, pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0" (assignment_expression "p_Var18 = p_Var30" identifier = identifier) , (comma_expression "pmVar22 = pmVar28,\n      iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0" (assignment_expression "pmVar22 = pmVar28" identifier = identifier) , (comma_expression "iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d),\n      iVar19 != 0" (assignment_expression "iVar19 = (*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_Var30,p_Var30,&rstate[1]._mp_seed[0]._mp_d)" ( identifier , identifier , (pointer_expression "&rstate[1]._mp_seed[0]._mp_d" & (field_expression "rstate[1]._mp_seed[0]._mp_d" (subscript_expression "rstate[1]._mp_seed[0]" (field_expression "rstate[1]._mp_seed" (subscript_expression "rstate[1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) )))) , (binary_expression "iVar19 != 0" identifier != number_literal)))) ))) )) && (parenthesized_expression "((int)pmVar28 < (int)pmVar24)" ( (binary_expression "(int)pmVar28 < (int)pmVar24" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;\n    mVar16 = *piVar21 + 1;\n    *piVar21 = mVar16;\n    while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }\n  }" { (expression_statement "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28;" (assignment_expression "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28" identifier = (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar28" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "mVar16 = *piVar21 + 1;" (assignment_expression "mVar16 = *piVar21 + 1" identifier = (binary_expression "*piVar21 + 1" (pointer_expression "*piVar21" * identifier) + number_literal)) ;) (expression_statement "*piVar21 = mVar16;" (assignment_expression "*piVar21 = mVar16" (pointer_expression "*piVar21" * identifier) = identifier) ;) (while_statement "while ((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))) {\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }" while (parenthesized_expression "((mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28)))" ( (parenthesized_expression "(mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28))" ( (binary_expression "mVar16 == 0 && (pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28)" (binary_expression "mVar16 == 0" identifier == number_literal) && (parenthesized_expression "(pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28)" ( (comma_expression "pmVar28 = (mp_limb_t *)((int)pmVar28 + 1), pmVar24 != pmVar28" (assignment_expression "pmVar28 = (mp_limb_t *)((int)pmVar28 + 1)" identifier = (cast_expression "(mp_limb_t *)((int)pmVar28 + 1)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar28 + 1)" ( (binary_expression "(int)pmVar28 + 1" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) , (binary_expression "pmVar24 != pmVar28" identifier != identifier)) ))) )) )) (compound_statement "{\n      piVar20 = piVar21 + 1;\n      piVar21 = piVar21 + 1;\n      mVar16 = *piVar20 + 1;\n      *piVar21 = mVar16;\n    }" { (expression_statement "piVar20 = piVar21 + 1;" (assignment_expression "piVar20 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (expression_statement "piVar21 = piVar21 + 1;" (assignment_expression "piVar21 = piVar21 + 1" identifier = (binary_expression "piVar21 + 1" identifier + number_literal)) ;) (expression_statement "mVar16 = *piVar20 + 1;" (assignment_expression "mVar16 = *piVar20 + 1" identifier = (binary_expression "*piVar20 + 1" (pointer_expression "*piVar20" * identifier) + number_literal)) ;) (expression_statement "*piVar21 = mVar16;" (assignment_expression "*piVar21 = mVar16" (pointer_expression "*piVar21" * identifier) = identifier) ;) })) })) (expression_statement "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5);" (assignment_expression "piVar21 = &p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5)" identifier = (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + (gVar31 >> 5)" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "(gVar31 >> 5)" ( (binary_expression "gVar31 >> 5" identifier >> number_literal) )))) ;) (expression_statement "*piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f));" (assignment_expression "*piVar21 = *piVar21 & ~(-1 << (gVar31 & 0x1f))" (pointer_expression "*piVar21" * identifier) = (binary_expression "*piVar21 & ~(-1 << (gVar31 & 0x1f))" (pointer_expression "*piVar21" * identifier) & (unary_expression "~(-1 << (gVar31 & 0x1f))" ~ (parenthesized_expression "(-1 << (gVar31 & 0x1f))" ( (binary_expression "-1 << (gVar31 & 0x1f)" number_literal << (parenthesized_expression "(gVar31 & 0x1f)" ( (binary_expression "gVar31 & 0x1f" identifier & number_literal) ))) ))))) ;) (if_statement "if (pmVar24 != (mp_limb_t *)0x0) {\n    pmVar28 = rstate->_mp_seed[0]._mp_d;\n    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;\n    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }\n    *pmVar28 = mVar16;\n  }" if (parenthesized_expression "(pmVar24 != (mp_limb_t *)0x0)" ( (binary_expression "pmVar24 != (mp_limb_t *)0x0" identifier != (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pmVar28 = rstate->_mp_seed[0]._mp_d;\n    mVar16 = p_Var30->_mp_seed[0]._mp_alloc;\n    if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }\n    *pmVar28 = mVar16;\n  }" { (expression_statement "pmVar28 = rstate->_mp_seed[0]._mp_d;" (assignment_expression "pmVar28 = rstate->_mp_seed[0]._mp_d" identifier = (field_expression "rstate->_mp_seed[0]._mp_d" (subscript_expression "rstate->_mp_seed[0]" (field_expression "rstate->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "mVar16 = p_Var30->_mp_seed[0]._mp_alloc;" (assignment_expression "mVar16 = p_Var30->_mp_seed[0]._mp_alloc" identifier = (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (pmVar24 != (mp_limb_t *)&DAT_00000001) {\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }" if (parenthesized_expression "(pmVar24 != (mp_limb_t *)&DAT_00000001)" ( (binary_expression "pmVar24 != (mp_limb_t *)&DAT_00000001" identifier != (cast_expression "(mp_limb_t *)&DAT_00000001" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) )) (compound_statement "{\n      p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);\n      pmVar22 = pmVar28;\n      ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n      do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n      pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);\n      pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);\n    }" { (expression_statement "p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24);" (assignment_expression "p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24)" identifier = (cast_expression "(__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24)" ( (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + (int)pmVar24" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pmVar22 = pmVar28;" (assignment_expression "pmVar22 = pmVar28" identifier = identifier) ;) (expression_statement "ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;" (assignment_expression "ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size" identifier = (cast_expression "(mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var30->_mp_seed[0]._mp_size" & (field_expression "p_Var30->_mp_seed[0]._mp_size" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) ;) (do_statement "do {\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);" do (compound_statement "{\n        *pmVar22 = mVar16;\n        ppmVar2 = ppmVar8 + 1;\n        mVar16 = (mp_limb_t)*ppmVar8;\n        pmVar22 = pmVar22 + 1;\n        ppmVar8 = ppmVar2;\n      }" { (expression_statement "*pmVar22 = mVar16;" (assignment_expression "*pmVar22 = mVar16" (pointer_expression "*pmVar22" * identifier) = identifier) ;) (expression_statement "ppmVar2 = ppmVar8 + 1;" (assignment_expression "ppmVar2 = ppmVar8 + 1" identifier = (binary_expression "ppmVar8 + 1" identifier + number_literal)) ;) (expression_statement "mVar16 = (mp_limb_t)*ppmVar8;" (assignment_expression "mVar16 = (mp_limb_t)*ppmVar8" identifier = (binary_expression "(mp_limb_t)*ppmVar8" (parenthesized_expression "(mp_limb_t)" ( identifier )) * identifier)) ;) (expression_statement "pmVar22 = pmVar22 + 1;" (assignment_expression "pmVar22 = pmVar22 + 1" identifier = (binary_expression "pmVar22 + 1" identifier + number_literal)) ;) (expression_statement "ppmVar8 = ppmVar2;" (assignment_expression "ppmVar8 = ppmVar2" identifier = identifier) ;) }) while (parenthesized_expression "((__gmp_randstate_struct *)ppmVar2 != p_Var18)" ( (binary_expression "(__gmp_randstate_struct *)ppmVar2 != p_Var18" (cast_expression "(__gmp_randstate_struct *)ppmVar2" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4);" (assignment_expression "pmVar22 = (mp_limb_t *)((int)pmVar24 * 4 + -4)" identifier = (cast_expression "(mp_limb_t *)((int)pmVar24 * 4 + -4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 * 4 + -4)" ( (binary_expression "(int)pmVar24 * 4 + -4" (binary_expression "(int)pmVar24 * 4" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "pmVar28 = pmVar28 + (int)((int)pmVar24 + -1);" (assignment_expression "pmVar28 = pmVar28 + (int)((int)pmVar24 + -1)" identifier = (binary_expression "pmVar28 + (int)((int)pmVar24 + -1)" identifier + (cast_expression "(int)((int)pmVar24 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)pmVar24 + -1)" ( (binary_expression "(int)pmVar24 + -1" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "*pmVar28 = mVar16;" (assignment_expression "*pmVar28 = mVar16" (pointer_expression "*pmVar28" * identifier) = identifier) ;) })) (expression_statement "uVar17 = gVar31 >> 6;" (assignment_expression "uVar17 = gVar31 >> 6" identifier = (binary_expression "gVar31 >> 6" identifier >> number_literal)) ;) (expression_statement "piVar20 = (int *)((int)pmVar24 - uVar17);" (assignment_expression "piVar20 = (int *)((int)pmVar24 - uVar17)" identifier = (cast_expression "(int *)((int)pmVar24 - uVar17)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pmVar24 - uVar17)" ( (binary_expression "(int)pmVar24 - uVar17" (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "piVar21 = piVar20;" (assignment_expression "piVar21 = piVar20" identifier = identifier) ;) (if_statement "if (0 < (int)piVar20) {\n    pmVar24 = (mp_limb_t *)(uVar17 * 4);\n    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);\n    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);\n    if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }\n  }" if (parenthesized_expression "(0 < (int)piVar20)" ( (binary_expression "0 < (int)piVar20" number_literal < (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pmVar24 = (mp_limb_t *)(uVar17 * 4);\n    pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);\n    p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);\n    if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }\n  }" { (expression_statement "pmVar24 = (mp_limb_t *)(uVar17 * 4);" (assignment_expression "pmVar24 = (mp_limb_t *)(uVar17 * 4)" identifier = (cast_expression "(mp_limb_t *)(uVar17 * 4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar17 * 4)" ( (binary_expression "uVar17 * 4" identifier * number_literal) )))) ;) (expression_statement "pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b);" (assignment_expression "pmVar22 = (mp_limb_t *)((gVar31 << 0x1a) >> 0x1b)" identifier = (cast_expression "(mp_limb_t *)((gVar31 << 0x1a) >> 0x1b)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((gVar31 << 0x1a) >> 0x1b)" ( (binary_expression "(gVar31 << 0x1a) >> 0x1b" (parenthesized_expression "(gVar31 << 0x1a)" ( (binary_expression "gVar31 << 0x1a" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17);" (assignment_expression "p_Var18 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17)" identifier = (cast_expression "(__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + uVar17)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&p_Var30->_mp_seed[0]._mp_alloc + uVar17)" ( (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + uVar17" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + identifier) )))) ;) (if_statement "if (pmVar22 == (mp_limb_t *)0x0) {\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }" if (parenthesized_expression "(pmVar22 == (mp_limb_t *)0x0)" ( (binary_expression "pmVar22 == (mp_limb_t *)0x0" identifier == (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      mVar16 = p_Var18->_mp_seed[0]._mp_alloc;\n      if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }\n      *rp = mVar16;\n    }" { (expression_statement "mVar16 = p_Var18->_mp_seed[0]._mp_alloc;" (assignment_expression "mVar16 = p_Var18->_mp_seed[0]._mp_alloc" identifier = (field_expression "p_Var18->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var18->_mp_seed[0]" (field_expression "p_Var18->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (piVar20 != (int *)&DAT_00000001) {\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }" if (parenthesized_expression "(piVar20 != (int *)&DAT_00000001)" ( (binary_expression "piVar20 != (int *)&DAT_00000001" identifier != (cast_expression "(int *)&DAT_00000001" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) )) (compound_statement "{\n        p_Var3 = p_Var18->_mp_seed;\n        p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);\n        ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n        pmVar12 = rp;\n        do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);\n        piVar21 = (int *)((int)piVar20 * 4 + -4);\n        rp = rp + (int)((int)piVar20 + -1);\n      }" { (expression_statement "p_Var3 = p_Var18->_mp_seed;" (assignment_expression "p_Var3 = p_Var18->_mp_seed" identifier = (field_expression "p_Var18->_mp_seed" identifier -> field_identifier)) ;) (expression_statement "p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4);" (assignment_expression "p_Var18 = (__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4)" identifier = (cast_expression "(__gmp_randstate_struct *)((int)p_Var18 + (int)piVar20 * 4)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var18 + (int)piVar20 * 4)" ( (binary_expression "(int)p_Var18 + (int)piVar20 * 4" (cast_expression "(int)p_Var18" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)piVar20 * 4" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;" (assignment_expression "ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size" identifier = (cast_expression "(mp_limb_t **)&p_Var3->_mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var3->_mp_size" & (field_expression "p_Var3->_mp_size" identifier -> field_identifier)))) ;) (expression_statement "pmVar12 = rp;" (assignment_expression "pmVar12 = rp" identifier = identifier) ;) (do_statement "do {\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        } while ((__gmp_randstate_struct *)ppmVar2 != p_Var18);" do (compound_statement "{\n          *pmVar12 = mVar16;\n          ppmVar2 = ppmVar8 + 1;\n          mVar16 = (mp_limb_t)*ppmVar8;\n          ppmVar8 = ppmVar2;\n          pmVar12 = pmVar12 + 1;\n        }" { (expression_statement "*pmVar12 = mVar16;" (assignment_expression "*pmVar12 = mVar16" (pointer_expression "*pmVar12" * identifier) = identifier) ;) (expression_statement "ppmVar2 = ppmVar8 + 1;" (assignment_expression "ppmVar2 = ppmVar8 + 1" identifier = (binary_expression "ppmVar8 + 1" identifier + number_literal)) ;) (expression_statement "mVar16 = (mp_limb_t)*ppmVar8;" (assignment_expression "mVar16 = (mp_limb_t)*ppmVar8" identifier = (binary_expression "(mp_limb_t)*ppmVar8" (parenthesized_expression "(mp_limb_t)" ( identifier )) * identifier)) ;) (expression_statement "ppmVar8 = ppmVar2;" (assignment_expression "ppmVar8 = ppmVar2" identifier = identifier) ;) (expression_statement "pmVar12 = pmVar12 + 1;" (assignment_expression "pmVar12 = pmVar12 + 1" identifier = (binary_expression "pmVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((__gmp_randstate_struct *)ppmVar2 != p_Var18)" ( (binary_expression "(__gmp_randstate_struct *)ppmVar2 != p_Var18" (cast_expression "(__gmp_randstate_struct *)ppmVar2" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "piVar21 = (int *)((int)piVar20 * 4 + -4);" (assignment_expression "piVar21 = (int *)((int)piVar20 * 4 + -4)" identifier = (cast_expression "(int *)((int)piVar20 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar20 * 4 + -4)" ( (binary_expression "(int)piVar20 * 4 + -4" (binary_expression "(int)piVar20 * 4" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "rp = rp + (int)((int)piVar20 + -1);" (assignment_expression "rp = rp + (int)((int)piVar20 + -1)" identifier = (binary_expression "rp + (int)((int)piVar20 + -1)" identifier + (cast_expression "(int)((int)piVar20 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar20 + -1)" ( (binary_expression "(int)piVar20 + -1" (cast_expression "(int)piVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "*rp = mVar16;" (assignment_expression "*rp = mVar16" (pointer_expression "*rp" * identifier) = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }" else (compound_statement "{\n      (*(code *)PTR___gmpn_rshift_00097560)(p_Var30);\n      pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;\n      if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }\n      *rp = (mp_limb_t)pmVar28;\n      piVar21 = piVar20;\n    }" { (expression_statement "(*(code *)PTR___gmpn_rshift_00097560)(p_Var30);" (call_expression "(*(code *)PTR___gmpn_rshift_00097560)(p_Var30)" (parenthesized_expression "(*(code *)PTR___gmpn_rshift_00097560)" ( (pointer_expression "*(code *)PTR___gmpn_rshift_00097560" * (cast_expression "(code *)PTR___gmpn_rshift_00097560" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(p_Var30)" ( identifier ))) ;) (expression_statement "pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc;" (assignment_expression "pmVar28 = (mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc" identifier = (cast_expression "(mp_limb_t *)p_Var30->_mp_seed[0]._mp_alloc" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if (uVar17 != 0) {\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n        pmVar24 = rp + uVar17;\n        ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;\n        pmVar12 = rp;\n        do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);\n      }" { (expression_statement "pmVar24 = rp + uVar17;" (assignment_expression "pmVar24 = rp + uVar17" identifier = (binary_expression "rp + uVar17" identifier + identifier)) ;) (expression_statement "ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size;" (assignment_expression "ppmVar8 = (mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size" identifier = (cast_expression "(mp_limb_t **)&p_Var30->_mp_seed[0]._mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var30->_mp_seed[0]._mp_size" & (field_expression "p_Var30->_mp_seed[0]._mp_size" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) ;) (expression_statement "pmVar12 = rp;" (assignment_expression "pmVar12 = rp" identifier = identifier) ;) (do_statement "do {\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        } while (rp != pmVar24);" do (compound_statement "{\n          rp = pmVar12 + 1;\n          *pmVar12 = (mp_limb_t)pmVar28;\n          p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);\n          pmVar28 = *ppmVar8;\n          ppmVar8 = (mp_limb_t **)p_Var30;\n          pmVar12 = rp;\n        }" { (expression_statement "rp = pmVar12 + 1;" (assignment_expression "rp = pmVar12 + 1" identifier = (binary_expression "pmVar12 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar12 = (mp_limb_t)pmVar28;" (assignment_expression "*pmVar12 = (mp_limb_t)pmVar28" (pointer_expression "*pmVar12" * identifier) = (cast_expression "(mp_limb_t)pmVar28" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(ppmVar8 + 1)" identifier = (cast_expression "(__gmp_randstate_struct *)(ppmVar8 + 1)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppmVar8 + 1)" ( (binary_expression "ppmVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "pmVar28 = *ppmVar8;" (assignment_expression "pmVar28 = *ppmVar8" identifier = (pointer_expression "*ppmVar8" * identifier)) ;) (expression_statement "ppmVar8 = (mp_limb_t **)p_Var30;" (assignment_expression "ppmVar8 = (mp_limb_t **)p_Var30" identifier = (cast_expression "(mp_limb_t **)p_Var30" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pmVar12 = rp;" (assignment_expression "pmVar12 = rp" identifier = identifier) ;) }) while (parenthesized_expression "(rp != pmVar24)" ( (binary_expression "rp != pmVar24" identifier != identifier) )) ;) })) (expression_statement "*rp = (mp_limb_t)pmVar28;" (assignment_expression "*rp = (mp_limb_t)pmVar28" (pointer_expression "*rp" * identifier) = (cast_expression "(mp_limb_t)pmVar28" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "piVar21 = piVar20;" (assignment_expression "piVar21 = piVar20" 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 == *(mp_limb_t **)puVar4) {\n    return gVar31 + 1 >> 1;\n  }" if (parenthesized_expression "(local_2c == *(mp_limb_t **)puVar4)" ( (binary_expression "local_2c == *(mp_limb_t **)puVar4" identifier == (pointer_expression "*(mp_limb_t **)puVar4" * (cast_expression "(mp_limb_t **)puVar4" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return gVar31 + 1 >> 1;\n  }" { (return_statement "return gVar31 + 1 >> 1;" return (binary_expression "gVar31 + 1 >> 1" (binary_expression "gVar31 + 1" identifier + number_literal) >> number_literal) ;) })) (expression_statement "pcVar38 = randget_lc;" (assignment_expression "pcVar38 = randget_lc" identifier = identifier) ;) (expression_statement "pmVar28 = local_2c;" (assignment_expression "pmVar28 = local_2c" identifier = identifier) ;) (expression_statement "puVar33 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar33 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar34 = puVar33 + 0x23144;" (assignment_expression "puVar34 = puVar33 + 0x23144" identifier = (binary_expression "puVar33 + 0x23144" identifier + number_literal)) ;) (expression_statement "mVar16 = pmVar28[2];" (assignment_expression "mVar16 = pmVar28[2]" identifier = (subscript_expression "pmVar28[2]" identifier [ number_literal ])) ;) (expression_statement "puVar37 = puVar36 + -0x60;" (assignment_expression "puVar37 = puVar36 + -0x60" identifier = (binary_expression "puVar36 + -0x60" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(puVar33 + 0x1b644);" (assignment_expression "puVar6 = *(undefined4 **)(puVar33 + 0x1b644)" identifier = (pointer_expression "*(undefined4 **)(puVar33 + 0x1b644)" * (cast_expression "(undefined4 **)(puVar33 + 0x1b644)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x1b644)" ( (binary_expression "puVar33 + 0x1b644" identifier + number_literal) ))))) ;) (expression_statement "*(mp_limb_t **)(puVar36 + -0x28) = pmVar24;" (assignment_expression "*(mp_limb_t **)(puVar36 + -0x28) = pmVar24" (pointer_expression "*(mp_limb_t **)(puVar36 + -0x28)" * (cast_expression "(mp_limb_t **)(puVar36 + -0x28)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x28)" ( (binary_expression "puVar36 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar36 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar36 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar36 + -8)" * (cast_expression "(undefined1 **)(puVar36 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -8)" ( (binary_expression "puVar36 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar25 = *(uint *)(mVar16 + 0x20);" (assignment_expression "uVar25 = *(uint *)(mVar16 + 0x20)" identifier = (pointer_expression "*(uint *)(mVar16 + 0x20)" * (cast_expression "(uint *)(mVar16 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(mVar16 + 0x20)" ( (binary_expression "mVar16 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar36 + -0x48) = puVar6;" (assignment_expression "*(undefined4 **)(puVar36 + -0x48) = puVar6" (pointer_expression "*(undefined4 **)(puVar36 + -0x48)" * (cast_expression "(undefined4 **)(puVar36 + -0x48)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_ptr *)(puVar36 + -0x10) = rp;" (assignment_expression "*(mp_ptr *)(puVar36 + -0x10) = rp" (pointer_expression "*(mp_ptr *)(puVar36 + -0x10)" * (cast_expression "(mp_ptr *)(puVar36 + -0x10)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x10)" ( (binary_expression "puVar36 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar26 = (int *)(uVar25 >> 1);" (assignment_expression "piVar26 = (int *)(uVar25 >> 1)" identifier = (cast_expression "(int *)(uVar25 >> 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 >> 1)" ( (binary_expression "uVar25 >> 1" identifier >> number_literal) )))) ;) (expression_statement "uVar7 = *puVar6;" (assignment_expression "uVar7 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate;" (assignment_expression "*(__gmp_randstate_struct **)(puVar36 + -0x14) = rstate" (pointer_expression "*(__gmp_randstate_struct **)(puVar36 + -0x14)" * (cast_expression "(__gmp_randstate_struct **)(puVar36 + -0x14)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x14)" ( (binary_expression "puVar36 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(gmp_randalg_t *)(puVar36 + -0x18) = gVar31;" (assignment_expression "*(gmp_randalg_t *)(puVar36 + -0x18) = gVar31" (pointer_expression "*(gmp_randalg_t *)(puVar36 + -0x18)" * (cast_expression "(gmp_randalg_t *)(puVar36 + -0x18)" ( (type_descriptor "gmp_randalg_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x18)" ( (binary_expression "puVar36 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x2c) = uVar7;" (assignment_expression "*(undefined4 *)(puVar36 + -0x2c) = uVar7" (pointer_expression "*(undefined4 *)(puVar36 + -0x2c)" * (cast_expression "(undefined4 *)(puVar36 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar19 = (int)((int)piVar26 + 0x1f) >> 5;" (assignment_expression "iVar19 = (int)((int)piVar26 + 0x1f) >> 5" identifier = (binary_expression "(int)((int)piVar26 + 0x1f) >> 5" (cast_expression "(int)((int)piVar26 + 0x1f)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar26 + 0x1f)" ( (binary_expression "(int)piVar26 + 0x1f" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) >> number_literal)) ;) (expression_statement "*(uint *)(puVar36 + -0x24) = uVar17;" (assignment_expression "*(uint *)(puVar36 + -0x24) = uVar17" (pointer_expression "*(uint *)(puVar36 + -0x24)" * (cast_expression "(uint *)(puVar36 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x24)" ( (binary_expression "puVar36 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar36 + -4) = pcVar38;" (assignment_expression "*(code **)(puVar36 + -4) = pcVar38" (pointer_expression "*(code **)(puVar36 + -4)" * (cast_expression "(code **)(puVar36 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -4)" ( (binary_expression "puVar36 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar17 = iVar19 * 4;" (assignment_expression "uVar17 = iVar19 * 4" identifier = (binary_expression "iVar19 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar36 + -0x3c) = iVar19;" (assignment_expression "*(int *)(puVar36 + -0x3c) = iVar19" (pointer_expression "*(int *)(puVar36 + -0x3c)" * (cast_expression "(int *)(puVar36 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32;" (assignment_expression "*(__gmp_randstate_struct **)(puVar36 + -0xc) = p_Var32" (pointer_expression "*(__gmp_randstate_struct **)(puVar36 + -0xc)" * (cast_expression "(__gmp_randstate_struct **)(puVar36 + -0xc)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0xc)" ( (binary_expression "puVar36 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30;" (assignment_expression "*(__gmp_randstate_struct **)(puVar36 + -0x1c) = p_Var30" (pointer_expression "*(__gmp_randstate_struct **)(puVar36 + -0x1c)" * (cast_expression "(__gmp_randstate_struct **)(puVar36 + -0x1c)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x1c)" ( (binary_expression "puVar36 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar36 + -0x20) = puVar4;" (assignment_expression "*(undefined **)(puVar36 + -0x20) = puVar4" (pointer_expression "*(undefined **)(puVar36 + -0x20)" * (cast_expression "(undefined **)(puVar36 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x20)" ( (binary_expression "puVar36 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar36 + -0x50) = puVar34;" (assignment_expression "*(undefined **)(puVar36 + -0x50) = puVar34" (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar36 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar36 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar36 + -0x30)" * (cast_expression "(undefined4 *)(puVar36 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x30)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar36 + -0x44) = uVar17;" (assignment_expression "*(uint *)(puVar36 + -0x44) = uVar17" (pointer_expression "*(uint *)(puVar36 + -0x44)" * (cast_expression "(uint *)(puVar36 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = piVar21;" (assignment_expression "piVar20 = piVar21" identifier = identifier) ;) (if_statement "if (uVar17 < 0x7f01) {\n    iVar19 = -(uVar17 + 7 & 0xfffffff8);\n    puVar37 = puVar36 + iVar19 + -0x60;\n    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);\n    p_Var32 = p_Var18;\n  }\n  else {\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }" if (parenthesized_expression "(uVar17 < 0x7f01)" ( (binary_expression "uVar17 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar19 = -(uVar17 + 7 & 0xfffffff8);\n    puVar37 = puVar36 + iVar19 + -0x60;\n    p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);\n    p_Var32 = p_Var18;\n  }" { (expression_statement "iVar19 = -(uVar17 + 7 & 0xfffffff8);" (assignment_expression "iVar19 = -(uVar17 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar17 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar17 + 7 & 0xfffffff8)" ( (binary_expression "uVar17 + 7 & 0xfffffff8" (binary_expression "uVar17 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar37 = puVar36 + iVar19 + -0x60;" (assignment_expression "puVar37 = puVar36 + iVar19 + -0x60" identifier = (binary_expression "puVar36 + iVar19 + -0x60" (binary_expression "puVar36 + iVar19" identifier + identifier) + number_literal)) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50)" identifier = (cast_expression "(__gmp_randstate_struct *)(puVar36 + iVar19 + -0x50)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + iVar19 + -0x50)" ( (binary_expression "puVar36 + iVar19 + -0x50" (binary_expression "puVar36 + iVar19" identifier + identifier) + number_literal) )))) ;) (expression_statement "p_Var32 = p_Var18;" (assignment_expression "p_Var32 = p_Var18" identifier = identifier) ;) }) (else_clause "else {\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }" else (compound_statement "{\n    p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);\n    p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n  }" { (expression_statement "p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44);" (assignment_expression "p_Var32 = *(__gmp_randstate_struct **)(puVar36 + -0x44)" identifier = (pointer_expression "*(__gmp_randstate_struct **)(puVar36 + -0x44)" * (cast_expression "(__gmp_randstate_struct **)(puVar36 + -0x44)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32)" identifier = (cast_expression "(__gmp_randstate_struct *)(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar33 + 0x1b3f4))(puVar36 + -0x30,p_Var32)" (parenthesized_expression "(**(code **)(puVar33 + 0x1b3f4))" ( (pointer_expression "**(code **)(puVar33 + 0x1b3f4)" * (pointer_expression "*(code **)(puVar33 + 0x1b3f4)" * (cast_expression "(code **)(puVar33 + 0x1b3f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar33 + 0x1b3f4)" ( (binary_expression "puVar33 + 0x1b3f4" identifier + number_literal) ))))) )) (argument_list "(puVar36 + -0x30,p_Var32)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) }))) (expression_statement "piVar29 = *(int **)(puVar34 + -0x7fd4);" (assignment_expression "piVar29 = *(int **)(puVar34 + -0x7fd4)" identifier = (pointer_expression "*(int **)(puVar34 + -0x7fd4)" * (cast_expression "(int **)(puVar34 + -0x7fd4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x7fd4)" ( (binary_expression "puVar34 + -0x7fd4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f;" (assignment_expression "*(uint *)(puVar36 + -0x40) = (uint)piVar26 & 0x1f" (pointer_expression "*(uint *)(puVar36 + -0x40)" * (cast_expression "(uint *)(puVar36 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)piVar26 & 0x1f" (cast_expression "(uint)piVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(int **)(puVar36 + -0x34) = piVar29 + -0x111b;" (assignment_expression "*(int **)(puVar36 + -0x34) = piVar29 + -0x111b" (pointer_expression "*(int **)(puVar36 + -0x34)" * (cast_expression "(int **)(puVar36 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) )))) = (binary_expression "piVar29 + -0x111b" identifier + number_literal)) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "piVar5 = piVar26;" (assignment_expression "piVar5 = piVar26" identifier = identifier) ;) (expression_statement "piVar13 = (int *)0x0;" (assignment_expression "piVar13 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (piVar1 = piVar5, piVar1 <= piVar21) {\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;\n    if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }\n    uVar17 = (uint)piVar1 >> 5;\n    piVar13 = piVar1;\n    piVar5 = (int *)((int)piVar26 + (int)piVar1);\n  }" while (parenthesized_expression "(piVar1 = piVar5, piVar1 <= piVar21)" ( (comma_expression "piVar1 = piVar5, piVar1 <= piVar21" (assignment_expression "piVar1 = piVar5" identifier = identifier) , (binary_expression "piVar1 <= piVar21" identifier <= identifier)) )) (compound_statement "{\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;\n    if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }\n    uVar17 = (uint)piVar1 >> 5;\n    piVar13 = piVar1;\n    piVar5 = (int *)((int)piVar26 + (int)piVar1);\n  }" { (expression_statement "p_Var32 = (__gmp_randstate_struct *)pmVar28[2];" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)pmVar28[2]" identifier = (cast_expression "(__gmp_randstate_struct *)pmVar28[2]" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar28[2]" identifier [ number_literal ]))) ;) (expression_statement "pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f);" (assignment_expression "pmVar24 = (mp_limb_t *)((uint)piVar13 & 0x1f)" identifier = (cast_expression "(mp_limb_t *)((uint)piVar13 & 0x1f)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)piVar13 & 0x1f)" ( (binary_expression "(uint)piVar13 & 0x1f" (cast_expression "(uint)piVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17;" (assignment_expression "piVar29 = &p_Var18->_mp_seed[0]._mp_alloc + uVar17" identifier = (binary_expression "&p_Var18->_mp_seed[0]._mp_alloc + uVar17" (pointer_expression "&p_Var18->_mp_seed[0]._mp_alloc" & (field_expression "p_Var18->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var18->_mp_seed[0]" (field_expression "p_Var18->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + identifier)) ;) (if_statement "if (pmVar24 == (mp_limb_t *)0x0) {\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }\n    else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }" if (parenthesized_expression "(pmVar24 == (mp_limb_t *)0x0)" ( (binary_expression "pmVar24 == (mp_limb_t *)0x0" identifier == (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar36 + -0x34))(piVar29,p_Var32);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n    }" { (expression_statement "(**(code **)(puVar36 + -0x34))(piVar29,p_Var32);" (call_expression "(**(code **)(puVar36 + -0x34))(piVar29,p_Var32)" (parenthesized_expression "(**(code **)(puVar36 + -0x34))" ( (pointer_expression "**(code **)(puVar36 + -0x34)" * (pointer_expression "*(code **)(puVar36 + -0x34)" * (cast_expression "(code **)(puVar36 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) ))))) )) (argument_list "(piVar29,p_Var32)" ( identifier , identifier ))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }" else (compound_statement "{\n      (**(code **)(puVar36 + -0x34))(p_Var30);\n      piVar20 = *(int **)(puVar36 + -0x3c);\n      pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);\n      *(int *)(puVar36 + -0x38) = *piVar29;\n      p_Var32 = p_Var30;\n      pmVar22 = pmVar24;\n      uVar7 = (*pcVar38)(piVar29,p_Var30);\n      iVar19 = *(int *)(puVar36 + -0x40);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);\n      if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }\n    }" { (expression_statement "(**(code **)(puVar36 + -0x34))(p_Var30);" (call_expression "(**(code **)(puVar36 + -0x34))(p_Var30)" (parenthesized_expression "(**(code **)(puVar36 + -0x34))" ( (pointer_expression "**(code **)(puVar36 + -0x34)" * (pointer_expression "*(code **)(puVar36 + -0x34)" * (cast_expression "(code **)(puVar36 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) ))))) )) (argument_list "(p_Var30)" ( identifier ))) ;) (expression_statement "piVar20 = *(int **)(puVar36 + -0x3c);" (assignment_expression "piVar20 = *(int **)(puVar36 + -0x3c)" identifier = (pointer_expression "*(int **)(puVar36 + -0x3c)" * (cast_expression "(int **)(puVar36 + -0x3c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x3c)" ( (binary_expression "puVar36 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4);" (assignment_expression "pcVar38 = *(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4)" identifier = (pointer_expression "*(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar36 + -0x50) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar36 + -0x50) + -0x7ad4)" ( (binary_expression "*(int *)(puVar36 + -0x50) + -0x7ad4" (pointer_expression "*(int *)(puVar36 + -0x50)" * (cast_expression "(int *)(puVar36 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar36 + -0x38) = *piVar29;" (assignment_expression "*(int *)(puVar36 + -0x38) = *piVar29" (pointer_expression "*(int *)(puVar36 + -0x38)" * (cast_expression "(int *)(puVar36 + -0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x38)" ( (binary_expression "puVar36 + -0x38" identifier + number_literal) )))) = (pointer_expression "*piVar29" * identifier)) ;) (expression_statement "p_Var32 = p_Var30;" (assignment_expression "p_Var32 = p_Var30" identifier = identifier) ;) (expression_statement "pmVar22 = pmVar24;" (assignment_expression "pmVar22 = pmVar24" identifier = identifier) ;) (expression_statement "uVar7 = (*pcVar38)(piVar29,p_Var30);" (assignment_expression "uVar7 = (*pcVar38)(piVar29,p_Var30)" identifier = (call_expression "(*pcVar38)(piVar29,p_Var30)" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "(piVar29,p_Var30)" ( identifier , identifier )))) ;) (expression_statement "iVar19 = *(int *)(puVar36 + -0x40);" (assignment_expression "iVar19 = *(int *)(puVar36 + -0x40)" identifier = (pointer_expression "*(int *)(puVar36 + -0x40)" * (cast_expression "(int *)(puVar36 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x40)" ( (binary_expression "puVar36 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38);" (assignment_expression "*piVar29 = *piVar29 | *(uint *)(puVar36 + -0x38)" (pointer_expression "*piVar29" * identifier) = (binary_expression "*piVar29 | *(uint *)(puVar36 + -0x38)" (pointer_expression "*piVar29" * identifier) | (pointer_expression "*(uint *)(puVar36 + -0x38)" * (cast_expression "(uint *)(puVar36 + -0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x38)" ( (binary_expression "puVar36 + -0x38" identifier + number_literal) )))))) ;) (if_statement "if ((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)) {\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }" if (parenthesized_expression "((undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24))" ( (binary_expression "(undefined1 *)0x20 < (undefined1 *)(iVar19 + (int)pmVar24)" (cast_expression "(undefined1 *)0x20" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < (cast_expression "(undefined1 *)(iVar19 + (int)pmVar24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + (int)pmVar24)" ( (binary_expression "iVar19 + (int)pmVar24" identifier + (cast_expression "(int)pmVar24" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        *(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;\n      }" { (expression_statement "*(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7;" (assignment_expression "*(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44)) = uVar7" (pointer_expression "*(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44))" * (cast_expression "(undefined4 *)((int)piVar29 + *(int *)(puVar36 + -0x44))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar29 + *(int *)(puVar36 + -0x44))" ( (binary_expression "(int)piVar29 + *(int *)(puVar36 + -0x44)" (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar36 + -0x44)" * (cast_expression "(int *)(puVar36 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x44)" ( (binary_expression "puVar36 + -0x44" identifier + number_literal) ))))) )))) = identifier) ;) })) }))) (expression_statement "uVar17 = (uint)piVar1 >> 5;" (assignment_expression "uVar17 = (uint)piVar1 >> 5" identifier = (binary_expression "(uint)piVar1 >> 5" (cast_expression "(uint)piVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "piVar13 = piVar1;" (assignment_expression "piVar13 = piVar1" identifier = identifier) ;) (expression_statement "piVar5 = (int *)((int)piVar26 + (int)piVar1);" (assignment_expression "piVar5 = (int *)((int)piVar26 + (int)piVar1)" identifier = (cast_expression "(int *)((int)piVar26 + (int)piVar1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar26 + (int)piVar1)" ( (binary_expression "(int)piVar26 + (int)piVar1" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)piVar1" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (piVar13 == piVar21) {\n    iVar19 = *(int *)(puVar36 + -0x30);\nLAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n    if (iVar19 == 0) goto LAB_0007c05c;\n  }\n  else {\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }" if (parenthesized_expression "(piVar13 == piVar21)" ( (binary_expression "piVar13 == piVar21" identifier == identifier) )) (compound_statement "{\n    iVar19 = *(int *)(puVar36 + -0x30);\nLAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n    if (iVar19 == 0) goto LAB_0007c05c;\n  }" { (expression_statement "iVar19 = *(int *)(puVar36 + -0x30);" (assignment_expression "iVar19 = *(int *)(puVar36 + -0x30)" identifier = (pointer_expression "*(int *)(puVar36 + -0x30)" * (cast_expression "(int *)(puVar36 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x30)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c054:\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);" statement_identifier : (expression_statement "pcVar38 = *(code **)(puVar34 + -0x7a2c);" (assignment_expression "pcVar38 = *(code **)(puVar34 + -0x7a2c)" identifier = (pointer_expression "*(code **)(puVar34 + -0x7a2c)" * (cast_expression "(code **)(puVar34 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x7a2c)" ( (binary_expression "puVar34 + -0x7a2c" identifier + number_literal) ))))) ;)) (if_statement "if (iVar19 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) }) (else_clause "else {\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }" else (compound_statement "{\n    puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));\n    piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);\n    if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }\n    p_Var32 = (__gmp_randstate_struct *)pmVar28[2];\n    pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);\n    *(int **)(puVar36 + -0x34) = piVar13;\n    piVar29 = (int *)((int)puVar10 >> 5);\n    lc((mp_ptr)p_Var30,p_Var32);\n    puVar34 = *(undefined **)(puVar36 + -0x50);\n    if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }\n    uVar17 = (uint)piVar21 & 0x1f;\n    iVar19 = *(int *)(puVar36 + -0x30);\n    if (uVar17 == 0) goto LAB_0007c054;\n    piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);\n    *piVar21 = *piVar21 & ~(-1 << uVar17);\n    if (iVar19 == 0) goto LAB_0007c05c;\n    pcVar38 = *(code **)(puVar34 + -0x7a2c);\n  }" { (expression_statement "puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13));" (assignment_expression "puVar10 = (undefined1 *)((int)piVar21 + (0x1f - (int)piVar13))" identifier = (cast_expression "(undefined1 *)((int)piVar21 + (0x1f - (int)piVar13))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + (0x1f - (int)piVar13))" ( (binary_expression "(int)piVar21 + (0x1f - (int)piVar13)" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x1f - (int)piVar13)" ( (binary_expression "0x1f - (int)piVar13" number_literal - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) (expression_statement "piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5);" (assignment_expression "piVar26 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5)" identifier = (binary_expression "&p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar13 >> 5)" (pointer_expression "&p_Var18->_mp_seed[0]._mp_alloc" & (field_expression "p_Var18->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var18->_mp_seed[0]" (field_expression "p_Var18->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "((uint)piVar13 >> 5)" ( (binary_expression "(uint)piVar13 >> 5" (cast_expression "(uint)piVar13" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)puVar10 < 0) {\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }" if (parenthesized_expression "((int)puVar10 < 0)" ( (binary_expression "(int)puVar10 < 0" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));\n    }" { (expression_statement "puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13));" (assignment_expression "puVar10 = (undefined1 *)((int)piVar21 + (0x3e - (int)piVar13))" identifier = (cast_expression "(undefined1 *)((int)piVar21 + (0x3e - (int)piVar13))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar21 + (0x3e - (int)piVar13))" ( (binary_expression "(int)piVar21 + (0x3e - (int)piVar13)" (cast_expression "(int)piVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x3e - (int)piVar13)" ( (binary_expression "0x3e - (int)piVar13" number_literal - (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) ;) })) (expression_statement "p_Var32 = (__gmp_randstate_struct *)pmVar28[2];" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)pmVar28[2]" identifier = (cast_expression "(__gmp_randstate_struct *)pmVar28[2]" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar28[2]" identifier [ number_literal ]))) ;) (expression_statement "pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f);" (assignment_expression "pmVar28 = (mp_limb_t *)((uint)piVar13 & 0x1f)" identifier = (cast_expression "(mp_limb_t *)((uint)piVar13 & 0x1f)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)piVar13 & 0x1f)" ( (binary_expression "(uint)piVar13 & 0x1f" (cast_expression "(uint)piVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(int **)(puVar36 + -0x34) = piVar13;" (assignment_expression "*(int **)(puVar36 + -0x34) = piVar13" (pointer_expression "*(int **)(puVar36 + -0x34)" * (cast_expression "(int **)(puVar36 + -0x34)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar29 = (int *)((int)puVar10 >> 5);" (assignment_expression "piVar29 = (int *)((int)puVar10 >> 5)" identifier = (cast_expression "(int *)((int)puVar10 >> 5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 >> 5)" ( (binary_expression "(int)puVar10 >> 5" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "lc((mp_ptr)p_Var30,p_Var32);" (call_expression "lc((mp_ptr)p_Var30,p_Var32)" identifier (argument_list "((mp_ptr)p_Var30,p_Var32)" ( (cast_expression "(mp_ptr)p_Var30" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (if_statement "if (pmVar28 == (mp_limb_t *)0x0) {\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }\n    else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }" if (parenthesized_expression "(pmVar28 == (mp_limb_t *)0x0)" ( (binary_expression "pmVar28 == (mp_limb_t *)0x0" identifier == (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }\n    }" { (if_statement "if (piVar29 != (int *)0x0) {\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }" if (parenthesized_expression "(piVar29 != (int *)0x0)" ( (binary_expression "piVar29 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;\n        if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }\n        *piVar26 = (int)p_Var32;\n      }" { (expression_statement "p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc;" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc" identifier = (cast_expression "(__gmp_randstate_struct *)p_Var30->_mp_seed[0]._mp_alloc" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if (piVar29 != (int *)&DAT_00000001) {\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }" if (parenthesized_expression "(piVar29 != (int *)&DAT_00000001)" ( (binary_expression "piVar29 != (int *)&DAT_00000001" identifier != (cast_expression "(int *)&DAT_00000001" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) )) (compound_statement "{\n          p_Var3 = p_Var30->_mp_seed;\n          p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);\n          ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;\n          piVar13 = piVar26;\n          do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);\n          piVar26 = piVar26 + (int)((int)piVar29 + -1);\n        }" { (expression_statement "p_Var3 = p_Var30->_mp_seed;" (assignment_expression "p_Var3 = p_Var30->_mp_seed" identifier = (field_expression "p_Var30->_mp_seed" identifier -> field_identifier)) ;) (expression_statement "p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29);" (assignment_expression "p_Var30 = (__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29)" identifier = (cast_expression "(__gmp_randstate_struct *)(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29)" ( (binary_expression "&p_Var30->_mp_seed[0]._mp_alloc + (int)piVar29" (pointer_expression "&p_Var30->_mp_seed[0]._mp_alloc" & (field_expression "p_Var30->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var30->_mp_seed[0]" (field_expression "p_Var30->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size;" (assignment_expression "ppmVar8 = (mp_limb_t **)&p_Var3->_mp_size" identifier = (cast_expression "(mp_limb_t **)&p_Var3->_mp_size" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&p_Var3->_mp_size" & (field_expression "p_Var3->_mp_size" identifier -> field_identifier)))) ;) (expression_statement "piVar13 = piVar26;" (assignment_expression "piVar13 = piVar26" identifier = identifier) ;) (do_statement "do {\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          } while ((__gmp_randstate_struct *)ppmVar2 != p_Var30);" do (compound_statement "{\n            *piVar13 = (int)p_Var32;\n            ppmVar2 = ppmVar8 + 1;\n            p_Var32 = (__gmp_randstate_struct *)*ppmVar8;\n            ppmVar8 = ppmVar2;\n            piVar13 = piVar13 + 1;\n          }" { (expression_statement "*piVar13 = (int)p_Var32;" (assignment_expression "*piVar13 = (int)p_Var32" (pointer_expression "*piVar13" * identifier) = (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ppmVar2 = ppmVar8 + 1;" (assignment_expression "ppmVar2 = ppmVar8 + 1" identifier = (binary_expression "ppmVar8 + 1" identifier + number_literal)) ;) (expression_statement "p_Var32 = (__gmp_randstate_struct *)*ppmVar8;" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)*ppmVar8" identifier = (cast_expression "(__gmp_randstate_struct *)*ppmVar8" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppmVar8" * identifier))) ;) (expression_statement "ppmVar8 = ppmVar2;" (assignment_expression "ppmVar8 = ppmVar2" identifier = identifier) ;) (expression_statement "piVar13 = piVar13 + 1;" (assignment_expression "piVar13 = piVar13 + 1" identifier = (binary_expression "piVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((__gmp_randstate_struct *)ppmVar2 != p_Var30)" ( (binary_expression "(__gmp_randstate_struct *)ppmVar2 != p_Var30" (cast_expression "(__gmp_randstate_struct *)ppmVar2" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (expression_statement "piVar26 = piVar26 + (int)((int)piVar29 + -1);" (assignment_expression "piVar26 = piVar26 + (int)((int)piVar29 + -1)" identifier = (binary_expression "piVar26 + (int)((int)piVar29 + -1)" identifier + (cast_expression "(int)((int)piVar29 + -1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)piVar29 + -1)" ( (binary_expression "(int)piVar29 + -1" (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "*piVar26 = (int)p_Var32;" (assignment_expression "*piVar26 = (int)p_Var32" (pointer_expression "*piVar26" * identifier) = (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) }) (else_clause "else {\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }" else (compound_statement "{\n      uVar25 = *piVar26;\n      piVar20 = piVar29;\n      pmVar22 = pmVar28;\n      uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);\n      p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);\n      iVar19 = *(int *)(puVar36 + -0x34);\n      puVar34 = *(undefined **)(puVar36 + -0x50);\n      *piVar26 = *piVar26 | uVar25;\n      if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }\n    }" { (expression_statement "uVar25 = *piVar26;" (assignment_expression "uVar25 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (expression_statement "piVar20 = piVar29;" (assignment_expression "piVar20 = piVar29" identifier = identifier) ;) (expression_statement "pmVar22 = pmVar28;" (assignment_expression "pmVar22 = pmVar28" identifier = identifier) ;) (expression_statement "uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30);" (assignment_expression "uVar17 = (**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30)" identifier = (call_expression "(**(code **)(puVar34 + -0x7ad4))(piVar26,p_Var30)" (parenthesized_expression "(**(code **)(puVar34 + -0x7ad4))" ( (pointer_expression "**(code **)(puVar34 + -0x7ad4)" * (pointer_expression "*(code **)(puVar34 + -0x7ad4)" * (cast_expression "(code **)(puVar34 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x7ad4)" ( (binary_expression "puVar34 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(piVar26,p_Var30)" ( identifier , identifier )))) ;) (expression_statement "p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20);" (assignment_expression "p_Var32 = (__gmp_randstate_struct *)((int)piVar29 * 0x20)" identifier = (cast_expression "(__gmp_randstate_struct *)((int)piVar29 * 0x20)" ( (type_descriptor "__gmp_randstate_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar29 * 0x20)" ( (binary_expression "(int)piVar29 * 0x20" (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "iVar19 = *(int *)(puVar36 + -0x34);" (assignment_expression "iVar19 = *(int *)(puVar36 + -0x34)" identifier = (pointer_expression "*(int *)(puVar36 + -0x34)" * (cast_expression "(int *)(puVar36 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x34)" ( (binary_expression "puVar36 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*piVar26 = *piVar26 | uVar25;" (assignment_expression "*piVar26 = *piVar26 | uVar25" (pointer_expression "*piVar26" * identifier) = (binary_expression "*piVar26 | uVar25" (pointer_expression "*piVar26" * identifier) | identifier)) ;) (if_statement "if ((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21) {\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }" if (parenthesized_expression "((uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21)" ( (binary_expression "(uint *)((iVar19 - (int)pmVar28) + (int)p_Var32) < piVar21" (cast_expression "(uint *)((iVar19 - (int)pmVar28) + (int)p_Var32)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar19 - (int)pmVar28) + (int)p_Var32)" ( (binary_expression "(iVar19 - (int)pmVar28) + (int)p_Var32" (parenthesized_expression "(iVar19 - (int)pmVar28)" ( (binary_expression "iVar19 - (int)pmVar28" identifier - (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)p_Var32" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) )) (compound_statement "{\n        piVar26 = piVar26 + (int)piVar29;\n        *piVar26 = uVar17;\n      }" { (expression_statement "piVar26 = piVar26 + (int)piVar29;" (assignment_expression "piVar26 = piVar26 + (int)piVar29" identifier = (binary_expression "piVar26 + (int)piVar29" identifier + (cast_expression "(int)piVar29" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*piVar26 = uVar17;" (assignment_expression "*piVar26 = uVar17" (pointer_expression "*piVar26" * identifier) = identifier) ;) })) }))) (expression_statement "uVar17 = (uint)piVar21 & 0x1f;" (assignment_expression "uVar17 = (uint)piVar21 & 0x1f" identifier = (binary_expression "(uint)piVar21 & 0x1f" (cast_expression "(uint)piVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "iVar19 = *(int *)(puVar36 + -0x30);" (assignment_expression "iVar19 = *(int *)(puVar36 + -0x30)" identifier = (pointer_expression "*(int *)(puVar36 + -0x30)" * (cast_expression "(int *)(puVar36 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x30)" ( (binary_expression "puVar36 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (uVar17 == 0) goto LAB_0007c054;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c054;" goto statement_identifier ;)) (expression_statement "piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5);" (assignment_expression "piVar21 = &p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5)" identifier = (binary_expression "&p_Var18->_mp_seed[0]._mp_alloc + ((uint)piVar21 >> 5)" (pointer_expression "&p_Var18->_mp_seed[0]._mp_alloc" & (field_expression "p_Var18->_mp_seed[0]._mp_alloc" (subscript_expression "p_Var18->_mp_seed[0]" (field_expression "p_Var18->_mp_seed" identifier -> field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "((uint)piVar21 >> 5)" ( (binary_expression "(uint)piVar21 >> 5" (cast_expression "(uint)piVar21" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*piVar21 = *piVar21 & ~(-1 << uVar17);" (assignment_expression "*piVar21 = *piVar21 & ~(-1 << uVar17)" (pointer_expression "*piVar21" * identifier) = (binary_expression "*piVar21 & ~(-1 << uVar17)" (pointer_expression "*piVar21" * identifier) & (unary_expression "~(-1 << uVar17)" ~ (parenthesized_expression "(-1 << uVar17)" ( (binary_expression "-1 << uVar17" number_literal << identifier) ))))) ;) (if_statement "if (iVar19 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) (expression_statement "pcVar38 = *(code **)(puVar34 + -0x7a2c);" (assignment_expression "pcVar38 = *(code **)(puVar34 + -0x7a2c)" identifier = (pointer_expression "*(code **)(puVar34 + -0x7a2c)" * (cast_expression "(code **)(puVar34 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x7a2c)" ( (binary_expression "puVar34 + -0x7a2c" identifier + number_literal) ))))) ;) }))) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar34 = *(undefined **)(puVar36 + -0x50);" (assignment_expression "puVar34 = *(undefined **)(puVar36 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar36 + -0x50)" * (cast_expression "(undefined **)(puVar36 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x50)" ( (binary_expression "puVar36 + -0x50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c05c:\n  if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {\n    return **(ulong **)(puVar36 + -0x48);\n  }" statement_identifier : (if_statement "if (*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)) {\n    return **(ulong **)(puVar36 + -0x48);\n  }" if (parenthesized_expression "(*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48))" ( (binary_expression "*(ulong *)(puVar36 + -0x2c) == **(ulong **)(puVar36 + -0x48)" (pointer_expression "*(ulong *)(puVar36 + -0x2c)" * (cast_expression "(ulong *)(puVar36 + -0x2c)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + -0x2c)" ( (binary_expression "puVar36 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(ulong **)(puVar36 + -0x48)" * (pointer_expression "*(ulong **)(puVar36 + -0x48)" * (cast_expression "(ulong **)(puVar36 + -0x48)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) )))))) )) (compound_statement "{\n    return **(ulong **)(puVar36 + -0x48);\n  }" { (return_statement "return **(ulong **)(puVar36 + -0x48);" return (pointer_expression "**(ulong **)(puVar36 + -0x48)" * (pointer_expression "*(ulong **)(puVar36 + -0x48)" * (cast_expression "(ulong **)(puVar36 + -0x48)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar36 + -0x48)" ( (binary_expression "puVar36 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar38 = *(code **)(puVar34 + -0x7b70);" (assignment_expression "pcVar38 = *(code **)(puVar34 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar34 + -0x7b70)" * (cast_expression "(code **)(puVar34 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x7b70)" ( (binary_expression "puVar34 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar39 = __gmp_randinit_lc_2exp;" (assignment_expression "pcVar39 = __gmp_randinit_lc_2exp" identifier = identifier) ;) (expression_statement "(*pcVar38)();" (call_expression "(*pcVar38)()" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40;" (assignment_expression "*(code **)(puVar37 + -0x28) = pcVar38 + 0x22e40" (pointer_expression "*(code **)(puVar37 + -0x28)" * (cast_expression "(code **)(puVar37 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar38 + 0x22e40" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar37 + -4) = pcVar39;" (assignment_expression "*(code **)(puVar37 + -4) = pcVar39" (pointer_expression "*(code **)(puVar37 + -4)" * (cast_expression "(code **)(puVar37 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -4)" ( (binary_expression "puVar37 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18;" (assignment_expression "*(__gmp_randstate_struct **)(puVar37 + -8) = p_Var18" (pointer_expression "*(__gmp_randstate_struct **)(puVar37 + -8)" * (cast_expression "(__gmp_randstate_struct **)(puVar37 + -8)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -8)" ( (binary_expression "puVar37 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(puVar37 + -0xc) = pmVar28;" (assignment_expression "*(mp_limb_t **)(puVar37 + -0xc) = pmVar28" (pointer_expression "*(mp_limb_t **)(puVar37 + -0xc)" * (cast_expression "(mp_limb_t **)(puVar37 + -0xc)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xc)" ( (binary_expression "puVar37 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30;" (assignment_expression "*(__gmp_randstate_struct **)(puVar37 + -0x10) = p_Var30" (pointer_expression "*(__gmp_randstate_struct **)(puVar37 + -0x10)" * (cast_expression "(__gmp_randstate_struct **)(puVar37 + -0x10)" ( (type_descriptor "__gmp_randstate_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x10)" ( (binary_expression "puVar37 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar37 + -0x14) = piVar29;" (assignment_expression "*(int **)(puVar37 + -0x14) = piVar29" (pointer_expression "*(int **)(puVar37 + -0x14)" * (cast_expression "(int **)(puVar37 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x14)" ( (binary_expression "puVar37 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar37 + -0x18) = piVar21;" (assignment_expression "*(int **)(puVar37 + -0x18) = piVar21" (pointer_expression "*(int **)(puVar37 + -0x18)" * (cast_expression "(int **)(puVar37 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x18)" ( (binary_expression "puVar37 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar37 + -0x1c) = piVar26;" (assignment_expression "*(int **)(puVar37 + -0x1c) = piVar26" (pointer_expression "*(int **)(puVar37 + -0x1c)" * (cast_expression "(int **)(puVar37 + -0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x1c)" ( (binary_expression "puVar37 + -0x1c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pmVar22 != (mp_limb_t *)0x0) {\n    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;\n    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);\n    iVar35 = *(int *)(puVar37 + -0x28);\n    *(int *)(iVar19 + 8) = iVar11;\n    pcVar38 = *(code **)(iVar35 + -0x7ebc);\n    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;\n    (*pcVar38)(iVar11,pmVar22);\n    iVar19 = *(int *)(puVar37 + -0x28);\n    puVar6 = *(undefined4 **)(iVar11 + 8);\n    if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }\n    pcVar38 = *(code **)(iVar19 + -0x7f10);\n    *(uint *)(iVar11 + 4) = uVar17;\n    *puVar6 = 1;\n    (*pcVar38)(iVar11 + 0xc);\n    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);\n    if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }\n    *(int **)(iVar11 + 0x1c) = piVar20;\n    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;\n    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);\n    return (uint)(piVar20 != (int *)0x0);\n  }" if (parenthesized_expression "(pmVar22 != (mp_limb_t *)0x0)" ( (binary_expression "pmVar22 != (mp_limb_t *)0x0" identifier != (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;\n    iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);\n    iVar35 = *(int *)(puVar37 + -0x28);\n    *(int *)(iVar19 + 8) = iVar11;\n    pcVar38 = *(code **)(iVar35 + -0x7ebc);\n    *(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;\n    (*pcVar38)(iVar11,pmVar22);\n    iVar19 = *(int *)(puVar37 + -0x28);\n    puVar6 = *(undefined4 **)(iVar11 + 8);\n    if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }\n    pcVar38 = *(code **)(iVar19 + -0x7f10);\n    *(uint *)(iVar11 + 4) = uVar17;\n    *puVar6 = 1;\n    (*pcVar38)(iVar11 + 0xc);\n    (**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);\n    if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }\n    *(int **)(iVar11 + 0x1c) = piVar20;\n    *(mp_limb_t **)(iVar11 + 0x20) = pmVar22;\n    *(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);\n    return (uint)(piVar20 != (int *)0x0);\n  }" { (expression_statement "uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5;" (assignment_expression "uVar17 = (uint)((int)pmVar22 + 0x1f) >> 5" identifier = (binary_expression "(uint)((int)pmVar22 + 0x1f) >> 5" (call_expression "(uint)((int)pmVar22 + 0x1f)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pmVar22 + 0x1f)" ( (binary_expression "(int)pmVar22 + 0x1f" (cast_expression "(int)pmVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) >> number_literal)) ;) (expression_statement "iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24);" (assignment_expression "iVar11 = (*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))(0x24)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar38 + 0x1b30c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar38 + 0x1b30c)" * (cast_expression "(code *)**(undefined4 **)(pcVar38 + 0x1b30c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar38 + 0x1b30c)" * (pointer_expression "*(undefined4 **)(pcVar38 + 0x1b30c)" * (cast_expression "(undefined4 **)(pcVar38 + 0x1b30c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x1b30c)" ( (binary_expression "pcVar38 + 0x1b30c" identifier + number_literal) ))))))) )) (argument_list "(0x24)" ( number_literal )))) ;) (expression_statement "iVar35 = *(int *)(puVar37 + -0x28);" (assignment_expression "iVar35 = *(int *)(puVar37 + -0x28)" identifier = (pointer_expression "*(int *)(puVar37 + -0x28)" * (cast_expression "(int *)(puVar37 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar19 + 8) = iVar11;" (assignment_expression "*(int *)(iVar19 + 8) = iVar11" (pointer_expression "*(int *)(iVar19 + 8)" * (cast_expression "(int *)(iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 8)" ( (binary_expression "iVar19 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar38 = *(code **)(iVar35 + -0x7ebc);" (assignment_expression "pcVar38 = *(code **)(iVar35 + -0x7ebc)" identifier = (pointer_expression "*(code **)(iVar35 + -0x7ebc)" * (cast_expression "(code **)(iVar35 + -0x7ebc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar35 + -0x7ebc)" ( (binary_expression "iVar35 + -0x7ebc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90;" (assignment_expression "*(int *)(iVar19 + 0x10) = *(int *)(iVar35 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar19 + 0x10)" * (cast_expression "(int *)(iVar19 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x10)" ( (binary_expression "iVar19 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar35 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar35 + -0x7fe4)" * (cast_expression "(int *)(iVar35 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar35 + -0x7fe4)" ( (binary_expression "iVar35 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar38)(iVar11,pmVar22);" (call_expression "(*pcVar38)(iVar11,pmVar22)" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "(iVar11,pmVar22)" ( identifier , identifier ))) ;) (expression_statement "iVar19 = *(int *)(puVar37 + -0x28);" (assignment_expression "iVar19 = *(int *)(puVar37 + -0x28)" identifier = (pointer_expression "*(int *)(puVar37 + -0x28)" * (cast_expression "(int *)(puVar37 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = *(undefined4 **)(iVar11 + 8);" (assignment_expression "puVar6 = *(undefined4 **)(iVar11 + 8)" identifier = (pointer_expression "*(undefined4 **)(iVar11 + 8)" * (cast_expression "(undefined4 **)(iVar11 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar17 != 0) {\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }" if (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar14 = puVar6;\n      do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);\n    }" { (expression_statement "puVar14 = puVar6;" (assignment_expression "puVar14 = puVar6" identifier = identifier) ;) (do_statement "do {\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      } while (puVar15 != puVar6 + uVar17);" do (compound_statement "{\n        puVar15 = puVar14 + 1;\n        *puVar14 = 0;\n        puVar14 = puVar15;\n      }" { (expression_statement "puVar15 = puVar14 + 1;" (assignment_expression "puVar15 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = 0;" (assignment_expression "*puVar14 = 0" (pointer_expression "*puVar14" * identifier) = number_literal) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "(puVar15 != puVar6 + uVar17)" ( (binary_expression "puVar15 != puVar6 + uVar17" identifier != (binary_expression "puVar6 + uVar17" identifier + identifier)) )) ;) })) (expression_statement "pcVar38 = *(code **)(iVar19 + -0x7f10);" (assignment_expression "pcVar38 = *(code **)(iVar19 + -0x7f10)" identifier = (pointer_expression "*(code **)(iVar19 + -0x7f10)" * (cast_expression "(code **)(iVar19 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar19 + -0x7f10)" ( (binary_expression "iVar19 + -0x7f10" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar11 + 4) = uVar17;" (assignment_expression "*(uint *)(iVar11 + 4) = uVar17" (pointer_expression "*(uint *)(iVar11 + 4)" * (cast_expression "(uint *)(iVar11 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar6 = 1;" (assignment_expression "*puVar6 = 1" (pointer_expression "*puVar6" * identifier) = number_literal) ;) (expression_statement "(*pcVar38)(iVar11 + 0xc);" (call_expression "(*pcVar38)(iVar11 + 0xc)" (parenthesized_expression "(*pcVar38)" ( (pointer_expression "*pcVar38" * identifier) )) (argument_list "(iVar11 + 0xc)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22);" (call_expression "(**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))(iVar11 + 0xc,p_Var32,pmVar22)" (parenthesized_expression "(**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4))" ( (pointer_expression "**(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4)" * (pointer_expression "*(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4)" * (cast_expression "(code **)(*(int *)(puVar37 + -0x28) + -0x7ea4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar37 + -0x28) + -0x7ea4)" ( (binary_expression "*(int *)(puVar37 + -0x28) + -0x7ea4" (pointer_expression "*(int *)(puVar37 + -0x28)" * (cast_expression "(int *)(puVar37 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar11 + 0xc,p_Var32,pmVar22)" ( (binary_expression "iVar11 + 0xc" identifier + number_literal) , identifier , identifier ))) ;) (if_statement "if (*(int *)(iVar11 + 0x10) == 0) {\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }" if (parenthesized_expression "(*(int *)(iVar11 + 0x10) == 0)" ( (binary_expression "*(int *)(iVar11 + 0x10) == 0" (pointer_expression "*(int *)(iVar11 + 0x10)" * (cast_expression "(int *)(iVar11 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar11 + 0x10) = 1;\n      **(undefined4 **)(iVar11 + 0x14) = 0;\n    }" { (expression_statement "*(undefined4 *)(iVar11 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(iVar11 + 0x10) = 1" (pointer_expression "*(undefined4 *)(iVar11 + 0x10)" * (cast_expression "(undefined4 *)(iVar11 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x10)" ( (binary_expression "iVar11 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined4 **)(iVar11 + 0x14) = 0;" (assignment_expression "**(undefined4 **)(iVar11 + 0x14) = 0" (pointer_expression "**(undefined4 **)(iVar11 + 0x14)" * (pointer_expression "*(undefined4 **)(iVar11 + 0x14)" * (cast_expression "(undefined4 **)(iVar11 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 0x14)" ( (binary_expression "iVar11 + 0x14" identifier + number_literal) ))))) = number_literal) ;) })) (expression_statement "*(int **)(iVar11 + 0x1c) = piVar20;" (assignment_expression "*(int **)(iVar11 + 0x1c) = piVar20" (pointer_expression "*(int **)(iVar11 + 0x1c)" * (cast_expression "(int **)(iVar11 + 0x1c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 0x1c)" ( (binary_expression "iVar11 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mp_limb_t **)(iVar11 + 0x20) = pmVar22;" (assignment_expression "*(mp_limb_t **)(iVar11 + 0x20) = pmVar22" (pointer_expression "*(mp_limb_t **)(iVar11 + 0x20)" * (cast_expression "(mp_limb_t **)(iVar11 + 0x20)" ( (type_descriptor "mp_limb_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0);" (assignment_expression "*(uint *)(iVar11 + 0x18) = (uint)(piVar20 != (int *)0x0)" (pointer_expression "*(uint *)(iVar11 + 0x18)" * (cast_expression "(uint *)(iVar11 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x18)" ( (binary_expression "iVar11 + 0x18" identifier + number_literal) )))) = (call_expression "(uint)(piVar20 != (int *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (return_statement "return (uint)(piVar20 != (int *)0x0);" return (call_expression "(uint)(piVar20 != (int *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar20 != (int *)0x0)" ( (binary_expression "piVar20 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (expression_statement "uVar9 = (**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    );" (assignment_expression "uVar9 = (**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    )" identifier = (call_expression "(**(code **)(pcVar38 + 0x1b220))\n                    (*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    )" (parenthesized_expression "(**(code **)(pcVar38 + 0x1b220))" ( (pointer_expression "**(code **)(pcVar38 + 0x1b220)" * (pointer_expression "*(code **)(pcVar38 + 0x1b220)" * (cast_expression "(code **)(pcVar38 + 0x1b220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar38 + 0x1b220)" ( (binary_expression "pcVar38 + 0x1b220" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar38 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(pcVar38 + 0x1ae6c) + 0x5c78\n                    )" ( (binary_expression "*(int *)(pcVar38 + 0x1ae6c) + 0x5c84" (pointer_expression "*(int *)(pcVar38 + 0x1ae6c)" * (cast_expression "(int *)(pcVar38 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x1ae6c)" ( (binary_expression "pcVar38 + 0x1ae6c" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar38 + 0x1ae6c) + 0x5c78" (pointer_expression "*(int *)(pcVar38 + 0x1ae6c)" * (cast_expression "(int *)(pcVar38 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar38 + 0x1ae6c)" ( (binary_expression "pcVar38 + 0x1ae6c" identifier + number_literal) )))) + number_literal) )))) ;) (return_statement "return uVar9;" return identifier ;) })))
(translation_unit "uint FUN_0007bb94(undefined4 *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    \n                    \n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}\n\n" (function_definition "uint FUN_0007bb94(undefined4 *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    \n                    \n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" type_identifier (function_declarator "FUN_0007bb94(undefined4 *param_1,int param_2)" identifier (parameter_list "(undefined4 *param_1,int param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    \n                    \n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "undefined4 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined4 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "code *pcVar29;" type_identifier (pointer_declarator "*pcVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "undefined4 uVar33;" type_identifier identifier ;) (declaration "code *pcVar34;" type_identifier (pointer_declarator "*pcVar34" * identifier) ;) (declaration "undefined1 auStack_60 [24];" type_identifier (array_declarator "auStack_60 [24]" identifier [ number_literal ]) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" identifier = identifier) ;) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x10)" identifier = (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) ))))) ;) (expression_statement "puVar17 = *(undefined4 **)(param_2 + 0x14);" (assignment_expression "puVar17 = *(undefined4 **)(param_2 + 0x14)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x14)" * (cast_expression "(undefined4 **)(param_2 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = iVar14 + iVar18;" (assignment_expression "iVar7 = iVar14 + iVar18" identifier = (binary_expression "iVar14 + iVar18" identifier + identifier)) ;) (expression_statement "uVar25 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar25 = *(uint *)(param_2 + 0x20)" identifier = (pointer_expression "*(uint *)(param_2 + 0x20)" * (cast_expression "(uint *)(param_2 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x20)" ( (binary_expression "param_2 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);" (assignment_expression "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5)" identifier = (cast_expression "(undefined4 *)(uVar25 + 0x1f >> 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + 0x1f >> 5)" ( (binary_expression "uVar25 + 0x1f >> 5" (binary_expression "uVar25 + 0x1f" identifier + number_literal) >> number_literal) )))) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00097540" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_00097540" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "puVar27 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 8)" * (cast_expression "(undefined4 **)(param_2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (iVar7 + 1) * 4;" (assignment_expression "uVar12 = (iVar7 + 1) * 4" identifier = (binary_expression "(iVar7 + 1) * 4" (parenthesized_expression "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" if (parenthesized_expression "((int)puVar19 < iVar7 + 1)" ( (binary_expression "(int)puVar19 < iVar7 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "iVar7 + 1" identifier + number_literal)) )) (compound_statement "{\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }" { (if_statement "if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" if (parenthesized_expression "(uVar12 < 0x7f01)" ( (binary_expression "uVar12 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }" { (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar12 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" ( (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar31 = auStack_60 + iVar7;" (assignment_expression "puVar31 = auStack_60 + iVar7" identifier = (binary_expression "auStack_60 + iVar7" identifier + identifier)) ;) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7)" identifier = (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar7)" ( (binary_expression "&stack0xffffffb8 + iVar7" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) }) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" else (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" { (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" ( (pointer_expression "&local_30" & identifier) ))))) ;) }))) }) (else_clause "else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" else (compound_statement "{\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" { (expression_statement "iVar22 = (int)puVar19 + 1;" (assignment_expression "iVar22 = (int)puVar19 + 1" identifier = (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" if (parenthesized_expression "((uint)(iVar22 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar22 * 4) < 0x7f01" (call_expression "(uint)(iVar22 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar22 * 4)" ( (binary_expression "iVar22 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }" { (expression_statement "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar22 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar22 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar22 * 4 + 7U & 0xfffffff8" (binary_expression "iVar22 * 4 + 7U" (binary_expression "iVar22 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2)" identifier = (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffffb8 + iVar2)" ( (binary_expression "&stack0xffffffb8 + iVar2" (pointer_expression "&stack0xffffffb8" & identifier) + identifier) )))) ;) (expression_statement "puVar31 = auStack_60 + iVar2;" (assignment_expression "puVar31 = auStack_60 + iVar2" identifier = (binary_expression "auStack_60 + iVar2" identifier + identifier)) ;) }) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" else (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" { (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" ( (pointer_expression "&local_30" & identifier) ))))) ;) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" identifier = identifier) ;) }))) (if_statement "if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" if (parenthesized_expression "(iVar7 != iVar22)" ( (binary_expression "iVar7 != iVar22" identifier != identifier) )) (compound_statement "{\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" { (expression_statement "iVar22 = iVar22 - iVar7;" (assignment_expression "iVar22 = iVar22 - iVar7" identifier = (binary_expression "iVar22 - iVar7" identifier - identifier)) ;) (expression_statement "puVar23 = puVar26 + iVar7;" (assignment_expression "puVar23 = puVar26 + iVar7" identifier = (binary_expression "puVar26 + iVar7" identifier + identifier)) ;) (do_statement "do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);" do (compound_statement "{\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      }" { (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" * identifier) = number_literal) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) ;) })) }))) (expression_statement "*(int *)(puVar31 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar31 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar31 + 0x10)" * (cast_expression "(int *)(puVar31 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar13 = puVar27;" (assignment_expression "puVar13 = puVar27" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);" (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" ( (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" * (cast_expression "(code *)PTR___gmpn_mul_000972b4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26,puVar27,iVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar23 = *(undefined4 **)(param_2 + 0x18);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 0x18)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 0x18)" * (cast_expression "(undefined4 **)(param_2 + 0x18)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" if (parenthesized_expression "(((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19))" ( (binary_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)" (parenthesized_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0))" ( (binary_expression "(puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" ( (binary_expression "puVar23 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" ( (comma_expression "puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar13 = puVar26" identifier = identifier) , (comma_expression "puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar17 = puVar23" identifier = identifier) , (comma_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26,puVar26,param_2 + 0x1c)" ( identifier , identifier , (binary_expression "param_2 + 0x1c" identifier + number_literal) )))) , (binary_expression "iVar7 != 0" identifier != number_literal)))) ))) )) && (parenthesized_expression "((int)puVar23 < (int)puVar19)" ( (binary_expression "(int)puVar23 < (int)puVar19" (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" { (expression_statement "piVar11 = puVar26 + (int)puVar23;" (assignment_expression "piVar11 = puVar26 + (int)puVar23" identifier = (binary_expression "puVar26 + (int)puVar23" identifier + (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar7 = *piVar11 + 1;" (assignment_expression "iVar7 = *piVar11 + 1" identifier = (binary_expression "*piVar11 + 1" (pointer_expression "*piVar11" * identifier) + number_literal)) ;) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" * identifier) = identifier) ;) (while_statement "while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" while (parenthesized_expression "((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)))" ( (parenthesized_expression "(iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))" ( (binary_expression "iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" (binary_expression "iVar7 == 0" identifier == number_literal) && (parenthesized_expression "(puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" ( (comma_expression "puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23" (assignment_expression "puVar23 = (undefined4 *)((int)puVar23 + 1)" identifier = (cast_expression "(undefined4 *)((int)puVar23 + 1)" ( (type_descriptor "undefined4 *" 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) )))) , (binary_expression "puVar19 != puVar23" identifier != identifier)) ))) )) )) (compound_statement "{\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" { (expression_statement "piVar1 = piVar11 + 1;" (assignment_expression "piVar1 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar7 = *piVar1 + 1;" (assignment_expression "iVar7 = *piVar1 + 1" identifier = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" * identifier) = identifier) ;) })) })) (expression_statement "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));" (assignment_expression "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" identifier [ (binary_expression "uVar25 >> 5" identifier >> number_literal) ]) = (binary_expression "puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" identifier [ (binary_expression "uVar25 >> 5" identifier >> number_literal) ]) & (unary_expression "~(-1 << (uVar25 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar25 & 0x1f))" ( (binary_expression "-1 << (uVar25 & 0x1f)" number_literal << (parenthesized_expression "(uVar25 & 0x1f)" ( (binary_expression "uVar25 & 0x1f" identifier & number_literal) ))) ))))) ;) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" ( (binary_expression "puVar19 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" { (expression_statement "puVar23 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_2 + 8)" * (cast_expression "(undefined4 **)(param_2 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (if_statement "if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x1)" ( (binary_expression "puVar19 != (undefined4 *)0x1" identifier != (cast_expression "(undefined4 *)0x1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" { (expression_statement "puVar13 = puVar26 + (int)puVar19;" (assignment_expression "puVar13 = puVar26 + (int)puVar19" identifier = (binary_expression "puVar26 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" identifier = identifier) ;) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (do_statement "do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);" do (compound_statement "{\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      }" { (expression_statement "*puVar17 = uVar10;" (assignment_expression "*puVar17 = uVar10" (pointer_expression "*puVar17" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar6 + 1;" (assignment_expression "puVar8 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" identifier = identifier) ;) }) while (parenthesized_expression "(puVar8 != puVar13)" ( (binary_expression "puVar8 != puVar13" identifier != identifier) )) ;) (expression_statement "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);" (assignment_expression "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4)" identifier = (cast_expression "(undefined4 *)((int)puVar19 * 4 - 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 * 4 - 4)" ( (binary_expression "(int)puVar19 * 4 - 4" (binary_expression "(int)puVar19 * 4" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - number_literal) )))) ;) (expression_statement "puVar23 = puVar23 + (int)puVar19 + -1;" (assignment_expression "puVar23 = puVar23 + (int)puVar19 + -1" identifier = (binary_expression "puVar23 + (int)puVar19 + -1" (binary_expression "puVar23 + (int)puVar19" identifier + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar23 = uVar10;" (assignment_expression "*puVar23 = uVar10" (pointer_expression "*puVar23" * identifier) = identifier) ;) })) (expression_statement "uVar12 = uVar25 >> 6;" (assignment_expression "uVar12 = uVar25 >> 6" identifier = (binary_expression "uVar25 >> 6" identifier >> number_literal)) ;) (expression_statement "puVar15 = (uint *)((int)puVar19 - uVar12);" (assignment_expression "puVar15 = (uint *)((int)puVar19 - uVar12)" identifier = (cast_expression "(uint *)((int)puVar19 - uVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar19 - uVar12)" ( (binary_expression "(int)puVar19 - uVar12" (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) )))) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) (if_statement "if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" if (parenthesized_expression "(0 < (int)puVar15)" ( (binary_expression "0 < (int)puVar15" number_literal < (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" { (expression_statement "puVar19 = (undefined4 *)(uVar12 * 4);" (assignment_expression "puVar19 = (undefined4 *)(uVar12 * 4)" identifier = (cast_expression "(undefined4 *)(uVar12 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar12 * 4)" ( (binary_expression "uVar12 * 4" identifier * number_literal) )))) ;) (expression_statement "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);" (assignment_expression "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b)" identifier = (cast_expression "(undefined4 *)((uVar25 << 0x1a) >> 0x1b)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar25 << 0x1a) >> 0x1b)" ( (binary_expression "(uVar25 << 0x1a) >> 0x1b" (parenthesized_expression "(uVar25 << 0x1a)" ( (binary_expression "uVar25 << 0x1a" identifier << number_literal) )) >> number_literal) )))) ;) (expression_statement "puVar13 = puVar26 + uVar12;" (assignment_expression "puVar13 = puVar26 + uVar12" identifier = (binary_expression "puVar26 + uVar12" identifier + identifier)) ;) (if_statement "if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" if (parenthesized_expression "(puVar17 == (undefined4 *)0x0)" ( (binary_expression "puVar17 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }" { (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (if_statement "if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" if (parenthesized_expression "(puVar15 != (uint *)0x1)" ( (binary_expression "puVar15 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" { (expression_statement "puVar23 = puVar13 + 1;" (assignment_expression "puVar23 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (int)puVar15;" (assignment_expression "puVar13 = puVar13 + (int)puVar15" identifier = (binary_expression "puVar13 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (do_statement "do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);" do (compound_statement "{\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        }" { (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" identifier = identifier) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar13)" ( (binary_expression "puVar8 != puVar13" identifier != identifier) )) ;) (expression_statement "puVar16 = (uint *)((int)puVar15 * 4 + -4);" (assignment_expression "puVar16 = (uint *)((int)puVar15 * 4 + -4)" identifier = (cast_expression "(uint *)((int)puVar15 * 4 + -4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar15 * 4 + -4)" ( (binary_expression "(int)puVar15 * 4 + -4" (binary_expression "(int)puVar15 * 4" (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "param_1 = param_1 + (int)puVar15 + -1;" (assignment_expression "param_1 = param_1 + (int)puVar15 + -1" identifier = (binary_expression "param_1 + (int)puVar15 + -1" (binary_expression "param_1 + (int)puVar15" identifier + (cast_expression "(int)puVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) }) (else_clause "else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" else (compound_statement "{\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" { (expression_statement "(*(code *)PTR___gmpn_rshift_00097560)(puVar26);" (call_expression "(*(code *)PTR___gmpn_rshift_00097560)(puVar26)" (parenthesized_expression "(*(code *)PTR___gmpn_rshift_00097560)" ( (pointer_expression "*(code *)PTR___gmpn_rshift_00097560" * (cast_expression "(code *)PTR___gmpn_rshift_00097560" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar26)" ( identifier ))) ;) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (if_statement "if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" { (expression_statement "puVar19 = param_1 + uVar12;" (assignment_expression "puVar19 = param_1 + uVar12" identifier = (binary_expression "param_1 + uVar12" identifier + identifier)) ;) (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) (do_statement "do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);" do (compound_statement "{\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        }" { (expression_statement "param_1 = puVar6 + 1;" (assignment_expression "param_1 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" * identifier) = identifier) ;) (expression_statement "puVar26 = puVar23 + 1;" (assignment_expression "puVar26 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (expression_statement "puVar23 = puVar26;" (assignment_expression "puVar23 = puVar26" identifier = identifier) ;) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" identifier = identifier) ;) }) while (parenthesized_expression "(param_1 != puVar19)" ( (binary_expression "param_1 != puVar19" identifier != identifier) )) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" identifier = identifier) ;) }))) })) (if_statement "if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (if_statement "if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }" if (parenthesized_expression "(local_2c == *(undefined4 **)puVar4)" ( (binary_expression "local_2c == *(undefined4 **)puVar4" identifier == (pointer_expression "*(undefined4 **)puVar4" * (cast_expression "(undefined4 **)puVar4" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar25 + 1 >> 1;\n  }" { (return_statement "return uVar25 + 1 >> 1;" return (binary_expression "uVar25 + 1 >> 1" (binary_expression "uVar25 + 1" identifier + number_literal) >> number_literal) ;) })) (expression_statement "uVar33 = 0x7befc;" (assignment_expression "uVar33 = 0x7befc" identifier = number_literal) ;) (expression_statement "puVar23 = local_2c;" (assignment_expression "puVar23 = local_2c" identifier = identifier) ;) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar28 + 0x23144;" (assignment_expression "puVar30 = puVar28 + 0x23144" identifier = (binary_expression "puVar28 + 0x23144" identifier + number_literal)) ;) (expression_statement "iVar7 = puVar23[2];" (assignment_expression "iVar7 = puVar23[2]" identifier = (subscript_expression "puVar23[2]" identifier [ number_literal ])) ;) (expression_statement "puVar32 = puVar31 + -0x60;" (assignment_expression "puVar32 = puVar31 + -0x60" identifier = (binary_expression "puVar31 + -0x60" identifier + number_literal)) ;) (expression_statement "puVar6 = *(undefined4 **)(puVar28 + 0x1b644);" (assignment_expression "puVar6 = *(undefined4 **)(puVar28 + 0x1b644)" identifier = (pointer_expression "*(undefined4 **)(puVar28 + 0x1b644)" * (cast_expression "(undefined4 **)(puVar28 + 0x1b644)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x1b644)" ( (binary_expression "puVar28 + 0x1b644" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x28) = puVar19;" (assignment_expression "*(undefined4 **)(puVar31 + -0x28) = puVar19" (pointer_expression "*(undefined4 **)(puVar31 + -0x28)" * (cast_expression "(undefined4 **)(puVar31 + -0x28)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x28)" ( (binary_expression "puVar31 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar31 + -8)" * (cast_expression "(undefined1 **)(puVar31 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -8)" ( (binary_expression "puVar31 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar20 = *(uint *)(iVar7 + 0x20);" (assignment_expression "uVar20 = *(uint *)(iVar7 + 0x20)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x20)" * (cast_expression "(uint *)(iVar7 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x20)" ( (binary_expression "iVar7 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x48) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x48) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x48)" * (cast_expression "(undefined4 **)(puVar31 + -0x48)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)(puVar31 + -0x10) = param_1" (pointer_expression "*(undefined4 **)(puVar31 + -0x10)" * (cast_expression "(undefined4 **)(puVar31 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x10)" ( (binary_expression "puVar31 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar21 = (uint *)(uVar20 >> 1);" (assignment_expression "puVar21 = (uint *)(uVar20 >> 1)" identifier = (cast_expression "(uint *)(uVar20 >> 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar20 >> 1)" ( (binary_expression "uVar20 >> 1" identifier >> number_literal) )))) ;) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "*(int *)(puVar31 + -0x14) = param_2;" (assignment_expression "*(int *)(puVar31 + -0x14) = param_2" (pointer_expression "*(int *)(puVar31 + -0x14)" * (cast_expression "(int *)(puVar31 + -0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x14)" ( (binary_expression "puVar31 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar31 + -0x18) = uVar25;" (assignment_expression "*(uint *)(puVar31 + -0x18) = uVar25" (pointer_expression "*(uint *)(puVar31 + -0x18)" * (cast_expression "(uint *)(puVar31 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x18)" ( (binary_expression "puVar31 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = uVar10" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" * (cast_expression "(undefined4 *)(puVar31 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = (int)puVar21 + 0x1f >> 5;" (assignment_expression "iVar7 = (int)puVar21 + 0x1f >> 5" identifier = (binary_expression "(int)puVar21 + 0x1f >> 5" (binary_expression "(int)puVar21 + 0x1f" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal)) ;) (expression_statement "*(uint *)(puVar31 + -0x24) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x24) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x24)" * (cast_expression "(uint *)(puVar31 + -0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x24)" ( (binary_expression "puVar31 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar33;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar33" (pointer_expression "*(undefined4 *)(puVar31 + -4)" * (cast_expression "(undefined4 *)(puVar31 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -4)" ( (binary_expression "puVar31 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar12 = iVar7 * 4;" (assignment_expression "uVar12 = iVar7 * 4" identifier = (binary_expression "iVar7 * 4" identifier * number_literal)) ;) (expression_statement "*(int *)(puVar31 + -0x3c) = iVar7;" (assignment_expression "*(int *)(puVar31 + -0x3c) = iVar7" (pointer_expression "*(int *)(puVar31 + -0x3c)" * (cast_expression "(int *)(puVar31 + -0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x3c)" ( (binary_expression "puVar31 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0xc) = puVar27;" (assignment_expression "*(undefined4 **)(puVar31 + -0xc) = puVar27" (pointer_expression "*(undefined4 **)(puVar31 + -0xc)" * (cast_expression "(undefined4 **)(puVar31 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0xc)" ( (binary_expression "puVar31 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar31 + -0x1c) = puVar26;" (assignment_expression "*(undefined4 **)(puVar31 + -0x1c) = puVar26" (pointer_expression "*(undefined4 **)(puVar31 + -0x1c)" * (cast_expression "(undefined4 **)(puVar31 + -0x1c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x1c)" ( (binary_expression "puVar31 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x20) = puVar4;" (assignment_expression "*(undefined **)(puVar31 + -0x20) = puVar4" (pointer_expression "*(undefined **)(puVar31 + -0x20)" * (cast_expression "(undefined **)(puVar31 + -0x20)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x20)" ( (binary_expression "puVar31 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar31 + -0x50) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x50) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" * (cast_expression "(undefined4 *)(puVar31 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(puVar31 + -0x44) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x44) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x44)" * (cast_expression "(uint *)(puVar31 + -0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" identifier = identifier) ;) (if_statement "if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" if (parenthesized_expression "(uVar12 < 0x7f01)" ( (binary_expression "uVar12 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }" { (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar12 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" ( (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar32 = puVar31 + iVar7 + -0x60;" (assignment_expression "puVar32 = puVar31 + iVar7 + -0x60" identifier = (binary_expression "puVar31 + iVar7 + -0x60" (binary_expression "puVar31 + iVar7" identifier + identifier) + number_literal)) ;) (expression_statement "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);" (assignment_expression "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50)" identifier = (cast_expression "(undefined4 *)(puVar31 + iVar7 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + iVar7 + -0x50)" ( (binary_expression "puVar31 + iVar7 + -0x50" (binary_expression "puVar31 + iVar7" identifier + identifier) + number_literal) )))) ;) (expression_statement "puVar19 = puVar13;" (assignment_expression "puVar19 = puVar13" identifier = identifier) ;) }) (else_clause "else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" else (compound_statement "{\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" { (expression_statement "puVar19 = *(undefined4 **)(puVar31 + -0x44);" (assignment_expression "puVar19 = *(undefined4 **)(puVar31 + -0x44)" identifier = (pointer_expression "*(undefined4 **)(puVar31 + -0x44)" * (cast_expression "(undefined4 **)(puVar31 + -0x44)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);" (assignment_expression "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" (parenthesized_expression "(**(code **)(puVar28 + 0x1b3f4))" ( (pointer_expression "**(code **)(puVar28 + 0x1b3f4)" * (pointer_expression "*(code **)(puVar28 + 0x1b3f4)" * (cast_expression "(code **)(puVar28 + 0x1b3f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + 0x1b3f4)" ( (binary_expression "puVar28 + 0x1b3f4" identifier + number_literal) ))))) )) (argument_list "(puVar31 + -0x30,puVar19)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) , identifier ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) }))) (expression_statement "puVar24 = *(uint **)(puVar30 + -0x7fd4);" (assignment_expression "puVar24 = *(uint **)(puVar30 + -0x7fd4)" identifier = (pointer_expression "*(uint **)(puVar30 + -0x7fd4)" * (cast_expression "(uint **)(puVar30 + -0x7fd4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7fd4)" ( (binary_expression "puVar30 + -0x7fd4" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;" (assignment_expression "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f" (pointer_expression "*(uint *)(puVar31 + -0x40)" * (cast_expression "(uint *)(puVar31 + -0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) )))) = (binary_expression "(uint)puVar21 & 0x1f" (cast_expression "(uint)puVar21" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = (binary_expression "puVar24 + -0x111b" identifier + number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar5 = puVar21;" (assignment_expression "puVar5 = puVar21" identifier = identifier) ;) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" while (parenthesized_expression "(puVar3 = puVar5, puVar3 <= puVar16)" ( (comma_expression "puVar3 = puVar5, puVar3 <= puVar16" (assignment_expression "puVar3 = puVar5" identifier = identifier) , (binary_expression "puVar3 <= puVar16" identifier <= identifier)) )) (compound_statement "{\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" { (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" identifier = (cast_expression "(undefined4 *)puVar23[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar23[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f)" identifier = (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 & 0x1f)" ( (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "puVar24 = puVar13 + uVar12;" (assignment_expression "puVar24 = puVar13 + uVar12" identifier = (binary_expression "puVar13 + uVar12" identifier + identifier)) ;) (if_statement "if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" if (parenthesized_expression "(puVar26 == (undefined4 *)0x0)" ( (binary_expression "puVar26 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }" { (expression_statement "(**(code **)(puVar31 + -0x34))(puVar24,puVar19);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar24,puVar19)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" ( (pointer_expression "**(code **)(puVar31 + -0x34)" * (pointer_expression "*(code **)(puVar31 + -0x34)" * (cast_expression "(code **)(puVar31 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) )) (argument_list "(puVar24,puVar19)" ( identifier , identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" else (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" { (expression_statement "(**(code **)(puVar31 + -0x34))(puVar27);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar27)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" ( (pointer_expression "**(code **)(puVar31 + -0x34)" * (pointer_expression "*(code **)(puVar31 + -0x34)" * (cast_expression "(code **)(puVar31 + -0x34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) )) (argument_list "(puVar27)" ( identifier ))) ;) (expression_statement "puVar15 = *(uint **)(puVar31 + -0x3c);" (assignment_expression "puVar15 = *(uint **)(puVar31 + -0x3c)" identifier = (pointer_expression "*(uint **)(puVar31 + -0x3c)" * (cast_expression "(uint **)(puVar31 + -0x3c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x3c)" ( (binary_expression "puVar31 + -0x3c" identifier + number_literal) ))))) ;) (expression_statement "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);" (assignment_expression "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" identifier = (pointer_expression "*(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" * (cast_expression "(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar31 + -0x50) + -0x7ad4)" ( (binary_expression "*(int *)(puVar31 + -0x50) + -0x7ad4" (pointer_expression "*(int *)(puVar31 + -0x50)" * (cast_expression "(int *)(puVar31 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(uint *)(puVar31 + -0x38) = *puVar24;" (assignment_expression "*(uint *)(puVar31 + -0x38) = *puVar24" (pointer_expression "*(uint *)(puVar31 + -0x38)" * (cast_expression "(uint *)(puVar31 + -0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))) = (pointer_expression "*puVar24" * identifier)) ;) (expression_statement "puVar19 = puVar27;" (assignment_expression "puVar19 = puVar27" identifier = identifier) ;) (expression_statement "puVar17 = puVar26;" (assignment_expression "puVar17 = puVar26" identifier = identifier) ;) (expression_statement "uVar10 = (*pcVar29)(puVar24,puVar27);" (assignment_expression "uVar10 = (*pcVar29)(puVar24,puVar27)" identifier = (call_expression "(*pcVar29)(puVar24,puVar27)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(puVar24,puVar27)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x40);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x40)" identifier = (pointer_expression "*(int *)(puVar31 + -0x40)" * (cast_expression "(int *)(puVar31 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x40)" ( (binary_expression "puVar31 + -0x40" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);" (assignment_expression "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" * identifier) = (binary_expression "*puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" * identifier) | (pointer_expression "*(uint *)(puVar31 + -0x38)" * (cast_expression "(uint *)(puVar31 + -0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x38)" ( (binary_expression "puVar31 + -0x38" identifier + number_literal) )))))) ;) (if_statement "if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" if (parenthesized_expression "(0x20 < (uint)(iVar7 + (int)puVar26))" ( (binary_expression "0x20 < (uint)(iVar7 + (int)puVar26)" number_literal < (call_expression "(uint)(iVar7 + (int)puVar26)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar7 + (int)puVar26)" ( (binary_expression "iVar7 + (int)puVar26" identifier + (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )))) )) (compound_statement "{\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" { (expression_statement "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;" (assignment_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10" (pointer_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" * (cast_expression "(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + *(int *)(puVar31 + -0x44))" ( (binary_expression "(int)puVar24 + *(int *)(puVar31 + -0x44)" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(puVar31 + -0x44)" * (cast_expression "(int *)(puVar31 + -0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x44)" ( (binary_expression "puVar31 + -0x44" identifier + number_literal) ))))) )))) = identifier) ;) })) }))) (expression_statement "uVar12 = (uint)puVar3 >> 5;" (assignment_expression "uVar12 = (uint)puVar3 >> 5" identifier = (binary_expression "(uint)puVar3 >> 5" (cast_expression "(uint)puVar3" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal)) ;) (expression_statement "puVar9 = puVar3;" (assignment_expression "puVar9 = puVar3" identifier = identifier) ;) (expression_statement "puVar5 = (uint *)((int)puVar21 + (int)puVar3);" (assignment_expression "puVar5 = (uint *)((int)puVar21 + (int)puVar3)" identifier = (cast_expression "(uint *)((int)puVar21 + (int)puVar3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + (int)puVar3)" ( (binary_expression "(int)puVar21 + (int)puVar3" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (if_statement "if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" if (parenthesized_expression "(puVar9 == puVar16)" ( (binary_expression "puVar9 == puVar16" identifier == identifier) )) (compound_statement "{\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }" { (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" identifier = (pointer_expression "*(int *)(puVar31 + -0x30)" * (cast_expression "(int *)(puVar31 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);" statement_identifier : (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" identifier = (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) ))))) ;)) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" else (compound_statement "{\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" { (expression_statement "iVar7 = (int)puVar16 + (0x1f - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x1f - (int)puVar9)" identifier = (binary_expression "(int)puVar16 + (0x1f - (int)puVar9)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x1f - (int)puVar9)" ( (binary_expression "0x1f - (int)puVar9" number_literal - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar21 = puVar13 + ((uint)puVar9 >> 5);" (assignment_expression "puVar21 = puVar13 + ((uint)puVar9 >> 5)" identifier = (binary_expression "puVar13 + ((uint)puVar9 >> 5)" identifier + (parenthesized_expression "((uint)puVar9 >> 5)" ( (binary_expression "(uint)puVar9 >> 5" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" if (parenthesized_expression "(iVar7 < 0)" ( (binary_expression "iVar7 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" { (expression_statement "iVar7 = (int)puVar16 + (0x3e - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x3e - (int)puVar9)" identifier = (binary_expression "(int)puVar16 + (0x3e - (int)puVar9)" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x3e - (int)puVar9)" ( (binary_expression "0x3e - (int)puVar9" number_literal - (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) })) (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" identifier = (cast_expression "(undefined4 *)puVar23[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar23[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f)" identifier = (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar9 & 0x1f)" ( (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar9;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar9" (pointer_expression "*(uint **)(puVar31 + -0x34)" * (cast_expression "(uint **)(puVar31 + -0x34)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar24 = (uint *)(iVar7 >> 5);" (assignment_expression "puVar24 = (uint *)(iVar7 >> 5)" identifier = (cast_expression "(uint *)(iVar7 >> 5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 >> 5)" ( (binary_expression "iVar7 >> 5" identifier >> number_literal) )))) ;) (expression_statement "FUN_0007bb94(puVar27,puVar19);" (call_expression "FUN_0007bb94(puVar27,puVar19)" identifier (argument_list "(puVar27,puVar19)" ( identifier , identifier ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (if_statement "if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" if (parenthesized_expression "(puVar23 == (undefined4 *)0x0)" ( (binary_expression "puVar23 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }" { (if_statement "if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" if (parenthesized_expression "(puVar24 != (uint *)0x0)" ( (binary_expression "puVar24 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" { (expression_statement "puVar19 = (undefined4 *)*puVar27;" (assignment_expression "puVar19 = (undefined4 *)*puVar27" identifier = (cast_expression "(undefined4 *)*puVar27" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar27" * identifier))) ;) (if_statement "if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" if (parenthesized_expression "(puVar24 != (uint *)0x1)" ( (binary_expression "puVar24 != (uint *)0x1" identifier != (cast_expression "(uint *)0x1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" { (expression_statement "puVar26 = puVar27 + 1;" (assignment_expression "puVar26 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar27 + (int)puVar24;" (assignment_expression "puVar27 = puVar27 + (int)puVar24" identifier = (binary_expression "puVar27 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar9 = puVar21;" (assignment_expression "puVar9 = puVar21" identifier = identifier) ;) (do_statement "do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);" do (compound_statement "{\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          }" { (expression_statement "*puVar9 = (uint)puVar19;" (assignment_expression "*puVar9 = (uint)puVar19" (pointer_expression "*puVar9" * identifier) = (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "puVar19 = (undefined4 *)*puVar26;" (assignment_expression "puVar19 = (undefined4 *)*puVar26" identifier = (cast_expression "(undefined4 *)*puVar26" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (expression_statement "puVar26 = puVar6;" (assignment_expression "puVar26 = puVar6" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar6 != puVar27)" ( (binary_expression "puVar6 != puVar27" identifier != identifier) )) ;) (expression_statement "puVar21 = puVar21 + (int)puVar24 + -1;" (assignment_expression "puVar21 = puVar21 + (int)puVar24 + -1" identifier = (binary_expression "puVar21 + (int)puVar24 + -1" (binary_expression "puVar21 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*puVar21 = (uint)puVar19;" (assignment_expression "*puVar21 = (uint)puVar19" (pointer_expression "*puVar21" * identifier) = (cast_expression "(uint)puVar19" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) })) }) (else_clause "else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" else (compound_statement "{\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" { (expression_statement "uVar25 = *puVar21;" (assignment_expression "uVar25 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "puVar15 = puVar24;" (assignment_expression "puVar15 = puVar24" identifier = identifier) ;) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" identifier = identifier) ;) (expression_statement "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);" (assignment_expression "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" identifier = (call_expression "(**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" (parenthesized_expression "(**(code **)(puVar30 + -0x7ad4))" ( (pointer_expression "**(code **)(puVar30 + -0x7ad4)" * (pointer_expression "*(code **)(puVar30 + -0x7ad4)" * (cast_expression "(code **)(puVar30 + -0x7ad4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7ad4)" ( (binary_expression "puVar30 + -0x7ad4" identifier + number_literal) ))))) )) (argument_list "(puVar21,puVar27)" ( identifier , identifier )))) ;) (expression_statement "puVar19 = (undefined4 *)((int)puVar24 * 0x20);" (assignment_expression "puVar19 = (undefined4 *)((int)puVar24 * 0x20)" identifier = (cast_expression "(undefined4 *)((int)puVar24 * 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 * 0x20)" ( (binary_expression "(int)puVar24 * 0x20" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x34);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x34)" identifier = (pointer_expression "*(int *)(puVar31 + -0x34)" * (cast_expression "(int *)(puVar31 + -0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x34)" ( (binary_expression "puVar31 + -0x34" identifier + number_literal) ))))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (expression_statement "*puVar21 = *puVar21 | uVar25;" (assignment_expression "*puVar21 = *puVar21 | uVar25" (pointer_expression "*puVar21" * identifier) = (binary_expression "*puVar21 | uVar25" (pointer_expression "*puVar21" * identifier) | identifier)) ;) (if_statement "if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" if (parenthesized_expression "((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16)" ( (binary_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16" (cast_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((iVar7 - (int)puVar23) + (int)puVar19)" ( (binary_expression "(iVar7 - (int)puVar23) + (int)puVar19" (parenthesized_expression "(iVar7 - (int)puVar23)" ( (binary_expression "iVar7 - (int)puVar23" identifier - (cast_expression "(int)puVar23" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)puVar19" ( (type_descriptor "int" primitive_type) ) identifier)) ))) < identifier) )) (compound_statement "{\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" { (expression_statement "puVar21 = puVar21 + (int)puVar24;" (assignment_expression "puVar21 = puVar21 + (int)puVar24" identifier = (binary_expression "puVar21 + (int)puVar24" identifier + (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*puVar21 = uVar12;" (assignment_expression "*puVar21 = uVar12" (pointer_expression "*puVar21" * identifier) = identifier) ;) })) }))) (expression_statement "uVar12 = (uint)puVar16 & 0x1f;" (assignment_expression "uVar12 = (uint)puVar16 & 0x1f" identifier = (binary_expression "(uint)puVar16 & 0x1f" (cast_expression "(uint)puVar16" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" identifier = (pointer_expression "*(int *)(puVar31 + -0x30)" * (cast_expression "(int *)(puVar31 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x30)" ( (binary_expression "puVar31 + -0x30" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 == 0) goto LAB_0007c054;" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c054;" goto statement_identifier ;)) (expression_statement "puVar16 = puVar13 + ((uint)puVar16 >> 5);" (assignment_expression "puVar16 = puVar13 + ((uint)puVar16 >> 5)" identifier = (binary_expression "puVar13 + ((uint)puVar16 >> 5)" identifier + (parenthesized_expression "((uint)puVar16 >> 5)" ( (binary_expression "(uint)puVar16 >> 5" (cast_expression "(uint)puVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*puVar16 = *puVar16 & ~(-1 << uVar12);" (assignment_expression "*puVar16 = *puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" * identifier) = (binary_expression "*puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" * identifier) & (unary_expression "~(-1 << uVar12)" ~ (parenthesized_expression "(-1 << uVar12)" ( (binary_expression "-1 << uVar12" number_literal << identifier) ))))) ;) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0007c05c;" goto statement_identifier ;)) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" identifier = (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) ))))) ;) }))) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" identifier = (pointer_expression "*(undefined **)(puVar31 + -0x50)" * (cast_expression "(undefined **)(puVar31 + -0x50)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x50)" ( (binary_expression "puVar31 + -0x50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" statement_identifier : (if_statement "if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" if (parenthesized_expression "(*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48))" ( (binary_expression "*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)" (pointer_expression "*(uint *)(puVar31 + -0x2c)" * (cast_expression "(uint *)(puVar31 + -0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + -0x2c)" ( (binary_expression "puVar31 + -0x2c" identifier + number_literal) )))) == (pointer_expression "**(uint **)(puVar31 + -0x48)" * (pointer_expression "*(uint **)(puVar31 + -0x48)" * (cast_expression "(uint **)(puVar31 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) )))))) )) (compound_statement "{\n    return **(uint **)(puVar31 + -0x48);\n  }" { (return_statement "return **(uint **)(puVar31 + -0x48);" return (pointer_expression "**(uint **)(puVar31 + -0x48)" * (pointer_expression "*(uint **)(puVar31 + -0x48)" * (cast_expression "(uint **)(puVar31 + -0x48)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + -0x48)" ( (binary_expression "puVar31 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar30 + -0x7b70)" * (cast_expression "(code **)(puVar30 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x7b70)" ( (binary_expression "puVar30 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "pcVar34 = __gmp_randinit_lc_2exp;" (assignment_expression "pcVar34 = __gmp_randinit_lc_2exp" identifier = identifier) ;) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;" (assignment_expression "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40" (pointer_expression "*(code **)(puVar32 + -0x28)" * (cast_expression "(code **)(puVar32 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar29 + 0x22e40" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar32 + -4) = pcVar34;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar34" (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 "*(undefined4 **)(puVar32 + -8) = puVar13;" (assignment_expression "*(undefined4 **)(puVar32 + -8) = puVar13" (pointer_expression "*(undefined4 **)(puVar32 + -8)" * (cast_expression "(undefined4 **)(puVar32 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -8)" ( (binary_expression "puVar32 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0xc) = puVar23;" (assignment_expression "*(undefined4 **)(puVar32 + -0xc) = puVar23" (pointer_expression "*(undefined4 **)(puVar32 + -0xc)" * (cast_expression "(undefined4 **)(puVar32 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xc)" ( (binary_expression "puVar32 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar32 + -0x10) = puVar27;" (assignment_expression "*(undefined4 **)(puVar32 + -0x10) = puVar27" (pointer_expression "*(undefined4 **)(puVar32 + -0x10)" * (cast_expression "(undefined4 **)(puVar32 + -0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x10)" ( (binary_expression "puVar32 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x14) = puVar24;" (assignment_expression "*(uint **)(puVar32 + -0x14) = puVar24" (pointer_expression "*(uint **)(puVar32 + -0x14)" * (cast_expression "(uint **)(puVar32 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x14)" ( (binary_expression "puVar32 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x18) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x18) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x18)" * (cast_expression "(uint **)(puVar32 + -0x18)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x18)" ( (binary_expression "puVar32 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint **)(puVar32 + -0x1c) = puVar21;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = puVar21" (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) ;) (if_statement "if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" if (parenthesized_expression "(puVar17 != (undefined4 *)0x0)" ( (binary_expression "puVar17 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" { (expression_statement "uVar12 = (int)puVar17 + 0x1fU >> 5;" (assignment_expression "uVar12 = (int)puVar17 + 0x1fU >> 5" identifier = (binary_expression "(int)puVar17 + 0x1fU >> 5" (binary_expression "(int)puVar17 + 0x1fU" (cast_expression "(int)puVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal)) ;) (expression_statement "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);" (assignment_expression "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" * (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar29 + 0x1b30c)" * (pointer_expression "*(undefined4 **)(pcVar29 + 0x1b30c)" * (cast_expression "(undefined4 **)(pcVar29 + 0x1b30c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x1b30c)" ( (binary_expression "pcVar29 + 0x1b30c" identifier + number_literal) ))))))) )) (argument_list "(0x24)" ( number_literal )))) ;) (expression_statement "iVar18 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar18 = *(int *)(puVar32 + -0x28)" identifier = (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar7 + 8) = iVar14;" (assignment_expression "*(int *)(iVar7 + 8) = iVar14" (pointer_expression "*(int *)(iVar7 + 8)" * (cast_expression "(int *)(iVar7 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar29 = *(code **)(iVar18 + -0x7ebc);" (assignment_expression "pcVar29 = *(code **)(iVar18 + -0x7ebc)" identifier = (pointer_expression "*(code **)(iVar18 + -0x7ebc)" * (cast_expression "(code **)(iVar18 + -0x7ebc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar18 + -0x7ebc)" ( (binary_expression "iVar18 + -0x7ebc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;" (assignment_expression "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar18 + -0x7fe4)" * (cast_expression "(int *)(iVar18 + -0x7fe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -0x7fe4)" ( (binary_expression "iVar18 + -0x7fe4" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(*pcVar29)(iVar14,puVar17);" (call_expression "(*pcVar29)(iVar14,puVar17)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(iVar14,puVar17)" ( identifier , identifier ))) ;) (expression_statement "iVar7 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar7 = *(int *)(puVar32 + -0x28)" identifier = (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "puVar27 = *(undefined4 **)(iVar14 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(iVar14 + 8)" identifier = (pointer_expression "*(undefined4 **)(iVar14 + 8)" * (cast_expression "(undefined4 **)(iVar14 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 8)" ( (binary_expression "iVar14 + 8" identifier + number_literal) ))))) ;) (if_statement "if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" { (expression_statement "puVar26 = puVar27;" (assignment_expression "puVar26 = puVar27" identifier = identifier) ;) (do_statement "do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);" do (compound_statement "{\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      }" { (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" identifier = (binary_expression "puVar26 + 1" identifier + number_literal)) ;) (expression_statement "*puVar26 = 0;" (assignment_expression "*puVar26 = 0" (pointer_expression "*puVar26" * identifier) = number_literal) ;) (expression_statement "puVar26 = puVar23;" (assignment_expression "puVar26 = puVar23" identifier = identifier) ;) }) while (parenthesized_expression "(puVar23 != puVar27 + uVar12)" ( (binary_expression "puVar23 != puVar27 + uVar12" identifier != (binary_expression "puVar27 + uVar12" identifier + identifier)) )) ;) })) (expression_statement "pcVar29 = *(code **)(iVar7 + -0x7f10);" (assignment_expression "pcVar29 = *(code **)(iVar7 + -0x7f10)" identifier = (pointer_expression "*(code **)(iVar7 + -0x7f10)" * (cast_expression "(code **)(iVar7 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + -0x7f10)" ( (binary_expression "iVar7 + -0x7f10" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(iVar14 + 4) = uVar12;" (assignment_expression "*(uint *)(iVar14 + 4) = uVar12" (pointer_expression "*(uint *)(iVar14 + 4)" * (cast_expression "(uint *)(iVar14 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 4)" ( (binary_expression "iVar14 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar27 = 1;" (assignment_expression "*puVar27 = 1" (pointer_expression "*puVar27" * identifier) = number_literal) ;) (expression_statement "(*pcVar29)(iVar14 + 0xc);" (call_expression "(*pcVar29)(iVar14 + 0xc)" (parenthesized_expression "(*pcVar29)" ( (pointer_expression "*pcVar29" * identifier) )) (argument_list "(iVar14 + 0xc)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) ))) ;) (expression_statement "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);" (call_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17)" (parenthesized_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))" ( (pointer_expression "**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" * (pointer_expression "*(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" * (cast_expression "(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar32 + -0x28) + -0x7ea4)" ( (binary_expression "*(int *)(puVar32 + -0x28) + -0x7ea4" (pointer_expression "*(int *)(puVar32 + -0x28)" * (cast_expression "(int *)(puVar32 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(iVar14 + 0xc,puVar19,puVar17)" ( (binary_expression "iVar14 + 0xc" identifier + number_literal) , identifier , identifier ))) ;) (if_statement "if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" if (parenthesized_expression "(*(int *)(iVar14 + 0x10) == 0)" ( (binary_expression "*(int *)(iVar14 + 0x10) == 0" (pointer_expression "*(int *)(iVar14 + 0x10)" * (cast_expression "(int *)(iVar14 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" { (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" * (cast_expression "(undefined4 *)(iVar14 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x10)" ( (binary_expression "iVar14 + 0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined4 **)(iVar14 + 0x14) = 0;" (assignment_expression "**(undefined4 **)(iVar14 + 0x14) = 0" (pointer_expression "**(undefined4 **)(iVar14 + 0x14)" * (pointer_expression "*(undefined4 **)(iVar14 + 0x14)" * (cast_expression "(undefined4 **)(iVar14 + 0x14)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) ))))) = number_literal) ;) })) (expression_statement "*(uint **)(iVar14 + 0x1c) = puVar15;" (assignment_expression "*(uint **)(iVar14 + 0x1c) = puVar15" (pointer_expression "*(uint **)(iVar14 + 0x1c)" * (cast_expression "(uint **)(iVar14 + 0x1c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x1c)" ( (binary_expression "iVar14 + 0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(iVar14 + 0x20) = puVar17;" (assignment_expression "*(undefined4 **)(iVar14 + 0x20) = puVar17" (pointer_expression "*(undefined4 **)(iVar14 + 0x20)" * (cast_expression "(undefined4 **)(iVar14 + 0x20)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);" (assignment_expression "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0)" (pointer_expression "*(uint *)(iVar14 + 0x18)" * (cast_expression "(uint *)(iVar14 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x18)" ( (binary_expression "iVar14 + 0x18" identifier + number_literal) )))) = (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar15 != (uint *)0x0)" ( (binary_expression "puVar15 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (return_statement "return (uint)(puVar15 != (uint *)0x0);" return (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar15 != (uint *)0x0)" ( (binary_expression "puVar15 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ;) })) (expression_statement "pcVar34 = *(code **)(pcVar29 + 0x1b220);" (assignment_expression "pcVar34 = *(code **)(pcVar29 + 0x1b220)" identifier = (pointer_expression "*(code **)(pcVar29 + 0x1b220)" * (cast_expression "(code **)(pcVar29 + 0x1b220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar29 + 0x1b220)" ( (binary_expression "pcVar29 + 0x1b220" identifier + number_literal) ))))) ;) (expression_statement "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);" (assignment_expression "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" identifier = (cast_expression "(int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" ( (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c84" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" * (cast_expression "(int *)(pcVar29 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar29 + 0x1ae6c)" ( (binary_expression "pcVar29 + 0x1ae6c" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);" (call_expression "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" (parenthesized_expression "(*pcVar34)" ( (pointer_expression "*pcVar34" * identifier) )) (argument_list "(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" ( identifier , number_literal , (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c78" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" * (cast_expression "(int *)(pcVar29 + 0x1ae6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar29 + 0x1ae6c)" ( (binary_expression "pcVar29 + 0x1ae6c" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);" (assignment_expression "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" identifier = (call_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" * (cast_expression "(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar34 + 0x1ae80)" * (pointer_expression "*(undefined4 **)(pcVar34 + 0x1ae80)" * (cast_expression "(undefined4 **)(pcVar34 + 0x1ae80)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar34 + 0x1ae80)" ( (binary_expression "pcVar34 + 0x1ae80" identifier + number_literal) ))))))) )) (argument_list "(piVar11[2],*piVar11 << 2)" ( (subscript_expression "piVar11[2]" identifier [ number_literal ]) , (binary_expression "*piVar11 << 2" (pointer_expression "*piVar11" * identifier) << number_literal) )))) ;) (return_statement "return uVar12;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> LIT) )))) ;) (expression_statement (assignment_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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (binary_expression IDENT + LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) )))) , (binary_expression IDENT != LIT)))) ))) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) , (binary_expression IDENT != IDENT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT >> LIT) ]) = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT >> LIT) ]) & (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_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 * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (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) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return (binary_expression (binary_expression IDENT + LIT) >> LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) >> LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (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) ;) }) (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 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 ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) )) (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) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_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 ( 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 (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 ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = IDENT) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (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 = (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 *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression (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 *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression 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 *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (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) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (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) ))))) ;) (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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression (pointer_expression * IDENT) << LIT) )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0007bb94(undefined4 *param_1,int param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    \n                    \n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" (type_identifier "uint") (function_declarator "FUN_0007bb94(undefined4 *param_1,int param_2)" (identifier "FUN_0007bb94") (parameter_list "(undefined4 *param_1,int param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  uint *puVar3;\n  undefined *puVar4;\n  uint *puVar5;\n  undefined4 *puVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  uint uVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  uint *puVar15;\n  uint *puVar16;\n  undefined4 *puVar17;\n  int iVar18;\n  undefined4 *puVar19;\n  uint uVar20;\n  uint *puVar21;\n  int iVar22;\n  undefined4 *puVar23;\n  uint *puVar24;\n  uint uVar25;\n  undefined4 *puVar26;\n  undefined4 *puVar27;\n  undefined *puVar28;\n  code *pcVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  code *pcVar34;\n  undefined1 auStack_60 [24];\n  int local_30;\n  undefined4 *local_2c;\n  \n  puVar4 = PTR___stack_chk_guard_00097540;\n  puVar31 = auStack_60;\n  iVar14 = *(int *)(param_2 + 4);\n  iVar18 = *(int *)(param_2 + 0x10);\n  puVar17 = *(undefined4 **)(param_2 + 0x14);\n  iVar7 = iVar14 + iVar18;\n  uVar25 = *(uint *)(param_2 + 0x20);\n  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);\n  local_30 = 0;\n  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;\n  puVar27 = *(undefined4 **)(param_2 + 8);\n  uVar12 = (iVar7 + 1) * 4;\n  if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }\n  *(int *)(puVar31 + 0x10) = iVar18;\n  puVar13 = puVar27;\n  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);\n  puVar23 = *(undefined4 **)(param_2 + 0x18);\n  if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }\n  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));\n  if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }\n  uVar12 = uVar25 >> 6;\n  puVar15 = (uint *)((int)puVar19 - uVar12);\n  puVar16 = puVar15;\n  if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }\n  if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }\n  uVar33 = 0x7befc;\n  puVar23 = local_2c;\n  puVar28 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar30 = puVar28 + 0x23144;\n  iVar7 = puVar23[2];\n  puVar32 = puVar31 + -0x60;\n  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);\n  *(undefined4 **)(puVar31 + -0x28) = puVar19;\n  *(undefined1 **)(puVar31 + -8) = auStack_60;\n  uVar20 = *(uint *)(iVar7 + 0x20);\n  *(undefined4 **)(puVar31 + -0x48) = puVar6;\n  *(undefined4 **)(puVar31 + -0x10) = param_1;\n  puVar21 = (uint *)(uVar20 >> 1);\n  uVar10 = *puVar6;\n  *(int *)(puVar31 + -0x14) = param_2;\n  *(uint *)(puVar31 + -0x18) = uVar25;\n  *(undefined4 *)(puVar31 + -0x2c) = uVar10;\n  iVar7 = (int)puVar21 + 0x1f >> 5;\n  *(uint *)(puVar31 + -0x24) = uVar12;\n  *(undefined4 *)(puVar31 + -4) = uVar33;\n  uVar12 = iVar7 * 4;\n  *(int *)(puVar31 + -0x3c) = iVar7;\n  *(undefined4 **)(puVar31 + -0xc) = puVar27;\n  *(undefined4 **)(puVar31 + -0x1c) = puVar26;\n  *(undefined **)(puVar31 + -0x20) = puVar4;\n  *(undefined **)(puVar31 + -0x50) = puVar30;\n  *(undefined4 *)(puVar31 + -0x30) = 0;\n  *(uint *)(puVar31 + -0x44) = uVar12;\n  puVar15 = puVar16;\n  if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }\n  puVar24 = *(uint **)(puVar30 + -0x7fd4);\n  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;\n  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;\n  uVar12 = 0;\n  puVar5 = puVar21;\n  puVar9 = (uint *)0x0;\n  while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }\n  if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }\n  (*pcVar29)();\n  puVar30 = *(undefined **)(puVar31 + -0x50);\nLAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }\n  pcVar29 = *(code **)(puVar30 + -0x7b70);\n  pcVar34 = __gmp_randinit_lc_2exp;\n  (*pcVar29)();\n  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;\n  *(code **)(puVar32 + -4) = pcVar34;\n  *(undefined4 **)(puVar32 + -8) = puVar13;\n  *(undefined4 **)(puVar32 + -0xc) = puVar23;\n  *(undefined4 **)(puVar32 + -0x10) = puVar27;\n  *(uint **)(puVar32 + -0x14) = puVar24;\n  *(uint **)(puVar32 + -0x18) = puVar16;\n  *(uint **)(puVar32 + -0x1c) = puVar21;\n  if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }\n  pcVar34 = *(code **)(pcVar29 + 0x1b220);\n  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);\n  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);\n                    \n                    \n  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);\n  return uVar12;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "uint *puVar15;" (type_identifier "uint") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint *puVar16;" (type_identifier "uint") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "undefined4 *puVar17;" (type_identifier "undefined4") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "undefined4 *puVar19;" (type_identifier "undefined4") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint *puVar21;" (type_identifier "uint") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "undefined4 *puVar23;" (type_identifier "undefined4") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "uint *puVar24;" (type_identifier "uint") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "undefined4 *puVar26;" (type_identifier "undefined4") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "undefined4 *puVar27;" (type_identifier "undefined4") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "undefined *puVar28;" (type_identifier "undefined") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "code *pcVar29;" (type_identifier "code") (pointer_declarator "*pcVar29" (* "*") (identifier "pcVar29")) (; ";")) (declaration "undefined *puVar30;" (type_identifier "undefined") (pointer_declarator "*puVar30" (* "*") (identifier "puVar30")) (; ";")) (declaration "undefined1 *puVar31;" (type_identifier "undefined1") (pointer_declarator "*puVar31" (* "*") (identifier "puVar31")) (; ";")) (declaration "undefined1 *puVar32;" (type_identifier "undefined1") (pointer_declarator "*puVar32" (* "*") (identifier "puVar32")) (; ";")) (declaration "undefined4 uVar33;" (type_identifier "undefined4") (identifier "uVar33") (; ";")) (declaration "code *pcVar34;" (type_identifier "code") (pointer_declarator "*pcVar34" (* "*") (identifier "pcVar34")) (; ";")) (declaration "undefined1 auStack_60 [24];" (type_identifier "undefined1") (array_declarator "auStack_60 [24]" (identifier "auStack_60") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined4 *local_2c;" (type_identifier "undefined4") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00097540" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" (identifier "puVar31") (= "=") (identifier "auStack_60")) (; ";")) (expression_statement "iVar14 = *(int *)(param_2 + 4);" (assignment_expression "iVar14 = *(int *)(param_2 + 4)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar18 = *(int *)(param_2 + 0x10);" (assignment_expression "iVar18 = *(int *)(param_2 + 0x10)" (identifier "iVar18") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "puVar17 = *(undefined4 **)(param_2 + 0x14);" (assignment_expression "puVar17 = *(undefined4 **)(param_2 + 0x14)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar7 = iVar14 + iVar18;" (assignment_expression "iVar7 = iVar14 + iVar18" (identifier "iVar7") (= "=") (binary_expression "iVar14 + iVar18" (identifier "iVar14") (+ "+") (identifier "iVar18"))) (; ";")) (expression_statement "uVar25 = *(uint *)(param_2 + 0x20);" (assignment_expression "uVar25 = *(uint *)(param_2 + 0x20)" (identifier "uVar25") (= "=") (pointer_expression "*(uint *)(param_2 + 0x20)" (* "*") (cast_expression "(uint *)(param_2 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x20)" (( "(") (binary_expression "param_2 + 0x20" (identifier "param_2") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);" (assignment_expression "puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5)" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)(uVar25 + 0x1f >> 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 + 0x1f >> 5)" (( "(") (binary_expression "uVar25 + 0x1f >> 5" (binary_expression "uVar25 + 0x1f" (identifier "uVar25") (+ "+") (number_literal "0x1f")) (>> ">>") (number_literal "5")) () ")")))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(undefined4 **)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (expression_statement "puVar27 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(param_2 + 8)" (identifier "puVar27") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 8)" (* "*") (cast_expression "(undefined4 **)(param_2 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar12 = (iVar7 + 1) * 4;" (assignment_expression "uVar12 = (iVar7 + 1) * 4" (identifier "uVar12") (= "=") (binary_expression "(iVar7 + 1) * 4" (parenthesized_expression "(iVar7 + 1)" (( "(") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if ((int)puVar19 < iVar7 + 1) {\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }\n  else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" (if "if") (parenthesized_expression "((int)puVar19 < iVar7 + 1)" (( "(") (binary_expression "(int)puVar19 < iVar7 + 1" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (< "<") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n    if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n  }" ({ "{") (if_statement "if (uVar12 < 0x7f01) {\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" (if "if") (parenthesized_expression "(uVar12 < 0x7f01)" (( "(") (binary_expression "uVar12 < 0x7f01" (identifier "uVar12") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar7 = -(uVar12 + 7 & 0xfffffff8);\n      puVar31 = auStack_60 + iVar7;\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);\n    }" ({ "{") (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" (identifier "iVar7") (= "=") (unary_expression "-(uVar12 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" (identifier "uVar12") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar31 = auStack_60 + iVar7;" (assignment_expression "puVar31 = auStack_60 + iVar7" (identifier "puVar31") (= "=") (binary_expression "auStack_60 + iVar7" (identifier "auStack_60") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7)" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffb8 + iVar7)" (( "(") (binary_expression "&stack0xffffffb8 + iVar7" (pointer_expression "&stack0xffffffb8" (& "&") (identifier "stack0xffffffb8")) (+ "+") (identifier "iVar7")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" (else "else") (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" ({ "{") (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" (else "else") (compound_statement "{\n    iVar22 = (int)puVar19 + 1;\n    if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }\n    if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }\n  }" ({ "{") (expression_statement "iVar22 = (int)puVar19 + 1;" (assignment_expression "iVar22 = (int)puVar19 + 1" (identifier "iVar22") (= "=") (binary_expression "(int)puVar19 + 1" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((uint)(iVar22 * 4) < 0x7f01) {\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }\n    else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" (if "if") (parenthesized_expression "((uint)(iVar22 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar22 * 4) < 0x7f01" (call_expression "(uint)(iVar22 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar22 * 4)" (( "(") (binary_expression "iVar22 * 4" (identifier "iVar22") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);\n      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);\n      puVar31 = auStack_60 + iVar2;\n    }" ({ "{") (expression_statement "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8)" (identifier "iVar2") (= "=") (unary_expression "-(iVar22 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar22 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar22 * 4 + 7U & 0xfffffff8" (binary_expression "iVar22 * 4 + 7U" (binary_expression "iVar22 * 4" (identifier "iVar22") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);" (assignment_expression "puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2)" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)(&stack0xffffffb8 + iVar2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&stack0xffffffb8 + iVar2)" (( "(") (binary_expression "&stack0xffffffb8 + iVar2" (pointer_expression "&stack0xffffffb8" (& "&") (identifier "stack0xffffffb8")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "puVar31 = auStack_60 + iVar2;" (assignment_expression "puVar31 = auStack_60 + iVar2" (identifier "puVar31") (= "=") (binary_expression "auStack_60 + iVar2" (identifier "auStack_60") (+ "+") (identifier "iVar2"))) (; ";")) (} "}")) (else_clause "else {\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" (else "else") (compound_statement "{\n      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n      puVar31 = auStack_60;\n    }" ({ "{") (expression_statement "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (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)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))))) (; ";")) (expression_statement "puVar31 = auStack_60;" (assignment_expression "puVar31 = auStack_60" (identifier "puVar31") (= "=") (identifier "auStack_60")) (; ";")) (} "}")))) (if_statement "if (iVar7 != iVar22) {\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" (if "if") (parenthesized_expression "(iVar7 != iVar22)" (( "(") (binary_expression "iVar7 != iVar22" (identifier "iVar7") (!= "!=") (identifier "iVar22")) () ")")) (compound_statement "{\n      iVar22 = iVar22 - iVar7;\n      puVar23 = puVar26 + iVar7;\n      do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);\n    }" ({ "{") (expression_statement "iVar22 = iVar22 - iVar7;" (assignment_expression "iVar22 = iVar22 - iVar7" (identifier "iVar22") (= "=") (binary_expression "iVar22 - iVar7" (identifier "iVar22") (- "-") (identifier "iVar7"))) (; ";")) (expression_statement "puVar23 = puVar26 + iVar7;" (assignment_expression "puVar23 = puVar26 + iVar7" (identifier "puVar23") (= "=") (binary_expression "puVar26 + iVar7" (identifier "puVar26") (+ "+") (identifier "iVar7"))) (; ";")) (do_statement "do {\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      } while (iVar22 != 0);" (do "do") (compound_statement "{\n        iVar22 = iVar22 + -1;\n        *puVar23 = 0;\n        puVar23 = puVar23 + 1;\n      }" ({ "{") (expression_statement "iVar22 = iVar22 + -1;" (assignment_expression "iVar22 = iVar22 + -1" (identifier "iVar22") (= "=") (binary_expression "iVar22 + -1" (identifier "iVar22") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar23 = 0;" (assignment_expression "*puVar23 = 0" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar22 != 0)" (( "(") (binary_expression "iVar22 != 0" (identifier "iVar22") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(int *)(puVar31 + 0x10) = iVar18;" (assignment_expression "*(int *)(puVar31 + 0x10) = iVar18" (pointer_expression "*(int *)(puVar31 + 0x10)" (* "*") (cast_expression "(int *)(puVar31 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + 0x10)" (( "(") (binary_expression "puVar31 + 0x10" (identifier "puVar31") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar18")) (; ";")) (expression_statement "puVar13 = puVar27;" (assignment_expression "puVar13 = puVar27" (identifier "puVar13") (= "=") (identifier "puVar27")) (; ";")) (expression_statement "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);" (call_expression "(*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_000972b4)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_000972b4" (* "*") (cast_expression "(code *)PTR___gmpn_mul_000972b4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_000972b4"))) () ")")) (argument_list "(puVar26,puVar27,iVar14)" (( "(") (identifier "puVar26") (, ",") (identifier "puVar27") (, ",") (identifier "iVar14") () ")"))) (; ";")) (expression_statement "puVar23 = *(undefined4 **)(param_2 + 0x18);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 0x18)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 0x18)" (* "*") (cast_expression "(undefined4 **)(param_2 + 0x18)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)) {\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" (if "if") (parenthesized_expression "(((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19))" (( "(") (binary_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&\n     ((int)puVar23 < (int)puVar19)" (parenthesized_expression "((puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0))" (( "(") (binary_expression "(puVar23 != (undefined4 *)0x0) &&\n      (puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" (parenthesized_expression "(puVar23 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar23 != (undefined4 *)0x0" (identifier "puVar23") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)" (( "(") (comma_expression "puVar13 = puVar26, puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar13 = puVar26" (identifier "puVar13") (= "=") (identifier "puVar26")) (, ",") (comma_expression "puVar17 = puVar23,\n      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "puVar17 = puVar23" (identifier "puVar17") (= "=") (identifier "puVar23")) (, ",") (comma_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(puVar26,puVar26,param_2 + 0x1c)" (( "(") (identifier "puVar26") (, ",") (identifier "puVar26") (, ",") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")")))) (, ",") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((int)puVar23 < (int)puVar19)" (( "(") (binary_expression "(int)puVar23 < (int)puVar19" (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")) (< "<") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")"))) () ")")) (compound_statement "{\n    piVar11 = puVar26 + (int)puVar23;\n    iVar7 = *piVar11 + 1;\n    *piVar11 = iVar7;\n    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }\n  }" ({ "{") (expression_statement "piVar11 = puVar26 + (int)puVar23;" (assignment_expression "piVar11 = puVar26 + (int)puVar23" (identifier "piVar11") (= "=") (binary_expression "puVar26 + (int)puVar23" (identifier "puVar26") (+ "+") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23")))) (; ";")) (expression_statement "iVar7 = *piVar11 + 1;" (assignment_expression "iVar7 = *piVar11 + 1" (identifier "iVar7") (= "=") (binary_expression "*piVar11 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (identifier "iVar7")) (; ";")) (while_statement "while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" (while "while") (parenthesized_expression "((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)))" (( "(") (parenthesized_expression "(iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))" (( "(") (binary_expression "iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23)" (( "(") (comma_expression "puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23" (assignment_expression "puVar23 = (undefined4 *)((int)puVar23 + 1)" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)((int)puVar23 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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")) () ")")))) (, ",") (binary_expression "puVar19 != puVar23" (identifier "puVar19") (!= "!=") (identifier "puVar23"))) () ")"))) () ")")) () ")")) (compound_statement "{\n      piVar1 = piVar11 + 1;\n      piVar11 = piVar11 + 1;\n      iVar7 = *piVar1 + 1;\n      *piVar11 = iVar7;\n    }" ({ "{") (expression_statement "piVar1 = piVar11 + 1;" (assignment_expression "piVar1 = piVar11 + 1" (identifier "piVar1") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar7 = *piVar1 + 1;" (assignment_expression "iVar7 = *piVar1 + 1" (identifier "iVar7") (= "=") (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar11 = iVar7;" (assignment_expression "*piVar11 = iVar7" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (identifier "iVar7")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));" (assignment_expression "puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" (identifier "puVar26") ([ "[") (binary_expression "uVar25 >> 5" (identifier "uVar25") (>> ">>") (number_literal "5")) (] "]")) (= "=") (binary_expression "puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f))" (subscript_expression "puVar26[uVar25 >> 5]" (identifier "puVar26") ([ "[") (binary_expression "uVar25 >> 5" (identifier "uVar25") (>> ">>") (number_literal "5")) (] "]")) (& "&") (unary_expression "~(-1 << (uVar25 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar25 & 0x1f))" (( "(") (binary_expression "-1 << (uVar25 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar25 & 0x1f)" (( "(") (binary_expression "uVar25 & 0x1f" (identifier "uVar25") (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" (if "if") (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar19 != (undefined4 *)0x0" (identifier "puVar19") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar23 = *(undefined4 **)(param_2 + 8);\n    uVar10 = *puVar26;\n    if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }\n    *puVar23 = uVar10;\n  }" ({ "{") (expression_statement "puVar23 = *(undefined4 **)(param_2 + 8);" (assignment_expression "puVar23 = *(undefined4 **)(param_2 + 8)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined4 **)(param_2 + 8)" (* "*") (cast_expression "(undefined4 **)(param_2 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" (identifier "uVar10") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (if_statement "if (puVar19 != (undefined4 *)0x1) {\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" (if "if") (parenthesized_expression "(puVar19 != (undefined4 *)0x1)" (( "(") (binary_expression "puVar19 != (undefined4 *)0x1" (identifier "puVar19") (!= "!=") (cast_expression "(undefined4 *)0x1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n      puVar13 = puVar26 + (int)puVar19;\n      puVar17 = puVar23;\n      puVar6 = puVar26 + 1;\n      do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);\n      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);\n      puVar23 = puVar23 + (int)puVar19 + -1;\n    }" ({ "{") (expression_statement "puVar13 = puVar26 + (int)puVar19;" (assignment_expression "puVar13 = puVar26 + (int)puVar19" (identifier "puVar13") (= "=") (binary_expression "puVar26 + (int)puVar19" (identifier "puVar26") (+ "+") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")))) (; ";")) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" (identifier "puVar17") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      } while (puVar8 != puVar13);" (do "do") (compound_statement "{\n        *puVar17 = uVar10;\n        puVar8 = puVar6 + 1;\n        uVar10 = *puVar6;\n        puVar17 = puVar17 + 1;\n        puVar6 = puVar8;\n      }" ({ "{") (expression_statement "*puVar17 = uVar10;" (assignment_expression "*puVar17 = uVar10" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar8 = puVar6 + 1;" (assignment_expression "puVar8 = puVar6 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" (identifier "uVar10") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" (identifier "puVar6") (= "=") (identifier "puVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != puVar13)" (( "(") (binary_expression "puVar8 != puVar13" (identifier "puVar8") (!= "!=") (identifier "puVar13")) () ")")) (; ";")) (expression_statement "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);" (assignment_expression "puVar17 = (undefined4 *)((int)puVar19 * 4 - 4)" (identifier "puVar17") (= "=") (cast_expression "(undefined4 *)((int)puVar19 * 4 - 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar19 * 4 - 4)" (( "(") (binary_expression "(int)puVar19 * 4 - 4" (binary_expression "(int)puVar19 * 4" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (* "*") (number_literal "4")) (- "-") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar23 = puVar23 + (int)puVar19 + -1;" (assignment_expression "puVar23 = puVar23 + (int)puVar19 + -1" (identifier "puVar23") (= "=") (binary_expression "puVar23 + (int)puVar19 + -1" (binary_expression "puVar23 + (int)puVar19" (identifier "puVar23") (+ "+") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puVar23 = uVar10;" (assignment_expression "*puVar23 = uVar10" (pointer_expression "*puVar23" (* "*") (identifier "puVar23")) (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar25 >> 6;" (assignment_expression "uVar12 = uVar25 >> 6" (identifier "uVar12") (= "=") (binary_expression "uVar25 >> 6" (identifier "uVar25") (>> ">>") (number_literal "6"))) (; ";")) (expression_statement "puVar15 = (uint *)((int)puVar19 - uVar12);" (assignment_expression "puVar15 = (uint *)((int)puVar19 - uVar12)" (identifier "puVar15") (= "=") (cast_expression "(uint *)((int)puVar19 - uVar12)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar19 - uVar12)" (( "(") (binary_expression "(int)puVar19 - uVar12" (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19")) (- "-") (identifier "uVar12")) () ")")))) (; ";")) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" (identifier "puVar16") (= "=") (identifier "puVar15")) (; ";")) (if_statement "if (0 < (int)puVar15) {\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" (if "if") (parenthesized_expression "(0 < (int)puVar15)" (( "(") (binary_expression "0 < (int)puVar15" (number_literal "0") (< "<") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) () ")")) (compound_statement "{\n    puVar19 = (undefined4 *)(uVar12 * 4);\n    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);\n    puVar13 = puVar26 + uVar12;\n    if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }\n  }" ({ "{") (expression_statement "puVar19 = (undefined4 *)(uVar12 * 4);" (assignment_expression "puVar19 = (undefined4 *)(uVar12 * 4)" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)(uVar12 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar12 * 4)" (( "(") (binary_expression "uVar12 * 4" (identifier "uVar12") (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);" (assignment_expression "puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b)" (identifier "puVar17") (= "=") (cast_expression "(undefined4 *)((uVar25 << 0x1a) >> 0x1b)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar25 << 0x1a) >> 0x1b)" (( "(") (binary_expression "(uVar25 << 0x1a) >> 0x1b" (parenthesized_expression "(uVar25 << 0x1a)" (( "(") (binary_expression "uVar25 << 0x1a" (identifier "uVar25") (<< "<<") (number_literal "0x1a")) () ")")) (>> ">>") (number_literal "0x1b")) () ")")))) (; ";")) (expression_statement "puVar13 = puVar26 + uVar12;" (assignment_expression "puVar13 = puVar26 + uVar12" (identifier "puVar13") (= "=") (binary_expression "puVar26 + uVar12" (identifier "puVar26") (+ "+") (identifier "uVar12"))) (; ";")) (if_statement "if (puVar17 == (undefined4 *)0x0) {\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }\n    else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" (if "if") (parenthesized_expression "(puVar17 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar17 == (undefined4 *)0x0" (identifier "puVar17") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar10 = *puVar13;\n      if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }\n      *param_1 = uVar10;\n    }" ({ "{") (expression_statement "uVar10 = *puVar13;" (assignment_expression "uVar10 = *puVar13" (identifier "uVar10") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (if_statement "if (puVar15 != (uint *)0x1) {\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" (if "if") (parenthesized_expression "(puVar15 != (uint *)0x1)" (( "(") (binary_expression "puVar15 != (uint *)0x1" (identifier "puVar15") (!= "!=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n        puVar23 = puVar13 + 1;\n        puVar13 = puVar13 + (int)puVar15;\n        puVar6 = param_1;\n        do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);\n        puVar16 = (uint *)((int)puVar15 * 4 + -4);\n        param_1 = param_1 + (int)puVar15 + -1;\n      }" ({ "{") (expression_statement "puVar23 = puVar13 + 1;" (assignment_expression "puVar23 = puVar13 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + (int)puVar15;" (assignment_expression "puVar13 = puVar13 + (int)puVar15" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (int)puVar15" (identifier "puVar13") (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")))) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        } while (puVar8 != puVar13);" (do "do") (compound_statement "{\n          *puVar6 = uVar10;\n          puVar8 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar8;\n          puVar6 = puVar6 + 1;\n        }" ({ "{") (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar8 = puVar23 + 1;" (assignment_expression "puVar8 = puVar23 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" (identifier "uVar10") (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (expression_statement "puVar23 = puVar8;" (assignment_expression "puVar23 = puVar8" (identifier "puVar23") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != puVar13)" (( "(") (binary_expression "puVar8 != puVar13" (identifier "puVar8") (!= "!=") (identifier "puVar13")) () ")")) (; ";")) (expression_statement "puVar16 = (uint *)((int)puVar15 * 4 + -4);" (assignment_expression "puVar16 = (uint *)((int)puVar15 * 4 + -4)" (identifier "puVar16") (= "=") (cast_expression "(uint *)((int)puVar15 * 4 + -4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar15 * 4 + -4)" (( "(") (binary_expression "(int)puVar15 * 4 + -4" (binary_expression "(int)puVar15 * 4" (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15")) (* "*") (number_literal "4")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "param_1 = param_1 + (int)puVar15 + -1;" (assignment_expression "param_1 = param_1 + (int)puVar15 + -1" (identifier "param_1") (= "=") (binary_expression "param_1 + (int)puVar15 + -1" (binary_expression "param_1 + (int)puVar15" (identifier "param_1") (+ "+") (cast_expression "(int)puVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar15"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar10")) (; ";")) (} "}")) (else_clause "else {\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);\n      uVar10 = *puVar26;\n      if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }\n      *param_1 = uVar10;\n      puVar16 = puVar15;\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmpn_rshift_00097560)(puVar26);" (call_expression "(*(code *)PTR___gmpn_rshift_00097560)(puVar26)" (parenthesized_expression "(*(code *)PTR___gmpn_rshift_00097560)" (( "(") (pointer_expression "*(code *)PTR___gmpn_rshift_00097560" (* "*") (cast_expression "(code *)PTR___gmpn_rshift_00097560" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_rshift_00097560"))) () ")")) (argument_list "(puVar26)" (( "(") (identifier "puVar26") () ")"))) (; ";")) (expression_statement "uVar10 = *puVar26;" (assignment_expression "uVar10 = *puVar26" (identifier "uVar10") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (if_statement "if (uVar12 != 0) {\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar19 = param_1 + uVar12;\n        puVar23 = puVar26 + 1;\n        puVar6 = param_1;\n        do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);\n      }" ({ "{") (expression_statement "puVar19 = param_1 + uVar12;" (assignment_expression "puVar19 = param_1 + uVar12" (identifier "puVar19") (= "=") (binary_expression "param_1 + uVar12" (identifier "param_1") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        } while (param_1 != puVar19);" (do "do") (compound_statement "{\n          param_1 = puVar6 + 1;\n          *puVar6 = uVar10;\n          puVar26 = puVar23 + 1;\n          uVar10 = *puVar23;\n          puVar23 = puVar26;\n          puVar6 = param_1;\n        }" ({ "{") (expression_statement "param_1 = puVar6 + 1;" (assignment_expression "param_1 = puVar6 + 1" (identifier "param_1") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = uVar10;" (assignment_expression "*puVar6 = uVar10" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar26 = puVar23 + 1;" (assignment_expression "puVar26 = puVar23 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = *puVar23;" (assignment_expression "uVar10 = *puVar23" (identifier "uVar10") (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (expression_statement "puVar23 = puVar26;" (assignment_expression "puVar23 = puVar26" (identifier "puVar23") (= "=") (identifier "puVar26")) (; ";")) (expression_statement "puVar6 = param_1;" (assignment_expression "puVar6 = param_1" (identifier "puVar6") (= "=") (identifier "param_1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_1 != puVar19)" (( "(") (binary_expression "param_1 != puVar19" (identifier "param_1") (!= "!=") (identifier "puVar19")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar16 = puVar15;" (assignment_expression "puVar16 = puVar15" (identifier "puVar16") (= "=") (identifier "puVar15")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_30 != 0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_2c == *(undefined4 **)puVar4) {\n    return uVar25 + 1 >> 1;\n  }" (if "if") (parenthesized_expression "(local_2c == *(undefined4 **)puVar4)" (( "(") (binary_expression "local_2c == *(undefined4 **)puVar4" (identifier "local_2c") (== "==") (pointer_expression "*(undefined4 **)puVar4" (* "*") (cast_expression "(undefined4 **)puVar4" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return uVar25 + 1 >> 1;\n  }" ({ "{") (return_statement "return uVar25 + 1 >> 1;" (return "return") (binary_expression "uVar25 + 1 >> 1" (binary_expression "uVar25 + 1" (identifier "uVar25") (+ "+") (number_literal "1")) (>> ">>") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar33 = 0x7befc;" (assignment_expression "uVar33 = 0x7befc" (identifier "uVar33") (= "=") (number_literal "0x7befc")) (; ";")) (expression_statement "puVar23 = local_2c;" (assignment_expression "puVar23 = local_2c" (identifier "puVar23") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar28 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar28 = PTR___stack_chk_fail_000974d0" (identifier "puVar28") (= "=") (identifier "PTR___stack_chk_fail_000974d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = puVar28 + 0x23144;" (assignment_expression "puVar30 = puVar28 + 0x23144" (identifier "puVar30") (= "=") (binary_expression "puVar28 + 0x23144" (identifier "puVar28") (+ "+") (number_literal "0x23144"))) (; ";")) (expression_statement "iVar7 = puVar23[2];" (assignment_expression "iVar7 = puVar23[2]" (identifier "iVar7") (= "=") (subscript_expression "puVar23[2]" (identifier "puVar23") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar32 = puVar31 + -0x60;" (assignment_expression "puVar32 = puVar31 + -0x60" (identifier "puVar32") (= "=") (binary_expression "puVar31 + -0x60" (identifier "puVar31") (+ "+") (number_literal "-0x60"))) (; ";")) (expression_statement "puVar6 = *(undefined4 **)(puVar28 + 0x1b644);" (assignment_expression "puVar6 = *(undefined4 **)(puVar28 + 0x1b644)" (identifier "puVar6") (= "=") (pointer_expression "*(undefined4 **)(puVar28 + 0x1b644)" (* "*") (cast_expression "(undefined4 **)(puVar28 + 0x1b644)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x1b644)" (( "(") (binary_expression "puVar28 + 0x1b644" (identifier "puVar28") (+ "+") (number_literal "0x1b644")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x28) = puVar19;" (assignment_expression "*(undefined4 **)(puVar31 + -0x28) = puVar19" (pointer_expression "*(undefined4 **)(puVar31 + -0x28)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x28)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x28)" (( "(") (binary_expression "puVar31 + -0x28" (identifier "puVar31") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "puVar19")) (; ";")) (expression_statement "*(undefined1 **)(puVar31 + -8) = auStack_60;" (assignment_expression "*(undefined1 **)(puVar31 + -8) = auStack_60" (pointer_expression "*(undefined1 **)(puVar31 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar31 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -8)" (( "(") (binary_expression "puVar31 + -8" (identifier "puVar31") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_60")) (; ";")) (expression_statement "uVar20 = *(uint *)(iVar7 + 0x20);" (assignment_expression "uVar20 = *(uint *)(iVar7 + 0x20)" (identifier "uVar20") (= "=") (pointer_expression "*(uint *)(iVar7 + 0x20)" (* "*") (cast_expression "(uint *)(iVar7 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x20)" (( "(") (binary_expression "iVar7 + 0x20" (identifier "iVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x48) = puVar6;" (assignment_expression "*(undefined4 **)(puVar31 + -0x48) = puVar6" (pointer_expression "*(undefined4 **)(puVar31 + -0x48)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x48)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x48)" (( "(") (binary_expression "puVar31 + -0x48" (identifier "puVar31") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "puVar6")) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x10) = param_1;" (assignment_expression "*(undefined4 **)(puVar31 + -0x10) = param_1" (pointer_expression "*(undefined4 **)(puVar31 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x10)" (( "(") (binary_expression "puVar31 + -0x10" (identifier "puVar31") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar21 = (uint *)(uVar20 >> 1);" (assignment_expression "puVar21 = (uint *)(uVar20 >> 1)" (identifier "puVar21") (= "=") (cast_expression "(uint *)(uVar20 >> 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar20 >> 1)" (( "(") (binary_expression "uVar20 >> 1" (identifier "uVar20") (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar10 = *puVar6;" (assignment_expression "uVar10 = *puVar6" (identifier "uVar10") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x14) = param_2;" (assignment_expression "*(int *)(puVar31 + -0x14) = param_2" (pointer_expression "*(int *)(puVar31 + -0x14)" (* "*") (cast_expression "(int *)(puVar31 + -0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x14)" (( "(") (binary_expression "puVar31 + -0x14" (identifier "puVar31") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x18) = uVar25;" (assignment_expression "*(uint *)(puVar31 + -0x18) = uVar25" (pointer_expression "*(uint *)(puVar31 + -0x18)" (* "*") (cast_expression "(uint *)(puVar31 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x18)" (( "(") (binary_expression "puVar31 + -0x18" (identifier "puVar31") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar25")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x2c) = uVar10;" (assignment_expression "*(undefined4 *)(puVar31 + -0x2c) = uVar10" (pointer_expression "*(undefined4 *)(puVar31 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "iVar7 = (int)puVar21 + 0x1f >> 5;" (assignment_expression "iVar7 = (int)puVar21 + 0x1f >> 5" (identifier "iVar7") (= "=") (binary_expression "(int)puVar21 + 0x1f >> 5" (binary_expression "(int)puVar21 + 0x1f" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (number_literal "0x1f")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x24) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x24) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x24)" (* "*") (cast_expression "(uint *)(puVar31 + -0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x24)" (( "(") (binary_expression "puVar31 + -0x24" (identifier "puVar31") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -4) = uVar33;" (assignment_expression "*(undefined4 *)(puVar31 + -4) = uVar33" (pointer_expression "*(undefined4 *)(puVar31 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -4)" (( "(") (binary_expression "puVar31 + -4" (identifier "puVar31") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar33")) (; ";")) (expression_statement "uVar12 = iVar7 * 4;" (assignment_expression "uVar12 = iVar7 * 4" (identifier "uVar12") (= "=") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) (; ";")) (expression_statement "*(int *)(puVar31 + -0x3c) = iVar7;" (assignment_expression "*(int *)(puVar31 + -0x3c) = iVar7" (pointer_expression "*(int *)(puVar31 + -0x3c)" (* "*") (cast_expression "(int *)(puVar31 + -0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x3c)" (( "(") (binary_expression "puVar31 + -0x3c" (identifier "puVar31") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0xc) = puVar27;" (assignment_expression "*(undefined4 **)(puVar31 + -0xc) = puVar27" (pointer_expression "*(undefined4 **)(puVar31 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0xc)" (( "(") (binary_expression "puVar31 + -0xc" (identifier "puVar31") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar27")) (; ";")) (expression_statement "*(undefined4 **)(puVar31 + -0x1c) = puVar26;" (assignment_expression "*(undefined4 **)(puVar31 + -0x1c) = puVar26" (pointer_expression "*(undefined4 **)(puVar31 + -0x1c)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x1c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x1c)" (( "(") (binary_expression "puVar31 + -0x1c" (identifier "puVar31") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "puVar26")) (; ";")) (expression_statement "*(undefined **)(puVar31 + -0x20) = puVar4;" (assignment_expression "*(undefined **)(puVar31 + -0x20) = puVar4" (pointer_expression "*(undefined **)(puVar31 + -0x20)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x20)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x20)" (( "(") (binary_expression "puVar31 + -0x20" (identifier "puVar31") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(undefined **)(puVar31 + -0x50) = puVar30;" (assignment_expression "*(undefined **)(puVar31 + -0x50) = puVar30" (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "puVar30")) (; ";")) (expression_statement "*(undefined4 *)(puVar31 + -0x30) = 0;" (assignment_expression "*(undefined4 *)(puVar31 + -0x30) = 0" (pointer_expression "*(undefined4 *)(puVar31 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar31 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x44) = uVar12;" (assignment_expression "*(uint *)(puVar31 + -0x44) = uVar12" (pointer_expression "*(uint *)(puVar31 + -0x44)" (* "*") (cast_expression "(uint *)(puVar31 + -0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x44)" (( "(") (binary_expression "puVar31 + -0x44" (identifier "puVar31") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puVar15 = puVar16;" (assignment_expression "puVar15 = puVar16" (identifier "puVar15") (= "=") (identifier "puVar16")) (; ";")) (if_statement "if (uVar12 < 0x7f01) {\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }\n  else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" (if "if") (parenthesized_expression "(uVar12 < 0x7f01)" (( "(") (binary_expression "uVar12 < 0x7f01" (identifier "uVar12") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n    iVar7 = -(uVar12 + 7 & 0xfffffff8);\n    puVar32 = puVar31 + iVar7 + -0x60;\n    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);\n    puVar19 = puVar13;\n  }" ({ "{") (expression_statement "iVar7 = -(uVar12 + 7 & 0xfffffff8);" (assignment_expression "iVar7 = -(uVar12 + 7 & 0xfffffff8)" (identifier "iVar7") (= "=") (unary_expression "-(uVar12 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar12 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar12 + 7 & 0xfffffff8" (binary_expression "uVar12 + 7" (identifier "uVar12") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar32 = puVar31 + iVar7 + -0x60;" (assignment_expression "puVar32 = puVar31 + iVar7 + -0x60" (identifier "puVar32") (= "=") (binary_expression "puVar31 + iVar7 + -0x60" (binary_expression "puVar31 + iVar7" (identifier "puVar31") (+ "+") (identifier "iVar7")) (+ "+") (number_literal "-0x60"))) (; ";")) (expression_statement "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);" (assignment_expression "puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50)" (identifier "puVar27") (= "=") (cast_expression "(undefined4 *)(puVar31 + iVar7 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + iVar7 + -0x50)" (( "(") (binary_expression "puVar31 + iVar7 + -0x50" (binary_expression "puVar31 + iVar7" (identifier "puVar31") (+ "+") (identifier "iVar7")) (+ "+") (number_literal "-0x50")) () ")")))) (; ";")) (expression_statement "puVar19 = puVar13;" (assignment_expression "puVar19 = puVar13" (identifier "puVar19") (= "=") (identifier "puVar13")) (; ";")) (} "}")) (else_clause "else {\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" (else "else") (compound_statement "{\n    puVar19 = *(undefined4 **)(puVar31 + -0x44);\n    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n  }" ({ "{") (expression_statement "puVar19 = *(undefined4 **)(puVar31 + -0x44);" (assignment_expression "puVar19 = *(undefined4 **)(puVar31 + -0x44)" (identifier "puVar19") (= "=") (pointer_expression "*(undefined4 **)(puVar31 + -0x44)" (* "*") (cast_expression "(undefined4 **)(puVar31 + -0x44)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x44)" (( "(") (binary_expression "puVar31 + -0x44" (identifier "puVar31") (+ "+") (number_literal "-0x44")) () ")"))))) (; ";")) (expression_statement "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);" (assignment_expression "puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" (identifier "puVar27") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19)" (parenthesized_expression "(**(code **)(puVar28 + 0x1b3f4))" (( "(") (pointer_expression "**(code **)(puVar28 + 0x1b3f4)" (* "*") (pointer_expression "*(code **)(puVar28 + 0x1b3f4)" (* "*") (cast_expression "(code **)(puVar28 + 0x1b3f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + 0x1b3f4)" (( "(") (binary_expression "puVar28 + 0x1b3f4" (identifier "puVar28") (+ "+") (number_literal "0x1b3f4")) () ")"))))) () ")")) (argument_list "(puVar31 + -0x30,puVar19)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) (, ",") (identifier "puVar19") () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (} "}")))) (expression_statement "puVar24 = *(uint **)(puVar30 + -0x7fd4);" (assignment_expression "puVar24 = *(uint **)(puVar30 + -0x7fd4)" (identifier "puVar24") (= "=") (pointer_expression "*(uint **)(puVar30 + -0x7fd4)" (* "*") (cast_expression "(uint **)(puVar30 + -0x7fd4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7fd4)" (( "(") (binary_expression "puVar30 + -0x7fd4" (identifier "puVar30") (+ "+") (number_literal "-0x7fd4")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;" (assignment_expression "*(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f" (pointer_expression "*(uint *)(puVar31 + -0x40)" (* "*") (cast_expression "(uint *)(puVar31 + -0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (binary_expression "(uint)puVar21 & 0x1f" (cast_expression "(uint)puVar21" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar21")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar24 + -0x111b" (pointer_expression "*(uint **)(puVar31 + -0x34)" (* "*") (cast_expression "(uint **)(puVar31 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (binary_expression "puVar24 + -0x111b" (identifier "puVar24") (+ "+") (number_literal "-0x111b"))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar5 = puVar21;" (assignment_expression "puVar5 = puVar21" (identifier "puVar5") (= "=") (identifier "puVar21")) (; ";")) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" (identifier "puVar9") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (while_statement "while (puVar3 = puVar5, puVar3 <= puVar16) {\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" (while "while") (parenthesized_expression "(puVar3 = puVar5, puVar3 <= puVar16)" (( "(") (comma_expression "puVar3 = puVar5, puVar3 <= puVar16" (assignment_expression "puVar3 = puVar5" (identifier "puVar3") (= "=") (identifier "puVar5")) (, ",") (binary_expression "puVar3 <= puVar16" (identifier "puVar3") (<= "<=") (identifier "puVar16"))) () ")")) (compound_statement "{\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);\n    puVar24 = puVar13 + uVar12;\n    if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }\n    uVar12 = (uint)puVar3 >> 5;\n    puVar9 = puVar3;\n    puVar5 = (uint *)((int)puVar21 + (int)puVar3);\n  }" ({ "{") (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)puVar23[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar23[2]" (identifier "puVar23") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar26 = (undefined4 *)((uint)puVar9 & 0x1f)" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar9 & 0x1f)" (( "(") (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "puVar24 = puVar13 + uVar12;" (assignment_expression "puVar24 = puVar13 + uVar12" (identifier "puVar24") (= "=") (binary_expression "puVar13 + uVar12" (identifier "puVar13") (+ "+") (identifier "uVar12"))) (; ";")) (if_statement "if (puVar26 == (undefined4 *)0x0) {\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }\n    else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" (if "if") (parenthesized_expression "(puVar26 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar26 == (undefined4 *)0x0" (identifier "puVar26") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n    }" ({ "{") (expression_statement "(**(code **)(puVar31 + -0x34))(puVar24,puVar19);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar24,puVar19)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" (( "(") (pointer_expression "**(code **)(puVar31 + -0x34)" (* "*") (pointer_expression "*(code **)(puVar31 + -0x34)" (* "*") (cast_expression "(code **)(puVar31 + -0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")"))))) () ")")) (argument_list "(puVar24,puVar19)" (( "(") (identifier "puVar24") (, ",") (identifier "puVar19") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" (else "else") (compound_statement "{\n      (**(code **)(puVar31 + -0x34))(puVar27);\n      puVar15 = *(uint **)(puVar31 + -0x3c);\n      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);\n      *(uint *)(puVar31 + -0x38) = *puVar24;\n      puVar19 = puVar27;\n      puVar17 = puVar26;\n      uVar10 = (*pcVar29)(puVar24,puVar27);\n      iVar7 = *(int *)(puVar31 + -0x40);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);\n      if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }\n    }" ({ "{") (expression_statement "(**(code **)(puVar31 + -0x34))(puVar27);" (call_expression "(**(code **)(puVar31 + -0x34))(puVar27)" (parenthesized_expression "(**(code **)(puVar31 + -0x34))" (( "(") (pointer_expression "**(code **)(puVar31 + -0x34)" (* "*") (pointer_expression "*(code **)(puVar31 + -0x34)" (* "*") (cast_expression "(code **)(puVar31 + -0x34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")"))))) () ")")) (argument_list "(puVar27)" (( "(") (identifier "puVar27") () ")"))) (; ";")) (expression_statement "puVar15 = *(uint **)(puVar31 + -0x3c);" (assignment_expression "puVar15 = *(uint **)(puVar31 + -0x3c)" (identifier "puVar15") (= "=") (pointer_expression "*(uint **)(puVar31 + -0x3c)" (* "*") (cast_expression "(uint **)(puVar31 + -0x3c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x3c)" (( "(") (binary_expression "puVar31 + -0x3c" (identifier "puVar31") (+ "+") (number_literal "-0x3c")) () ")"))))) (; ";")) (expression_statement "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);" (assignment_expression "pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" (* "*") (cast_expression "(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar31 + -0x50) + -0x7ad4)" (( "(") (binary_expression "*(int *)(puVar31 + -0x50) + -0x7ad4" (pointer_expression "*(int *)(puVar31 + -0x50)" (* "*") (cast_expression "(int *)(puVar31 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")")))) (+ "+") (number_literal "-0x7ad4")) () ")"))))) (; ";")) (expression_statement "*(uint *)(puVar31 + -0x38) = *puVar24;" (assignment_expression "*(uint *)(puVar31 + -0x38) = *puVar24" (pointer_expression "*(uint *)(puVar31 + -0x38)" (* "*") (cast_expression "(uint *)(puVar31 + -0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x38)" (( "(") (binary_expression "puVar31 + -0x38" (identifier "puVar31") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (pointer_expression "*puVar24" (* "*") (identifier "puVar24"))) (; ";")) (expression_statement "puVar19 = puVar27;" (assignment_expression "puVar19 = puVar27" (identifier "puVar19") (= "=") (identifier "puVar27")) (; ";")) (expression_statement "puVar17 = puVar26;" (assignment_expression "puVar17 = puVar26" (identifier "puVar17") (= "=") (identifier "puVar26")) (; ";")) (expression_statement "uVar10 = (*pcVar29)(puVar24,puVar27);" (assignment_expression "uVar10 = (*pcVar29)(puVar24,puVar27)" (identifier "uVar10") (= "=") (call_expression "(*pcVar29)(puVar24,puVar27)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(puVar24,puVar27)" (( "(") (identifier "puVar24") (, ",") (identifier "puVar27") () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(puVar31 + -0x40);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x40)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar31 + -0x40)" (* "*") (cast_expression "(int *)(puVar31 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x40)" (( "(") (binary_expression "puVar31 + -0x40" (identifier "puVar31") (+ "+") (number_literal "-0x40")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);" (assignment_expression "*puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (= "=") (binary_expression "*puVar24 | *(uint *)(puVar31 + -0x38)" (pointer_expression "*puVar24" (* "*") (identifier "puVar24")) (| "|") (pointer_expression "*(uint *)(puVar31 + -0x38)" (* "*") (cast_expression "(uint *)(puVar31 + -0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x38)" (( "(") (binary_expression "puVar31 + -0x38" (identifier "puVar31") (+ "+") (number_literal "-0x38")) () ")")))))) (; ";")) (if_statement "if (0x20 < (uint)(iVar7 + (int)puVar26)) {\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" (if "if") (parenthesized_expression "(0x20 < (uint)(iVar7 + (int)puVar26))" (( "(") (binary_expression "0x20 < (uint)(iVar7 + (int)puVar26)" (number_literal "0x20") (< "<") (call_expression "(uint)(iVar7 + (int)puVar26)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar7 + (int)puVar26)" (( "(") (binary_expression "iVar7 + (int)puVar26" (identifier "iVar7") (+ "+") (cast_expression "(int)puVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar26"))) () ")")))) () ")")) (compound_statement "{\n        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;\n      }" ({ "{") (expression_statement "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;" (assignment_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10" (pointer_expression "*(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" (* "*") (cast_expression "(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 + *(int *)(puVar31 + -0x44))" (( "(") (binary_expression "(int)puVar24 + *(int *)(puVar31 + -0x44)" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (+ "+") (pointer_expression "*(int *)(puVar31 + -0x44)" (* "*") (cast_expression "(int *)(puVar31 + -0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x44)" (( "(") (binary_expression "puVar31 + -0x44" (identifier "puVar31") (+ "+") (number_literal "-0x44")) () ")"))))) () ")")))) (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar12 = (uint)puVar3 >> 5;" (assignment_expression "uVar12 = (uint)puVar3 >> 5" (identifier "uVar12") (= "=") (binary_expression "(uint)puVar3 >> 5" (cast_expression "(uint)puVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar3")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar9 = puVar3;" (assignment_expression "puVar9 = puVar3" (identifier "puVar9") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar5 = (uint *)((int)puVar21 + (int)puVar3);" (assignment_expression "puVar5 = (uint *)((int)puVar21 + (int)puVar3)" (identifier "puVar5") (= "=") (cast_expression "(uint *)((int)puVar21 + (int)puVar3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + (int)puVar3)" (( "(") (binary_expression "(int)puVar21 + (int)puVar3" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3"))) () ")")))) (; ";")) (} "}"))) (if_statement "if (puVar9 == puVar16) {\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }\n  else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" (if "if") (parenthesized_expression "(puVar9 == puVar16)" (( "(") (binary_expression "puVar9 == puVar16" (identifier "puVar9") (== "==") (identifier "puVar16")) () ")")) (compound_statement "{\n    iVar7 = *(int *)(puVar31 + -0x30);\nLAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n    if (iVar7 == 0) goto LAB_0007c05c;\n  }" ({ "{") (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar31 + -0x30)" (* "*") (cast_expression "(int *)(puVar31 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (labeled_statement "LAB_0007c054:\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);" (statement_identifier "LAB_0007c054") (: ":") (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" (identifier "pcVar29") (= "=") (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")) () ")"))))) (; ";"))) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c05c;" (goto "goto") (statement_identifier "LAB_0007c05c") (; ";"))) (} "}")) (else_clause "else {\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" (else "else") (compound_statement "{\n    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);\n    puVar21 = puVar13 + ((uint)puVar9 >> 5);\n    if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }\n    puVar19 = (undefined4 *)puVar23[2];\n    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);\n    *(uint **)(puVar31 + -0x34) = puVar9;\n    puVar24 = (uint *)(iVar7 >> 5);\n    FUN_0007bb94(puVar27,puVar19);\n    puVar30 = *(undefined **)(puVar31 + -0x50);\n    if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }\n    uVar12 = (uint)puVar16 & 0x1f;\n    iVar7 = *(int *)(puVar31 + -0x30);\n    if (uVar12 == 0) goto LAB_0007c054;\n    puVar16 = puVar13 + ((uint)puVar16 >> 5);\n    *puVar16 = *puVar16 & ~(-1 << uVar12);\n    if (iVar7 == 0) goto LAB_0007c05c;\n    pcVar29 = *(code **)(puVar30 + -0x7a2c);\n  }" ({ "{") (expression_statement "iVar7 = (int)puVar16 + (0x1f - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x1f - (int)puVar9)" (identifier "iVar7") (= "=") (binary_expression "(int)puVar16 + (0x1f - (int)puVar9)" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (parenthesized_expression "(0x1f - (int)puVar9)" (( "(") (binary_expression "0x1f - (int)puVar9" (number_literal "0x1f") (- "-") (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9"))) () ")")))) (; ";")) (expression_statement "puVar21 = puVar13 + ((uint)puVar9 >> 5);" (assignment_expression "puVar21 = puVar13 + ((uint)puVar9 >> 5)" (identifier "puVar21") (= "=") (binary_expression "puVar13 + ((uint)puVar9 >> 5)" (identifier "puVar13") (+ "+") (parenthesized_expression "((uint)puVar9 >> 5)" (( "(") (binary_expression "(uint)puVar9 >> 5" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (>> ">>") (number_literal "5")) () ")")))) (; ";")) (if_statement "if (iVar7 < 0) {\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" (if "if") (parenthesized_expression "(iVar7 < 0)" (( "(") (binary_expression "iVar7 < 0" (identifier "iVar7") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);\n    }" ({ "{") (expression_statement "iVar7 = (int)puVar16 + (0x3e - (int)puVar9);" (assignment_expression "iVar7 = (int)puVar16 + (0x3e - (int)puVar9)" (identifier "iVar7") (= "=") (binary_expression "(int)puVar16 + (0x3e - (int)puVar9)" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (parenthesized_expression "(0x3e - (int)puVar9)" (( "(") (binary_expression "0x3e - (int)puVar9" (number_literal "0x3e") (- "-") (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9"))) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar19 = (undefined4 *)puVar23[2];" (assignment_expression "puVar19 = (undefined4 *)puVar23[2]" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)puVar23[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar23[2]" (identifier "puVar23") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);" (assignment_expression "puVar23 = (undefined4 *)((uint)puVar9 & 0x1f)" (identifier "puVar23") (= "=") (cast_expression "(undefined4 *)((uint)puVar9 & 0x1f)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar9 & 0x1f)" (( "(") (binary_expression "(uint)puVar9 & 0x1f" (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "*(uint **)(puVar31 + -0x34) = puVar9;" (assignment_expression "*(uint **)(puVar31 + -0x34) = puVar9" (pointer_expression "*(uint **)(puVar31 + -0x34)" (* "*") (cast_expression "(uint **)(puVar31 + -0x34)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puVar24 = (uint *)(iVar7 >> 5);" (assignment_expression "puVar24 = (uint *)(iVar7 >> 5)" (identifier "puVar24") (= "=") (cast_expression "(uint *)(iVar7 >> 5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 >> 5)" (( "(") (binary_expression "iVar7 >> 5" (identifier "iVar7") (>> ">>") (number_literal "5")) () ")")))) (; ";")) (expression_statement "FUN_0007bb94(puVar27,puVar19);" (call_expression "FUN_0007bb94(puVar27,puVar19)" (identifier "FUN_0007bb94") (argument_list "(puVar27,puVar19)" (( "(") (identifier "puVar27") (, ",") (identifier "puVar19") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (if_statement "if (puVar23 == (undefined4 *)0x0) {\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }\n    else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" (if "if") (parenthesized_expression "(puVar23 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar23 == (undefined4 *)0x0" (identifier "puVar23") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }\n    }" ({ "{") (if_statement "if (puVar24 != (uint *)0x0) {\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" (if "if") (parenthesized_expression "(puVar24 != (uint *)0x0)" (( "(") (binary_expression "puVar24 != (uint *)0x0" (identifier "puVar24") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar19 = (undefined4 *)*puVar27;\n        if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }\n        *puVar21 = (uint)puVar19;\n      }" ({ "{") (expression_statement "puVar19 = (undefined4 *)*puVar27;" (assignment_expression "puVar19 = (undefined4 *)*puVar27" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)*puVar27" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar27" (* "*") (identifier "puVar27")))) (; ";")) (if_statement "if (puVar24 != (uint *)0x1) {\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" (if "if") (parenthesized_expression "(puVar24 != (uint *)0x1)" (( "(") (binary_expression "puVar24 != (uint *)0x1" (identifier "puVar24") (!= "!=") (cast_expression "(uint *)0x1" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")")) (compound_statement "{\n          puVar26 = puVar27 + 1;\n          puVar27 = puVar27 + (int)puVar24;\n          puVar9 = puVar21;\n          do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);\n          puVar21 = puVar21 + (int)puVar24 + -1;\n        }" ({ "{") (expression_statement "puVar26 = puVar27 + 1;" (assignment_expression "puVar26 = puVar27 + 1" (identifier "puVar26") (= "=") (binary_expression "puVar27 + 1" (identifier "puVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar27 = puVar27 + (int)puVar24;" (assignment_expression "puVar27 = puVar27 + (int)puVar24" (identifier "puVar27") (= "=") (binary_expression "puVar27 + (int)puVar24" (identifier "puVar27") (+ "+") (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")))) (; ";")) (expression_statement "puVar9 = puVar21;" (assignment_expression "puVar9 = puVar21" (identifier "puVar9") (= "=") (identifier "puVar21")) (; ";")) (do_statement "do {\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          } while (puVar6 != puVar27);" (do "do") (compound_statement "{\n            *puVar9 = (uint)puVar19;\n            puVar6 = puVar26 + 1;\n            puVar19 = (undefined4 *)*puVar26;\n            puVar26 = puVar6;\n            puVar9 = puVar9 + 1;\n          }" ({ "{") (expression_statement "*puVar9 = (uint)puVar19;" (assignment_expression "*puVar9 = (uint)puVar19" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (cast_expression "(uint)puVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar19"))) (; ";")) (expression_statement "puVar6 = puVar26 + 1;" (assignment_expression "puVar6 = puVar26 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar19 = (undefined4 *)*puVar26;" (assignment_expression "puVar19 = (undefined4 *)*puVar26" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)*puVar26" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar26" (* "*") (identifier "puVar26")))) (; ";")) (expression_statement "puVar26 = puVar6;" (assignment_expression "puVar26 = puVar6" (identifier "puVar26") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "puVar9 = puVar9 + 1;" (assignment_expression "puVar9 = puVar9 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 1" (identifier "puVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != puVar27)" (( "(") (binary_expression "puVar6 != puVar27" (identifier "puVar6") (!= "!=") (identifier "puVar27")) () ")")) (; ";")) (expression_statement "puVar21 = puVar21 + (int)puVar24 + -1;" (assignment_expression "puVar21 = puVar21 + (int)puVar24 + -1" (identifier "puVar21") (= "=") (binary_expression "puVar21 + (int)puVar24 + -1" (binary_expression "puVar21 + (int)puVar24" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*puVar21 = (uint)puVar19;" (assignment_expression "*puVar21 = (uint)puVar19" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (= "=") (cast_expression "(uint)puVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar19"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" (else "else") (compound_statement "{\n      uVar25 = *puVar21;\n      puVar15 = puVar24;\n      puVar17 = puVar23;\n      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);\n      puVar19 = (undefined4 *)((int)puVar24 * 0x20);\n      iVar7 = *(int *)(puVar31 + -0x34);\n      puVar30 = *(undefined **)(puVar31 + -0x50);\n      *puVar21 = *puVar21 | uVar25;\n      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }\n    }" ({ "{") (expression_statement "uVar25 = *puVar21;" (assignment_expression "uVar25 = *puVar21" (identifier "uVar25") (= "=") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) (; ";")) (expression_statement "puVar15 = puVar24;" (assignment_expression "puVar15 = puVar24" (identifier "puVar15") (= "=") (identifier "puVar24")) (; ";")) (expression_statement "puVar17 = puVar23;" (assignment_expression "puVar17 = puVar23" (identifier "puVar17") (= "=") (identifier "puVar23")) (; ";")) (expression_statement "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);" (assignment_expression "uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" (identifier "uVar12") (= "=") (call_expression "(**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27)" (parenthesized_expression "(**(code **)(puVar30 + -0x7ad4))" (( "(") (pointer_expression "**(code **)(puVar30 + -0x7ad4)" (* "*") (pointer_expression "*(code **)(puVar30 + -0x7ad4)" (* "*") (cast_expression "(code **)(puVar30 + -0x7ad4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7ad4)" (( "(") (binary_expression "puVar30 + -0x7ad4" (identifier "puVar30") (+ "+") (number_literal "-0x7ad4")) () ")"))))) () ")")) (argument_list "(puVar21,puVar27)" (( "(") (identifier "puVar21") (, ",") (identifier "puVar27") () ")")))) (; ";")) (expression_statement "puVar19 = (undefined4 *)((int)puVar24 * 0x20);" (assignment_expression "puVar19 = (undefined4 *)((int)puVar24 * 0x20)" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)((int)puVar24 * 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 * 0x20)" (( "(") (binary_expression "(int)puVar24 * 0x20" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (* "*") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(puVar31 + -0x34);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x34)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar31 + -0x34)" (* "*") (cast_expression "(int *)(puVar31 + -0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x34)" (( "(") (binary_expression "puVar31 + -0x34" (identifier "puVar31") (+ "+") (number_literal "-0x34")) () ")"))))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (expression_statement "*puVar21 = *puVar21 | uVar25;" (assignment_expression "*puVar21 = *puVar21 | uVar25" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (= "=") (binary_expression "*puVar21 | uVar25" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (| "|") (identifier "uVar25"))) (; ";")) (if_statement "if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" (if "if") (parenthesized_expression "((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16)" (( "(") (binary_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16" (cast_expression "(uint *)((iVar7 - (int)puVar23) + (int)puVar19)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((iVar7 - (int)puVar23) + (int)puVar19)" (( "(") (binary_expression "(iVar7 - (int)puVar23) + (int)puVar19" (parenthesized_expression "(iVar7 - (int)puVar23)" (( "(") (binary_expression "iVar7 - (int)puVar23" (identifier "iVar7") (- "-") (cast_expression "(int)puVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar23"))) () ")")) (+ "+") (cast_expression "(int)puVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar19"))) () ")"))) (< "<") (identifier "puVar16")) () ")")) (compound_statement "{\n        puVar21 = puVar21 + (int)puVar24;\n        *puVar21 = uVar12;\n      }" ({ "{") (expression_statement "puVar21 = puVar21 + (int)puVar24;" (assignment_expression "puVar21 = puVar21 + (int)puVar24" (identifier "puVar21") (= "=") (binary_expression "puVar21 + (int)puVar24" (identifier "puVar21") (+ "+") (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")))) (; ";")) (expression_statement "*puVar21 = uVar12;" (assignment_expression "*puVar21 = uVar12" (pointer_expression "*puVar21" (* "*") (identifier "puVar21")) (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar12 = (uint)puVar16 & 0x1f;" (assignment_expression "uVar12 = (uint)puVar16 & 0x1f" (identifier "uVar12") (= "=") (binary_expression "(uint)puVar16 & 0x1f" (cast_expression "(uint)puVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar16")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar7 = *(int *)(puVar31 + -0x30);" (assignment_expression "iVar7 = *(int *)(puVar31 + -0x30)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar31 + -0x30)" (* "*") (cast_expression "(int *)(puVar31 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x30)" (( "(") (binary_expression "puVar31 + -0x30" (identifier "puVar31") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (if_statement "if (uVar12 == 0) goto LAB_0007c054;" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c054;" (goto "goto") (statement_identifier "LAB_0007c054") (; ";"))) (expression_statement "puVar16 = puVar13 + ((uint)puVar16 >> 5);" (assignment_expression "puVar16 = puVar13 + ((uint)puVar16 >> 5)" (identifier "puVar16") (= "=") (binary_expression "puVar13 + ((uint)puVar16 >> 5)" (identifier "puVar13") (+ "+") (parenthesized_expression "((uint)puVar16 >> 5)" (( "(") (binary_expression "(uint)puVar16 >> 5" (cast_expression "(uint)puVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar16")) (>> ">>") (number_literal "5")) () ")")))) (; ";")) (expression_statement "*puVar16 = *puVar16 & ~(-1 << uVar12);" (assignment_expression "*puVar16 = *puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (binary_expression "*puVar16 & ~(-1 << uVar12)" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (& "&") (unary_expression "~(-1 << uVar12)" (~ "~") (parenthesized_expression "(-1 << uVar12)" (( "(") (binary_expression "-1 << uVar12" (number_literal "-1") (<< "<<") (identifier "uVar12")) () ")"))))) (; ";")) (if_statement "if (iVar7 == 0) goto LAB_0007c05c;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0007c05c;" (goto "goto") (statement_identifier "LAB_0007c05c") (; ";"))) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7a2c);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7a2c)" (identifier "pcVar29") (= "=") (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")) () ")"))))) (; ";")) (} "}")))) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar30 = *(undefined **)(puVar31 + -0x50);" (assignment_expression "puVar30 = *(undefined **)(puVar31 + -0x50)" (identifier "puVar30") (= "=") (pointer_expression "*(undefined **)(puVar31 + -0x50)" (* "*") (cast_expression "(undefined **)(puVar31 + -0x50)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x50)" (( "(") (binary_expression "puVar31 + -0x50" (identifier "puVar31") (+ "+") (number_literal "-0x50")) () ")"))))) (; ";")) (labeled_statement "LAB_0007c05c:\n  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" (statement_identifier "LAB_0007c05c") (: ":") (if_statement "if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {\n    return **(uint **)(puVar31 + -0x48);\n  }" (if "if") (parenthesized_expression "(*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48))" (( "(") (binary_expression "*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)" (pointer_expression "*(uint *)(puVar31 + -0x2c)" (* "*") (cast_expression "(uint *)(puVar31 + -0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar31 + -0x2c)" (( "(") (binary_expression "puVar31 + -0x2c" (identifier "puVar31") (+ "+") (number_literal "-0x2c")) () ")")))) (== "==") (pointer_expression "**(uint **)(puVar31 + -0x48)" (* "*") (pointer_expression "*(uint **)(puVar31 + -0x48)" (* "*") (cast_expression "(uint **)(puVar31 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x48)" (( "(") (binary_expression "puVar31 + -0x48" (identifier "puVar31") (+ "+") (number_literal "-0x48")) () ")")))))) () ")")) (compound_statement "{\n    return **(uint **)(puVar31 + -0x48);\n  }" ({ "{") (return_statement "return **(uint **)(puVar31 + -0x48);" (return "return") (pointer_expression "**(uint **)(puVar31 + -0x48)" (* "*") (pointer_expression "*(uint **)(puVar31 + -0x48)" (* "*") (cast_expression "(uint **)(puVar31 + -0x48)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar31 + -0x48)" (( "(") (binary_expression "puVar31 + -0x48" (identifier "puVar31") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar29 = *(code **)(puVar30 + -0x7b70);" (assignment_expression "pcVar29 = *(code **)(puVar30 + -0x7b70)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(puVar30 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar30 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar30 + -0x7b70)" (( "(") (binary_expression "puVar30 + -0x7b70" (identifier "puVar30") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "pcVar34 = __gmp_randinit_lc_2exp;" (assignment_expression "pcVar34 = __gmp_randinit_lc_2exp" (identifier "pcVar34") (= "=") (identifier "__gmp_randinit_lc_2exp")) (; ";")) (expression_statement "(*pcVar29)();" (call_expression "(*pcVar29)()" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;" (assignment_expression "*(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40" (pointer_expression "*(code **)(puVar32 + -0x28)" (* "*") (cast_expression "(code **)(puVar32 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x28)" (( "(") (binary_expression "puVar32 + -0x28" (identifier "puVar32") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (binary_expression "pcVar29 + 0x22e40" (identifier "pcVar29") (+ "+") (number_literal "0x22e40"))) (; ";")) (expression_statement "*(code **)(puVar32 + -4) = pcVar34;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar34" (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 "pcVar34")) (; ";")) (expression_statement "*(undefined4 **)(puVar32 + -8) = puVar13;" (assignment_expression "*(undefined4 **)(puVar32 + -8) = puVar13" (pointer_expression "*(undefined4 **)(puVar32 + -8)" (* "*") (cast_expression "(undefined4 **)(puVar32 + -8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -8)" (( "(") (binary_expression "puVar32 + -8" (identifier "puVar32") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "*(undefined4 **)(puVar32 + -0xc) = puVar23;" (assignment_expression "*(undefined4 **)(puVar32 + -0xc) = puVar23" (pointer_expression "*(undefined4 **)(puVar32 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar32 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0xc)" (( "(") (binary_expression "puVar32 + -0xc" (identifier "puVar32") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar23")) (; ";")) (expression_statement "*(undefined4 **)(puVar32 + -0x10) = puVar27;" (assignment_expression "*(undefined4 **)(puVar32 + -0x10) = puVar27" (pointer_expression "*(undefined4 **)(puVar32 + -0x10)" (* "*") (cast_expression "(undefined4 **)(puVar32 + -0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x10)" (( "(") (binary_expression "puVar32 + -0x10" (identifier "puVar32") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "puVar27")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x14) = puVar24;" (assignment_expression "*(uint **)(puVar32 + -0x14) = puVar24" (pointer_expression "*(uint **)(puVar32 + -0x14)" (* "*") (cast_expression "(uint **)(puVar32 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x14)" (( "(") (binary_expression "puVar32 + -0x14" (identifier "puVar32") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "puVar24")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x18) = puVar16;" (assignment_expression "*(uint **)(puVar32 + -0x18) = puVar16" (pointer_expression "*(uint **)(puVar32 + -0x18)" (* "*") (cast_expression "(uint **)(puVar32 + -0x18)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + -0x18)" (( "(") (binary_expression "puVar32 + -0x18" (identifier "puVar32") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "puVar16")) (; ";")) (expression_statement "*(uint **)(puVar32 + -0x1c) = puVar21;" (assignment_expression "*(uint **)(puVar32 + -0x1c) = puVar21" (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 "puVar21")) (; ";")) (if_statement "if (puVar17 != (undefined4 *)0x0) {\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" (if "if") (parenthesized_expression "(puVar17 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar17 != (undefined4 *)0x0" (identifier "puVar17") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar12 = (int)puVar17 + 0x1fU >> 5;\n    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);\n    iVar18 = *(int *)(puVar32 + -0x28);\n    *(int *)(iVar7 + 8) = iVar14;\n    pcVar29 = *(code **)(iVar18 + -0x7ebc);\n    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;\n    (*pcVar29)(iVar14,puVar17);\n    iVar7 = *(int *)(puVar32 + -0x28);\n    puVar27 = *(undefined4 **)(iVar14 + 8);\n    if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }\n    pcVar29 = *(code **)(iVar7 + -0x7f10);\n    *(uint *)(iVar14 + 4) = uVar12;\n    *puVar27 = 1;\n    (*pcVar29)(iVar14 + 0xc);\n    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);\n    if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }\n    *(uint **)(iVar14 + 0x1c) = puVar15;\n    *(undefined4 **)(iVar14 + 0x20) = puVar17;\n    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);\n    return (uint)(puVar15 != (uint *)0x0);\n  }" ({ "{") (expression_statement "uVar12 = (int)puVar17 + 0x1fU >> 5;" (assignment_expression "uVar12 = (int)puVar17 + 0x1fU >> 5" (identifier "uVar12") (= "=") (binary_expression "(int)puVar17 + 0x1fU >> 5" (binary_expression "(int)puVar17 + 0x1fU" (cast_expression "(int)puVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar17")) (+ "+") (number_literal "0x1fU")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);" (assignment_expression "iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" (identifier "iVar14") (= "=") (call_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" (* "*") (cast_expression "(code *)**(undefined4 **)(pcVar29 + 0x1b30c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(pcVar29 + 0x1b30c)" (* "*") (pointer_expression "*(undefined4 **)(pcVar29 + 0x1b30c)" (* "*") (cast_expression "(undefined4 **)(pcVar29 + 0x1b30c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + 0x1b30c)" (( "(") (binary_expression "pcVar29 + 0x1b30c" (identifier "pcVar29") (+ "+") (number_literal "0x1b30c")) () ")"))))))) () ")")) (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")")))) (; ";")) (expression_statement "iVar18 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar18 = *(int *)(puVar32 + -0x28)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(puVar32 + -0x28)" (* "*") (cast_expression "(int *)(puVar32 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x28)" (( "(") (binary_expression "puVar32 + -0x28" (identifier "puVar32") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar7 + 8) = iVar14;" (assignment_expression "*(int *)(iVar7 + 8) = iVar14" (pointer_expression "*(int *)(iVar7 + 8)" (* "*") (cast_expression "(int *)(iVar7 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "pcVar29 = *(code **)(iVar18 + -0x7ebc);" (assignment_expression "pcVar29 = *(code **)(iVar18 + -0x7ebc)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(iVar18 + -0x7ebc)" (* "*") (cast_expression "(code **)(iVar18 + -0x7ebc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar18 + -0x7ebc)" (( "(") (binary_expression "iVar18 + -0x7ebc" (identifier "iVar18") (+ "+") (number_literal "-0x7ebc")) () ")"))))) (; ";")) (expression_statement "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;" (assignment_expression "*(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "*(int *)(iVar18 + -0x7fe4) + 0x6f90" (pointer_expression "*(int *)(iVar18 + -0x7fe4)" (* "*") (cast_expression "(int *)(iVar18 + -0x7fe4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + -0x7fe4)" (( "(") (binary_expression "iVar18 + -0x7fe4" (identifier "iVar18") (+ "+") (number_literal "-0x7fe4")) () ")")))) (+ "+") (number_literal "0x6f90"))) (; ";")) (expression_statement "(*pcVar29)(iVar14,puVar17);" (call_expression "(*pcVar29)(iVar14,puVar17)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(iVar14,puVar17)" (( "(") (identifier "iVar14") (, ",") (identifier "puVar17") () ")"))) (; ";")) (expression_statement "iVar7 = *(int *)(puVar32 + -0x28);" (assignment_expression "iVar7 = *(int *)(puVar32 + -0x28)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar32 + -0x28)" (* "*") (cast_expression "(int *)(puVar32 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x28)" (( "(") (binary_expression "puVar32 + -0x28" (identifier "puVar32") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "puVar27 = *(undefined4 **)(iVar14 + 8);" (assignment_expression "puVar27 = *(undefined4 **)(iVar14 + 8)" (identifier "puVar27") (= "=") (pointer_expression "*(undefined4 **)(iVar14 + 8)" (* "*") (cast_expression "(undefined4 **)(iVar14 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 8)" (( "(") (binary_expression "iVar14 + 8" (identifier "iVar14") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (uVar12 != 0) {\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar26 = puVar27;\n      do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);\n    }" ({ "{") (expression_statement "puVar26 = puVar27;" (assignment_expression "puVar26 = puVar27" (identifier "puVar26") (= "=") (identifier "puVar27")) (; ";")) (do_statement "do {\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      } while (puVar23 != puVar27 + uVar12);" (do "do") (compound_statement "{\n        puVar23 = puVar26 + 1;\n        *puVar26 = 0;\n        puVar26 = puVar23;\n      }" ({ "{") (expression_statement "puVar23 = puVar26 + 1;" (assignment_expression "puVar23 = puVar26 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar26 + 1" (identifier "puVar26") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar26 = 0;" (assignment_expression "*puVar26 = 0" (pointer_expression "*puVar26" (* "*") (identifier "puVar26")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar26 = puVar23;" (assignment_expression "puVar26 = puVar23" (identifier "puVar26") (= "=") (identifier "puVar23")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar23 != puVar27 + uVar12)" (( "(") (binary_expression "puVar23 != puVar27 + uVar12" (identifier "puVar23") (!= "!=") (binary_expression "puVar27 + uVar12" (identifier "puVar27") (+ "+") (identifier "uVar12"))) () ")")) (; ";")) (} "}"))) (expression_statement "pcVar29 = *(code **)(iVar7 + -0x7f10);" (assignment_expression "pcVar29 = *(code **)(iVar7 + -0x7f10)" (identifier "pcVar29") (= "=") (pointer_expression "*(code **)(iVar7 + -0x7f10)" (* "*") (cast_expression "(code **)(iVar7 + -0x7f10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + -0x7f10)" (( "(") (binary_expression "iVar7 + -0x7f10" (identifier "iVar7") (+ "+") (number_literal "-0x7f10")) () ")"))))) (; ";")) (expression_statement "*(uint *)(iVar14 + 4) = uVar12;" (assignment_expression "*(uint *)(iVar14 + 4) = uVar12" (pointer_expression "*(uint *)(iVar14 + 4)" (* "*") (cast_expression "(uint *)(iVar14 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 4)" (( "(") (binary_expression "iVar14 + 4" (identifier "iVar14") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "*puVar27 = 1;" (assignment_expression "*puVar27 = 1" (pointer_expression "*puVar27" (* "*") (identifier "puVar27")) (= "=") (number_literal "1")) (; ";")) (expression_statement "(*pcVar29)(iVar14 + 0xc);" (call_expression "(*pcVar29)(iVar14 + 0xc)" (parenthesized_expression "(*pcVar29)" (( "(") (pointer_expression "*pcVar29" (* "*") (identifier "pcVar29")) () ")")) (argument_list "(iVar14 + 0xc)" (( "(") (binary_expression "iVar14 + 0xc" (identifier "iVar14") (+ "+") (number_literal "0xc")) () ")"))) (; ";")) (expression_statement "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);" (call_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17)" (parenthesized_expression "(**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" (* "*") (cast_expression "(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar32 + -0x28) + -0x7ea4)" (( "(") (binary_expression "*(int *)(puVar32 + -0x28) + -0x7ea4" (pointer_expression "*(int *)(puVar32 + -0x28)" (* "*") (cast_expression "(int *)(puVar32 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + -0x28)" (( "(") (binary_expression "puVar32 + -0x28" (identifier "puVar32") (+ "+") (number_literal "-0x28")) () ")")))) (+ "+") (number_literal "-0x7ea4")) () ")"))))) () ")")) (argument_list "(iVar14 + 0xc,puVar19,puVar17)" (( "(") (binary_expression "iVar14 + 0xc" (identifier "iVar14") (+ "+") (number_literal "0xc")) (, ",") (identifier "puVar19") (, ",") (identifier "puVar17") () ")"))) (; ";")) (if_statement "if (*(int *)(iVar14 + 0x10) == 0) {\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar14 + 0x10) == 0)" (( "(") (binary_expression "*(int *)(iVar14 + 0x10) == 0" (pointer_expression "*(int *)(iVar14 + 0x10)" (* "*") (cast_expression "(int *)(iVar14 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x10)" (( "(") (binary_expression "iVar14 + 0x10" (identifier "iVar14") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(iVar14 + 0x10) = 1;\n      **(undefined4 **)(iVar14 + 0x14) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(iVar14 + 0x10) = 1;" (assignment_expression "*(undefined4 *)(iVar14 + 0x10) = 1" (pointer_expression "*(undefined4 *)(iVar14 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x10)" (( "(") (binary_expression "iVar14 + 0x10" (identifier "iVar14") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "**(undefined4 **)(iVar14 + 0x14) = 0;" (assignment_expression "**(undefined4 **)(iVar14 + 0x14) = 0" (pointer_expression "**(undefined4 **)(iVar14 + 0x14)" (* "*") (pointer_expression "*(undefined4 **)(iVar14 + 0x14)" (* "*") (cast_expression "(undefined4 **)(iVar14 + 0x14)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 0x14)" (( "(") (binary_expression "iVar14 + 0x14" (identifier "iVar14") (+ "+") (number_literal "0x14")) () ")"))))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*(uint **)(iVar14 + 0x1c) = puVar15;" (assignment_expression "*(uint **)(iVar14 + 0x1c) = puVar15" (pointer_expression "*(uint **)(iVar14 + 0x1c)" (* "*") (cast_expression "(uint **)(iVar14 + 0x1c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 0x1c)" (( "(") (binary_expression "iVar14 + 0x1c" (identifier "iVar14") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (identifier "puVar15")) (; ";")) (expression_statement "*(undefined4 **)(iVar14 + 0x20) = puVar17;" (assignment_expression "*(undefined4 **)(iVar14 + 0x20) = puVar17" (pointer_expression "*(undefined4 **)(iVar14 + 0x20)" (* "*") (cast_expression "(undefined4 **)(iVar14 + 0x20)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 0x20)" (( "(") (binary_expression "iVar14 + 0x20" (identifier "iVar14") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "puVar17")) (; ";")) (expression_statement "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);" (assignment_expression "*(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0)" (pointer_expression "*(uint *)(iVar14 + 0x18)" (* "*") (cast_expression "(uint *)(iVar14 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x18)" (( "(") (binary_expression "iVar14 + 0x18" (identifier "iVar14") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar15 != (uint *)0x0)" (( "(") (binary_expression "puVar15 != (uint *)0x0" (identifier "puVar15") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";")) (return_statement "return (uint)(puVar15 != (uint *)0x0);" (return "return") (call_expression "(uint)(puVar15 != (uint *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar15 != (uint *)0x0)" (( "(") (binary_expression "puVar15 != (uint *)0x0" (identifier "puVar15") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar34 = *(code **)(pcVar29 + 0x1b220);" (assignment_expression "pcVar34 = *(code **)(pcVar29 + 0x1b220)" (identifier "pcVar34") (= "=") (pointer_expression "*(code **)(pcVar29 + 0x1b220)" (* "*") (cast_expression "(code **)(pcVar29 + 0x1b220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar29 + 0x1b220)" (( "(") (binary_expression "pcVar29 + 0x1b220" (identifier "pcVar29") (+ "+") (number_literal "0x1b220")) () ")"))))) (; ";")) (expression_statement "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);" (assignment_expression "piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" (identifier "piVar11") (= "=") (cast_expression "(int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84)" (( "(") (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c84" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" (* "*") (cast_expression "(int *)(pcVar29 + 0x1ae6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar29 + 0x1ae6c)" (( "(") (binary_expression "pcVar29 + 0x1ae6c" (identifier "pcVar29") (+ "+") (number_literal "0x1ae6c")) () ")")))) (+ "+") (number_literal "0x5c84")) () ")")))) (; ";")) (expression_statement "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);" (call_expression "(*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" (parenthesized_expression "(*pcVar34)" (( "(") (pointer_expression "*pcVar34" (* "*") (identifier "pcVar34")) () ")")) (argument_list "(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78)" (( "(") (identifier "piVar11") (, ",") (number_literal "0x12e") (, ",") (binary_expression "*(int *)(pcVar29 + 0x1ae6c) + 0x5c78" (pointer_expression "*(int *)(pcVar29 + 0x1ae6c)" (* "*") (cast_expression "(int *)(pcVar29 + 0x1ae6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar29 + 0x1ae6c)" (( "(") (binary_expression "pcVar29 + 0x1ae6c" (identifier "pcVar29") (+ "+") (number_literal "0x1ae6c")) () ")")))) (+ "+") (number_literal "0x5c78")) () ")"))) (; ";")) (expression_statement "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);" (assignment_expression "uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" (identifier "uVar12") (= "=") (call_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" (* "*") (cast_expression "(code *)**(undefined4 **)(pcVar34 + 0x1ae80)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(pcVar34 + 0x1ae80)" (* "*") (pointer_expression "*(undefined4 **)(pcVar34 + 0x1ae80)" (* "*") (cast_expression "(undefined4 **)(pcVar34 + 0x1ae80)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar34 + 0x1ae80)" (( "(") (binary_expression "pcVar34 + 0x1ae80" (identifier "pcVar34") (+ "+") (number_literal "0x1ae80")) () ")"))))))) () ")")) (argument_list "(piVar11[2],*piVar11 << 2)" (( "(") (subscript_expression "piVar11[2]" (identifier "piVar11") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "*piVar11 << 2" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (} "}")))

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

type_1 function_1(type_2 var_18,type_3 *rstate)

{
  int *var_25;
  type_4 **ppmVar2;
  type_5 *p_Var3;
  type_6 *puVar4;
  int *piVar5;
  type_7 *var_34;
  type_7 uVar7;
  type_4 **var_13;
  type_1 uVar9;
  type_8 *var_3;
  int var_6;
  type_2 var_17;
  int *var_26;
  type_7 *var_32;
  type_4 var_11;
  type_9 var_4;
  type_3 *var_15;
  int var_1;
  int *var_16;
  int *var_8;
  type_4 *var_14;
  void *pvVar23;
  type_4 *var_12;
  type_9 var_22;
  int *var_28;
  type_8 *var_7;
  type_4 *var_10;
  int *var_24;
  type_3 *var_27;
  type_10 var_2;
  type_3 *p_Var32;
  type_6 *var_21;
  type_6 *var_23;
  int var_31;
  type_8 *var_9;
  type_8 *var_29;
  type_11 *var_30;
  type_11 *pcVar39;
  type_8 var_5 [24];
  type_12 *var_19;
  type_4 *var_20;
  type_7 *var_33;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  var_9 = var_5;
  var_1 = rstate->_mp_seed[0]._mp_size;
  pvVar23 = (rstate->_mp_algdata)._mp_lc;
  var_14 = (type_4 *)rstate[1]._mp_seed[0]._mp_alloc;
  var_3 = (type_8 *)(var_1 + (int)pvVar23);
  var_2 = rstate[1]._mp_alg;
  var_12 = (type_4 *)(var_2 + 0x1f >> 5);
  var_19 = (type_12 *)0x0;
  var_20 = *(type_4 **)PTR___stack_chk_guard_00097540;
  p_Var32 = (type_3 *)rstate->_mp_seed[0]._mp_d;
  var_4 = (int)(var_3 + 1) * 4;
  if ((int)var_12 < (int)(var_3 + 1)) {
    if (var_4 < 0x7f01) {
      var_6 = -(var_4 + 7 & 0xfffffff8);
      var_9 = var_5 + var_6;
      var_27 = (type_3 *)(&stack0xffffffb8 + var_6);
    }
    else {
      var_27 = (type_3 *)
                (*(type_11 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&var_19);
    }
  }
  else {
    var_7 = (type_8 *)((int)var_12 + 1);
    if ((type_9)((int)var_7 * 4) < 0x7f01) {
      var_6 = -((int)var_7 * 4 + 7U & 0xfffffff8);
      var_27 = (type_3 *)(&stack0xffffffb8 + var_6);
      var_9 = var_5 + var_6;
    }
    else {
      var_27 = (type_3 *)
                (*(type_11 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&var_19);
      var_9 = var_5;
    }
    if (var_3 != var_7) {
      var_6 = (int)var_7 - (int)var_3;
      var_8 = &var_27->_mp_seed[0]._mp_alloc + (int)var_3;
      do {
        var_6 = var_6 + -1;
        *var_8 = 0;
        var_8 = var_8 + 1;
      } while (var_6 != 0);
    }
  }
  *(void **)(var_9 + 0x10) = pvVar23;
  var_15 = p_Var32;
  (*(type_11 *)PTR___gmpn_mul_000972b4)(var_27,p_Var32,var_1);
  var_10 = (type_4 *)rstate[1]._mp_seed[0]._mp_size;
  if (((var_10 != (type_4 *)0x0) &&
      (var_15 = var_27, var_14 = var_10,
      var_1 = (*(type_11 *)PTR___gmpn_add_n_00097334)(var_27,var_27,&rstate[1]._mp_seed[0]._mp_d),
      var_1 != 0)) && ((int)var_10 < (int)var_12)) {
    var_8 = &var_27->_mp_seed[0]._mp_alloc + (int)var_10;
    var_11 = *var_8 + 1;
    *var_8 = var_11;
    while ((var_11 == 0 && (var_10 = (type_4 *)((int)var_10 + 1), var_12 != var_10))) {
      var_16 = var_8 + 1;
      var_8 = var_8 + 1;
      var_11 = *var_16 + 1;
      *var_8 = var_11;
    }
  }
  var_8 = &var_27->_mp_seed[0]._mp_alloc + (var_2 >> 5);
  *var_8 = *var_8 & ~(-1 << (var_2 & 0x1f));
  if (var_12 != (type_4 *)0x0) {
    var_10 = rstate->_mp_seed[0]._mp_d;
    var_11 = var_27->_mp_seed[0]._mp_alloc;
    if (var_12 != (type_4 *)&DAT_00000001) {
      var_15 = (type_3 *)(&var_27->_mp_seed[0]._mp_alloc + (int)var_12);
      var_14 = var_10;
      var_13 = (type_4 **)&var_27->_mp_seed[0]._mp_size;
      do {
        *var_14 = var_11;
        ppmVar2 = var_13 + 1;
        var_11 = (type_4)*var_13;
        var_14 = var_14 + 1;
        var_13 = ppmVar2;
      } while ((type_3 *)ppmVar2 != var_15);
      var_14 = (type_4 *)((int)var_12 * 4 + -4);
      var_10 = var_10 + (int)((int)var_12 + -1);
    }
    *var_10 = var_11;
  }
  var_4 = var_2 >> 6;
  var_16 = (int *)((int)var_12 - var_4);
  var_8 = var_16;
  if (0 < (int)var_16) {
    var_12 = (type_4 *)(var_4 * 4);
    var_14 = (type_4 *)((var_2 << 0x1a) >> 0x1b);
    var_15 = (type_3 *)(&var_27->_mp_seed[0]._mp_alloc + var_4);
    if (var_14 == (type_4 *)0x0) {
      var_11 = var_15->_mp_seed[0]._mp_alloc;
      if (var_16 != (int *)&DAT_00000001) {
        p_Var3 = var_15->_mp_seed;
        var_15 = (type_3 *)((int)var_15 + (int)var_16 * 4);
        var_13 = (type_4 **)&p_Var3->_mp_size;
        var_17 = var_18;
        do {
          *var_17 = var_11;
          ppmVar2 = var_13 + 1;
          var_11 = (type_4)*var_13;
          var_13 = ppmVar2;
          var_17 = var_17 + 1;
        } while ((type_3 *)ppmVar2 != var_15);
        var_8 = (int *)((int)var_16 * 4 + -4);
        var_18 = var_18 + (int)((int)var_16 + -1);
      }
      *var_18 = var_11;
    }
    else {
      (*(type_11 *)PTR___gmpn_rshift_00097560)(var_27);
      var_10 = (type_4 *)var_27->_mp_seed[0]._mp_alloc;
      if (var_4 != 0) {
        var_12 = var_18 + var_4;
        var_13 = (type_4 **)&var_27->_mp_seed[0]._mp_size;
        var_17 = var_18;
        do {
          var_18 = var_17 + 1;
          *var_17 = (type_4)var_10;
          var_27 = (type_3 *)(var_13 + 1);
          var_10 = *var_13;
          var_13 = (type_4 **)var_27;
          var_17 = var_18;
        } while (var_18 != var_12);
      }
      *var_18 = (type_4)var_10;
      var_8 = var_16;
    }
  }
  if (var_19 != (type_12 *)0x0) {
    (*(type_11 *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (var_20 == *(type_4 **)puVar4) {
    return var_2 + 1 >> 1;
  }
  var_30 = randget_lc;
  var_10 = var_20;
  var_21 = PTR___stack_chk_fail_000974d0;
  (*(type_11 *)PTR___stack_chk_fail_000974d0)();
  var_23 = var_21 + 0x23144;
  var_11 = var_10[2];
  var_29 = var_9 + -0x60;
  var_34 = *(type_7 **)(var_21 + 0x1b644);
  *(type_4 **)(var_9 + -0x28) = var_12;
  *(type_8 **)(var_9 + -8) = var_5;
  var_22 = *(type_9 *)(var_11 + 0x20);
  *(type_7 **)(var_9 + -0x48) = var_34;
  *(type_2 *)(var_9 + -0x10) = var_18;
  var_28 = (int *)(var_22 >> 1);
  uVar7 = *var_34;
  *(type_3 **)(var_9 + -0x14) = rstate;
  *(type_10 *)(var_9 + -0x18) = var_2;
  *(type_7 *)(var_9 + -0x2c) = uVar7;
  var_1 = (int)((int)var_28 + 0x1f) >> 5;
  *(type_9 *)(var_9 + -0x24) = var_4;
  *(type_11 **)(var_9 + -4) = var_30;
  var_4 = var_1 * 4;
  *(int *)(var_9 + -0x3c) = var_1;
  *(type_3 **)(var_9 + -0xc) = p_Var32;
  *(type_3 **)(var_9 + -0x1c) = var_27;
  *(type_6 **)(var_9 + -0x20) = puVar4;
  *(type_6 **)(var_9 + -0x50) = var_23;
  *(type_7 *)(var_9 + -0x30) = 0;
  *(type_9 *)(var_9 + -0x44) = var_4;
  var_16 = var_8;
  if (var_4 < 0x7f01) {
    var_1 = -(var_4 + 7 & 0xfffffff8);
    var_29 = var_9 + var_1 + -0x60;
    var_27 = (type_3 *)(var_9 + var_1 + -0x50);
    p_Var32 = var_15;
  }
  else {
    p_Var32 = *(type_3 **)(var_9 + -0x44);
    var_27 = (type_3 *)(**(type_11 **)(var_21 + 0x1b3f4))(var_9 + -0x30,p_Var32);
    var_23 = *(type_6 **)(var_9 + -0x50);
  }
  var_24 = *(int **)(var_23 + -0x7fd4);
  *(type_9 *)(var_9 + -0x40) = (type_9)var_28 & 0x1f;
  *(int **)(var_9 + -0x34) = var_24 + -0x111b;
  var_4 = 0;
  piVar5 = var_28;
  var_26 = (int *)0x0;
  while (var_25 = piVar5, var_25 <= var_8) {
    p_Var32 = (type_3 *)var_10[2];
    var_12 = (type_4 *)((type_9)var_26 & 0x1f);
    var_24 = &var_15->_mp_seed[0]._mp_alloc + var_4;
    if (var_12 == (type_4 *)0x0) {
      (**(type_11 **)(var_9 + -0x34))(var_24,p_Var32);
      var_23 = *(type_6 **)(var_9 + -0x50);
    }
    else {
      (**(type_11 **)(var_9 + -0x34))(var_27);
      var_16 = *(int **)(var_9 + -0x3c);
      var_30 = *(type_11 **)(*(int *)(var_9 + -0x50) + -0x7ad4);
      *(int *)(var_9 + -0x38) = *var_24;
      p_Var32 = var_27;
      var_14 = var_12;
      uVar7 = (*var_30)(var_24,var_27);
      var_1 = *(int *)(var_9 + -0x40);
      var_23 = *(type_6 **)(var_9 + -0x50);
      *var_24 = *var_24 | *(type_9 *)(var_9 + -0x38);
      if ((type_8 *)0x20 < (type_8 *)(var_1 + (int)var_12)) {
        *(type_7 *)((int)var_24 + *(int *)(var_9 + -0x44)) = uVar7;
      }
    }
    var_4 = (type_9)var_25 >> 5;
    var_26 = var_25;
    piVar5 = (int *)((int)var_28 + (int)var_25);
  }
  if (var_26 == var_8) {
    var_1 = *(int *)(var_9 + -0x30);
LAB_0007c054:
    var_30 = *(type_11 **)(var_23 + -0x7a2c);
    if (var_1 == 0) goto LAB_0007c05c;
  }
  else {
    var_3 = (type_8 *)((int)var_8 + (0x1f - (int)var_26));
    var_28 = &var_15->_mp_seed[0]._mp_alloc + ((type_9)var_26 >> 5);
    if ((int)var_3 < 0) {
      var_3 = (type_8 *)((int)var_8 + (0x3e - (int)var_26));
    }
    p_Var32 = (type_3 *)var_10[2];
    var_10 = (type_4 *)((type_9)var_26 & 0x1f);
    *(int **)(var_9 + -0x34) = var_26;
    var_24 = (int *)((int)var_3 >> 5);
    function_1((type_2)var_27,p_Var32);
    var_23 = *(type_6 **)(var_9 + -0x50);
    if (var_10 == (type_4 *)0x0) {
      if (var_24 != (int *)0x0) {
        p_Var32 = (type_3 *)var_27->_mp_seed[0]._mp_alloc;
        if (var_24 != (int *)&DAT_00000001) {
          p_Var3 = var_27->_mp_seed;
          var_27 = (type_3 *)(&var_27->_mp_seed[0]._mp_alloc + (int)var_24);
          var_13 = (type_4 **)&p_Var3->_mp_size;
          var_26 = var_28;
          do {
            *var_26 = (int)p_Var32;
            ppmVar2 = var_13 + 1;
            p_Var32 = (type_3 *)*var_13;
            var_13 = ppmVar2;
            var_26 = var_26 + 1;
          } while ((type_3 *)ppmVar2 != var_27);
          var_28 = var_28 + (int)((int)var_24 + -1);
        }
        *var_28 = (int)p_Var32;
      }
    }
    else {
      var_22 = *var_28;
      var_16 = var_24;
      var_14 = var_10;
      var_4 = (**(type_11 **)(var_23 + -0x7ad4))(var_28,var_27);
      p_Var32 = (type_3 *)((int)var_24 * 0x20);
      var_1 = *(int *)(var_9 + -0x34);
      var_23 = *(type_6 **)(var_9 + -0x50);
      *var_28 = *var_28 | var_22;
      if ((type_9 *)((var_1 - (int)var_10) + (int)p_Var32) < var_8) {
        var_28 = var_28 + (int)var_24;
        *var_28 = var_4;
      }
    }
    var_4 = (type_9)var_8 & 0x1f;
    var_1 = *(int *)(var_9 + -0x30);
    if (var_4 == 0) goto LAB_0007c054;
    var_8 = &var_15->_mp_seed[0]._mp_alloc + ((type_9)var_8 >> 5);
    *var_8 = *var_8 & ~(-1 << var_4);
    if (var_1 == 0) goto LAB_0007c05c;
    var_30 = *(type_11 **)(var_23 + -0x7a2c);
  }
  (*var_30)();
  var_23 = *(type_6 **)(var_9 + -0x50);
LAB_0007c05c:
  if (*(type_1 *)(var_9 + -0x2c) == **(type_1 **)(var_9 + -0x48)) {
    return **(type_1 **)(var_9 + -0x48);
  }
  var_30 = *(type_11 **)(var_23 + -0x7b70);
  pcVar39 = __gmp_randinit_lc_2exp;
  (*var_30)();
  *(type_11 **)(var_29 + -0x28) = var_30 + 0x22e40;
  *(type_11 **)(var_29 + -4) = pcVar39;
  *(type_3 **)(var_29 + -8) = var_15;
  *(type_4 **)(var_29 + -0xc) = var_10;
  *(type_3 **)(var_29 + -0x10) = var_27;
  *(int **)(var_29 + -0x14) = var_24;
  *(int **)(var_29 + -0x18) = var_8;
  *(int **)(var_29 + -0x1c) = var_28;
  if (var_14 != (type_4 *)0x0) {
    var_4 = (type_9)((int)var_14 + 0x1f) >> 5;
    var_6 = (*(type_11 *)**(type_7 **)(var_30 + 0x1b30c))(0x24);
    var_31 = *(int *)(var_29 + -0x28);
    *(int *)(var_1 + 8) = var_6;
    var_30 = *(type_11 **)(var_31 + -0x7ebc);
    *(int *)(var_1 + 0x10) = *(int *)(var_31 + -0x7fe4) + 0x6f90;
    (*var_30)(var_6,var_14);
    var_1 = *(int *)(var_29 + -0x28);
    var_34 = *(type_7 **)(var_6 + 8);
    if (var_4 != 0) {
      var_32 = var_34;
      do {
        var_33 = var_32 + 1;
        *var_32 = 0;
        var_32 = var_33;
      } while (var_33 != var_34 + var_4);
    }
    var_30 = *(type_11 **)(var_1 + -0x7f10);
    *(type_9 *)(var_6 + 4) = var_4;
    *var_34 = 1;
    (*var_30)(var_6 + 0xc);
    (**(type_11 **)(*(int *)(var_29 + -0x28) + -0x7ea4))(var_6 + 0xc,p_Var32,var_14);
    if (*(int *)(var_6 + 0x10) == 0) {
      *(type_7 *)(var_6 + 0x10) = 1;
      **(type_7 **)(var_6 + 0x14) = 0;
    }
    *(int **)(var_6 + 0x1c) = var_16;
    *(type_4 **)(var_6 + 0x20) = var_14;
    *(type_9 *)(var_6 + 0x18) = (type_9)(var_16 != (int *)0x0);
    return (type_9)(var_16 != (int *)0x0);
  }
  uVar9 = (**(type_11 **)(var_30 + 0x1b220))
                    (*(int *)(var_30 + 0x1ae6c) + 0x5c84,0x12e,*(int *)(var_30 + 0x1ae6c) + 0x5c78
                    );
  return uVar9;
}


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

uint MASKED(undefined4 *param_1,int param_2)

{
  int *piVar1;
  int iVar2;
  uint *puVar3;
  undefined *puVar4;
  uint *puVar5;
  undefined4 *puVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  int *piVar11;
  uint uVar12;
  undefined4 *puVar13;
  int iVar14;
  uint *puVar15;
  uint *puVar16;
  undefined4 *puVar17;
  int iVar18;
  undefined4 *puVar19;
  uint uVar20;
  uint *puVar21;
  int iVar22;
  undefined4 *puVar23;
  uint *puVar24;
  uint uVar25;
  undefined4 *puVar26;
  undefined4 *puVar27;
  undefined *puVar28;
  code *pcVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  undefined4 uVar33;
  code *pcVar34;
  undefined1 auStack_60 [24];
  int local_30;
  undefined4 *local_2c;
  
  puVar4 = PTR___stack_chk_guard_00097540;
  puVar31 = auStack_60;
  iVar14 = *(int *)(param_2 + 4);
  iVar18 = *(int *)(param_2 + 0x10);
  puVar17 = *(undefined4 **)(param_2 + 0x14);
  iVar7 = iVar14 + iVar18;
  uVar25 = *(uint *)(param_2 + 0x20);
  puVar19 = (undefined4 *)(uVar25 + 0x1f >> 5);
  local_30 = 0;
  local_2c = *(undefined4 **)PTR___stack_chk_guard_00097540;
  puVar27 = *(undefined4 **)(param_2 + 8);
  uVar12 = (iVar7 + 1) * 4;
  if ((int)puVar19 < iVar7 + 1) {
    if (uVar12 < 0x7f01) {
      iVar7 = -(uVar12 + 7 & 0xfffffff8);
      puVar31 = auStack_60 + iVar7;
      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar7);
    }
    else {
      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
    }
  }
  else {
    iVar22 = (int)puVar19 + 1;
    if ((uint)(iVar22 * 4) < 0x7f01) {
      iVar2 = -(iVar22 * 4 + 7U & 0xfffffff8);
      puVar26 = (undefined4 *)(&stack0xffffffb8 + iVar2);
      puVar31 = auStack_60 + iVar2;
    }
    else {
      puVar26 = (undefined4 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
      puVar31 = auStack_60;
    }
    if (iVar7 != iVar22) {
      iVar22 = iVar22 - iVar7;
      puVar23 = puVar26 + iVar7;
      do {
        iVar22 = iVar22 + -1;
        *puVar23 = 0;
        puVar23 = puVar23 + 1;
      } while (iVar22 != 0);
    }
  }
  *(int *)(puVar31 + 0x10) = iVar18;
  puVar13 = puVar27;
  (*(code *)PTR___gmpn_mul_000972b4)(puVar26,puVar27,iVar14);
  puVar23 = *(undefined4 **)(param_2 + 0x18);
  if (((puVar23 != (undefined4 *)0x0) &&
      (puVar13 = puVar26, puVar17 = puVar23,
      iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar26,puVar26,param_2 + 0x1c), iVar7 != 0)) &&
     ((int)puVar23 < (int)puVar19)) {
    piVar11 = puVar26 + (int)puVar23;
    iVar7 = *piVar11 + 1;
    *piVar11 = iVar7;
    while ((iVar7 == 0 && (puVar23 = (undefined4 *)((int)puVar23 + 1), puVar19 != puVar23))) {
      piVar1 = piVar11 + 1;
      piVar11 = piVar11 + 1;
      iVar7 = *piVar1 + 1;
      *piVar11 = iVar7;
    }
  }
  puVar26[uVar25 >> 5] = puVar26[uVar25 >> 5] & ~(-1 << (uVar25 & 0x1f));
  if (puVar19 != (undefined4 *)0x0) {
    puVar23 = *(undefined4 **)(param_2 + 8);
    uVar10 = *puVar26;
    if (puVar19 != (undefined4 *)0x1) {
      puVar13 = puVar26 + (int)puVar19;
      puVar17 = puVar23;
      puVar6 = puVar26 + 1;
      do {
        *puVar17 = uVar10;
        puVar8 = puVar6 + 1;
        uVar10 = *puVar6;
        puVar17 = puVar17 + 1;
        puVar6 = puVar8;
      } while (puVar8 != puVar13);
      puVar17 = (undefined4 *)((int)puVar19 * 4 - 4);
      puVar23 = puVar23 + (int)puVar19 + -1;
    }
    *puVar23 = uVar10;
  }
  uVar12 = uVar25 >> 6;
  puVar15 = (uint *)((int)puVar19 - uVar12);
  puVar16 = puVar15;
  if (0 < (int)puVar15) {
    puVar19 = (undefined4 *)(uVar12 * 4);
    puVar17 = (undefined4 *)((uVar25 << 0x1a) >> 0x1b);
    puVar13 = puVar26 + uVar12;
    if (puVar17 == (undefined4 *)0x0) {
      uVar10 = *puVar13;
      if (puVar15 != (uint *)0x1) {
        puVar23 = puVar13 + 1;
        puVar13 = puVar13 + (int)puVar15;
        puVar6 = param_1;
        do {
          *puVar6 = uVar10;
          puVar8 = puVar23 + 1;
          uVar10 = *puVar23;
          puVar23 = puVar8;
          puVar6 = puVar6 + 1;
        } while (puVar8 != puVar13);
        puVar16 = (uint *)((int)puVar15 * 4 + -4);
        param_1 = param_1 + (int)puVar15 + -1;
      }
      *param_1 = uVar10;
    }
    else {
      (*(code *)PTR___gmpn_rshift_00097560)(puVar26);
      uVar10 = *puVar26;
      if (uVar12 != 0) {
        puVar19 = param_1 + uVar12;
        puVar23 = puVar26 + 1;
        puVar6 = param_1;
        do {
          param_1 = puVar6 + 1;
          *puVar6 = uVar10;
          puVar26 = puVar23 + 1;
          uVar10 = *puVar23;
          puVar23 = puVar26;
          puVar6 = param_1;
        } while (param_1 != puVar19);
      }
      *param_1 = uVar10;
      puVar16 = puVar15;
    }
  }
  if (local_30 != 0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  if (local_2c == *(undefined4 **)puVar4) {
    return uVar25 + 1 >> 1;
  }
  uVar33 = 0x7befc;
  puVar23 = local_2c;
  puVar28 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar30 = puVar28 + 0x23144;
  iVar7 = puVar23[2];
  puVar32 = puVar31 + -0x60;
  puVar6 = *(undefined4 **)(puVar28 + 0x1b644);
  *(undefined4 **)(puVar31 + -0x28) = puVar19;
  *(undefined1 **)(puVar31 + -8) = auStack_60;
  uVar20 = *(uint *)(iVar7 + 0x20);
  *(undefined4 **)(puVar31 + -0x48) = puVar6;
  *(undefined4 **)(puVar31 + -0x10) = param_1;
  puVar21 = (uint *)(uVar20 >> 1);
  uVar10 = *puVar6;
  *(int *)(puVar31 + -0x14) = param_2;
  *(uint *)(puVar31 + -0x18) = uVar25;
  *(undefined4 *)(puVar31 + -0x2c) = uVar10;
  iVar7 = (int)puVar21 + 0x1f >> 5;
  *(uint *)(puVar31 + -0x24) = uVar12;
  *(undefined4 *)(puVar31 + -4) = uVar33;
  uVar12 = iVar7 * 4;
  *(int *)(puVar31 + -0x3c) = iVar7;
  *(undefined4 **)(puVar31 + -0xc) = puVar27;
  *(undefined4 **)(puVar31 + -0x1c) = puVar26;
  *(undefined **)(puVar31 + -0x20) = puVar4;
  *(undefined **)(puVar31 + -0x50) = puVar30;
  *(undefined4 *)(puVar31 + -0x30) = 0;
  *(uint *)(puVar31 + -0x44) = uVar12;
  puVar15 = puVar16;
  if (uVar12 < 0x7f01) {
    iVar7 = -(uVar12 + 7 & 0xfffffff8);
    puVar32 = puVar31 + iVar7 + -0x60;
    puVar27 = (undefined4 *)(puVar31 + iVar7 + -0x50);
    puVar19 = puVar13;
  }
  else {
    puVar19 = *(undefined4 **)(puVar31 + -0x44);
    puVar27 = (undefined4 *)(**(code **)(puVar28 + 0x1b3f4))(puVar31 + -0x30,puVar19);
    puVar30 = *(undefined **)(puVar31 + -0x50);
  }
  puVar24 = *(uint **)(puVar30 + -0x7fd4);
  *(uint *)(puVar31 + -0x40) = (uint)puVar21 & 0x1f;
  *(uint **)(puVar31 + -0x34) = puVar24 + -0x111b;
  uVar12 = 0;
  puVar5 = puVar21;
  puVar9 = (uint *)0x0;
  while (puVar3 = puVar5, puVar3 <= puVar16) {
    puVar19 = (undefined4 *)puVar23[2];
    puVar26 = (undefined4 *)((uint)puVar9 & 0x1f);
    puVar24 = puVar13 + uVar12;
    if (puVar26 == (undefined4 *)0x0) {
      (**(code **)(puVar31 + -0x34))(puVar24,puVar19);
      puVar30 = *(undefined **)(puVar31 + -0x50);
    }
    else {
      (**(code **)(puVar31 + -0x34))(puVar27);
      puVar15 = *(uint **)(puVar31 + -0x3c);
      pcVar29 = *(code **)(*(int *)(puVar31 + -0x50) + -0x7ad4);
      *(uint *)(puVar31 + -0x38) = *puVar24;
      puVar19 = puVar27;
      puVar17 = puVar26;
      uVar10 = (*pcVar29)(puVar24,puVar27);
      iVar7 = *(int *)(puVar31 + -0x40);
      puVar30 = *(undefined **)(puVar31 + -0x50);
      *puVar24 = *puVar24 | *(uint *)(puVar31 + -0x38);
      if (0x20 < (uint)(iVar7 + (int)puVar26)) {
        *(undefined4 *)((int)puVar24 + *(int *)(puVar31 + -0x44)) = uVar10;
      }
    }
    uVar12 = (uint)puVar3 >> 5;
    puVar9 = puVar3;
    puVar5 = (uint *)((int)puVar21 + (int)puVar3);
  }
  if (puVar9 == puVar16) {
    iVar7 = *(int *)(puVar31 + -0x30);
LAB_0007c054:
    pcVar29 = *(code **)(puVar30 + -0x7a2c);
    if (iVar7 == 0) goto LAB_0007c05c;
  }
  else {
    iVar7 = (int)puVar16 + (0x1f - (int)puVar9);
    puVar21 = puVar13 + ((uint)puVar9 >> 5);
    if (iVar7 < 0) {
      iVar7 = (int)puVar16 + (0x3e - (int)puVar9);
    }
    puVar19 = (undefined4 *)puVar23[2];
    puVar23 = (undefined4 *)((uint)puVar9 & 0x1f);
    *(uint **)(puVar31 + -0x34) = puVar9;
    puVar24 = (uint *)(iVar7 >> 5);
    MASKED(puVar27,puVar19);
    puVar30 = *(undefined **)(puVar31 + -0x50);
    if (puVar23 == (undefined4 *)0x0) {
      if (puVar24 != (uint *)0x0) {
        puVar19 = (undefined4 *)*puVar27;
        if (puVar24 != (uint *)0x1) {
          puVar26 = puVar27 + 1;
          puVar27 = puVar27 + (int)puVar24;
          puVar9 = puVar21;
          do {
            *puVar9 = (uint)puVar19;
            puVar6 = puVar26 + 1;
            puVar19 = (undefined4 *)*puVar26;
            puVar26 = puVar6;
            puVar9 = puVar9 + 1;
          } while (puVar6 != puVar27);
          puVar21 = puVar21 + (int)puVar24 + -1;
        }
        *puVar21 = (uint)puVar19;
      }
    }
    else {
      uVar25 = *puVar21;
      puVar15 = puVar24;
      puVar17 = puVar23;
      uVar12 = (**(code **)(puVar30 + -0x7ad4))(puVar21,puVar27);
      puVar19 = (undefined4 *)((int)puVar24 * 0x20);
      iVar7 = *(int *)(puVar31 + -0x34);
      puVar30 = *(undefined **)(puVar31 + -0x50);
      *puVar21 = *puVar21 | uVar25;
      if ((uint *)((iVar7 - (int)puVar23) + (int)puVar19) < puVar16) {
        puVar21 = puVar21 + (int)puVar24;
        *puVar21 = uVar12;
      }
    }
    uVar12 = (uint)puVar16 & 0x1f;
    iVar7 = *(int *)(puVar31 + -0x30);
    if (uVar12 == 0) goto LAB_0007c054;
    puVar16 = puVar13 + ((uint)puVar16 >> 5);
    *puVar16 = *puVar16 & ~(-1 << uVar12);
    if (iVar7 == 0) goto LAB_0007c05c;
    pcVar29 = *(code **)(puVar30 + -0x7a2c);
  }
  (*pcVar29)();
  puVar30 = *(undefined **)(puVar31 + -0x50);
LAB_0007c05c:
  if (*(uint *)(puVar31 + -0x2c) == **(uint **)(puVar31 + -0x48)) {
    return **(uint **)(puVar31 + -0x48);
  }
  pcVar29 = *(code **)(puVar30 + -0x7b70);
  pcVar34 = __gmp_randinit_lc_2exp;
  (*pcVar29)();
  *(code **)(puVar32 + -0x28) = pcVar29 + 0x22e40;
  *(code **)(puVar32 + -4) = pcVar34;
  *(undefined4 **)(puVar32 + -8) = puVar13;
  *(undefined4 **)(puVar32 + -0xc) = puVar23;
  *(undefined4 **)(puVar32 + -0x10) = puVar27;
  *(uint **)(puVar32 + -0x14) = puVar24;
  *(uint **)(puVar32 + -0x18) = puVar16;
  *(uint **)(puVar32 + -0x1c) = puVar21;
  if (puVar17 != (undefined4 *)0x0) {
    uVar12 = (int)puVar17 + 0x1fU >> 5;
    iVar14 = (*(code *)**(undefined4 **)(pcVar29 + 0x1b30c))(0x24);
    iVar18 = *(int *)(puVar32 + -0x28);
    *(int *)(iVar7 + 8) = iVar14;
    pcVar29 = *(code **)(iVar18 + -0x7ebc);
    *(int *)(iVar7 + 0x10) = *(int *)(iVar18 + -0x7fe4) + 0x6f90;
    (*pcVar29)(iVar14,puVar17);
    iVar7 = *(int *)(puVar32 + -0x28);
    puVar27 = *(undefined4 **)(iVar14 + 8);
    if (uVar12 != 0) {
      puVar26 = puVar27;
      do {
        puVar23 = puVar26 + 1;
        *puVar26 = 0;
        puVar26 = puVar23;
      } while (puVar23 != puVar27 + uVar12);
    }
    pcVar29 = *(code **)(iVar7 + -0x7f10);
    *(uint *)(iVar14 + 4) = uVar12;
    *puVar27 = 1;
    (*pcVar29)(iVar14 + 0xc);
    (**(code **)(*(int *)(puVar32 + -0x28) + -0x7ea4))(iVar14 + 0xc,puVar19,puVar17);
    if (*(int *)(iVar14 + 0x10) == 0) {
      *(undefined4 *)(iVar14 + 0x10) = 1;
      **(undefined4 **)(iVar14 + 0x14) = 0;
    }
    *(uint **)(iVar14 + 0x1c) = puVar15;
    *(undefined4 **)(iVar14 + 0x20) = puVar17;
    *(uint *)(iVar14 + 0x18) = (uint)(puVar15 != (uint *)0x0);
    return (uint)(puVar15 != (uint *)0x0);
  }
  pcVar34 = *(code **)(pcVar29 + 0x1b220);
  piVar11 = (int *)(*(int *)(pcVar29 + 0x1ae6c) + 0x5c84);
  (*pcVar34)(piVar11,0x12e,*(int *)(pcVar29 + 0x1ae6c) + 0x5c78);
                    /* WARNING: Could not recover jumptable at 0x0007c36c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  uVar12 = (*(code *)**(undefined4 **)(pcVar34 + 0x1ae80))(piVar11[2],*piVar11 << 2);
  return uVar12;
}

