
void __gmpf_reldiff(__mpf_struct *rdiff,mpf_srcptr x,mpf_srcptr y)

{
  undefined *puVar1;
  int iVar2;
  mp_limb_t mVar3;
  __mpf_struct *p_Var4;
  undefined1 *puVar5;
  undefined1 *puVar6;
  int iVar7;
  mpf_srcptr p_Var8;
  mp_limb_t *pmVar9;
  __mpf_struct *p_Var10;
  uint uVar11;
  undefined1 *puVar12;
  __mpf_struct *p_Var13;
  uint uVar14;
  __mpf_struct *p_Var15;
  undefined4 uVar16;
  mpf_srcptr p_Var17;
  mp_limb_t *pmVar18;
  mpf_srcptr p_Var19;
  int *piVar20;
  uint uVar21;
  __mpf_struct *unaff_s2;
  __mpf_struct *unaff_s3;
  int *piVar22;
  undefined4 unaff_s4;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 *puVar23;
  undefined4 unaff_s7;
  undefined *puVar24;
  code *pcVar25;
  undefined *puVar26;
  code *pcVar27;
  undefined1 *puVar28;
  undefined1 *puVar29;
  undefined1 *puVar30;
  undefined4 uVar31;
  undefined1 auStack_50 [16];
  tmp_reentrant_t *__tmp_marker;
  mpf_t d;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  puVar5 = auStack_50;
  puVar28 = auStack_50;
  iVar2 = x->_mp_size;
  iVar7 = *(int *)PTR___stack_chk_guard_00097540;
  if (iVar2 == 0) {
    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);
    (*(code *)PTR___gmpf_set_ui_00097428)();
    p_Var10 = rdiff;
  }
  else {
    __tmp_marker = (tmp_reentrant_t *)0x0;
    if (iVar2 < 0) {
      iVar2 = -iVar2;
    }
    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;
    uVar14 = (d[0]._mp_prec + 1) * 4;
    if (uVar14 < 0x7f01) {
      iVar2 = -(uVar14 + 7 & 0xfffffff8);
      puVar28 = auStack_50 + iVar2;
      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);
    }
    else {
      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);
    }
    unaff_s3 = d;
    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);
    if (d[0]._mp_size < 0) {
      d[0]._mp_size = -d[0]._mp_size;
    }
    p_Var15 = unaff_s3;
    y = x;
    (*(code *)PTR___gmpf_div_00097230)(rdiff);
    p_Var10 = (__mpf_struct *)__tmp_marker;
    unaff_s2 = rdiff;
    puVar5 = puVar28;
    if (__tmp_marker != (tmp_reentrant_t *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (iVar7 == *(int *)puVar1) {
    return;
  }
  uVar31 = 0x1a418;
  puVar24 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar26 = puVar24 + 0x84c20;
  puVar30 = puVar5 + -0x40;
  puVar12 = puVar5 + -0x40;
  puVar29 = puVar5 + -0x40;
  *(mpf_srcptr *)(puVar5 + -0x14) = x;
  *(undefined **)(puVar5 + -0x18) = puVar1;
  piVar20 = *(int **)(puVar24 + 0x7d120);
  p_Var19 = (mpf_srcptr)p_Var15->_mp_size;
  *(undefined1 **)(puVar5 + -8) = auStack_50;
  *(__mpf_struct **)(puVar5 + -0x10) = unaff_s2;
  *(undefined4 *)(puVar5 + -4) = uVar31;
  *(__mpf_struct **)(puVar5 + -0xc) = unaff_s3;
  *(undefined **)(puVar5 + -0x30) = puVar26;
  *(int *)(puVar5 + -0x1c) = *piVar20;
  if ((int)p_Var19 < 1) {
    pcVar25 = *(code **)(puVar24 + 0x7cdac);
    p_Var13 = p_Var10;
    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;
    p_Var10->_mp_size = 0;
    p_Var10->_mp_exp = 0;
  }
  else {
    uVar14 = p_Var15->_mp_exp;
    iVar2 = p_Var10->_mp_prec;
    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;
    uVar11 = uVar14 & 1;
    *(undefined4 *)(puVar5 + -0x20) = 0;
    p_Var10->_mp_size = iVar2;
    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);
    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;
    if ((uint)((int)p_Var17 * 4) < 0x7f01) {
      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);
      puVar29 = puVar5 + iVar2 + -0x40;
      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);
    }
    else {
      pcVar25 = *(code **)(puVar24 + 0x7ced0);
      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;
      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);
      puVar26 = *(undefined **)(puVar5 + -0x30);
      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);
    }
    if ((int)p_Var17 < (int)p_Var19) {
      pcVar25 = *(code **)(puVar26 + -0x7f60);
      if (p_Var17 != (mpf_srcptr)0x0) {
        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);
        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);
        mVar3 = *pmVar9;
        p_Var8 = y;
        if (puVar12 == (undefined1 *)0x0) {
          y->_mp_prec = mVar3;
        }
        else {
          do {
            pmVar9 = pmVar9 + 1;
            p_Var8->_mp_prec = mVar3;
            puVar12 = puVar12 + -1;
            mVar3 = *pmVar9;
            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;
          } while (puVar12 != (undefined1 *)0x0);
          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;
        }
        goto LAB_0001a530;
      }
    }
    else {
      p_Var8 = y;
      iVar2 = (int)p_Var17 - (int)p_Var19;
      if (p_Var19 != p_Var17) {
        do {
          iVar2 = iVar2 + -1;
          p_Var8->_mp_prec = 0;
          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;
        } while (iVar2 != 0);
      }
      mVar3 = unaff_s3->_mp_prec;
      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);
      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);
      pmVar9 = pmVar18;
      p_Var17 = p_Var19;
      p_Var15 = unaff_s3;
      if (puVar12 != (undefined1 *)0x0) {
        do {
          *pmVar9 = mVar3;
          puVar12 = puVar12 + -1;
          mVar3 = p_Var15->_mp_size;
          pmVar9 = pmVar9 + 1;
          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;
        } while (puVar12 != (undefined1 *)0x0);
        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);
        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);
      }
      *pmVar18 = mVar3;
      p_Var19 = p_Var17;
LAB_0001a530:
      pcVar25 = *(code **)(puVar26 + -0x7f60);
    }
    p_Var15 = (__mpf_struct *)0x0;
    (*pcVar25)(p_Var10->_mp_d);
    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);
    puVar26 = *(undefined **)(puVar5 + -0x30);
    puVar12 = puVar29;
    if (p_Var13 != (__mpf_struct *)0x0) {
      (**(code **)(puVar26 + -0x7a2c))();
      puVar26 = *(undefined **)(puVar5 + -0x30);
    }
  }
  if (*(int *)(puVar5 + -0x1c) == *piVar20) {
    return;
  }
  pcVar25 = *(code **)(puVar26 + -0x7b70);
  (*pcVar25)();
  puVar30 = puVar12;
LAB_0001a630:
  uVar31 = 0x1a638;
  (*pcVar25)();
  pcVar27 = pcVar25 + 0x84a00;
  *(__mpf_struct **)(puVar30 + -0xc) = unaff_s3;
  piVar22 = *(int **)(pcVar25 + 0x7cf00);
  *(code **)(puVar30 + -0x28) = pcVar27;
  *(int **)(puVar30 + -0x14) = piVar20;
  *(undefined4 *)(puVar30 + -4) = uVar31;
  *(undefined4 *)(puVar30 + -8) = unaff_s4;
  *(__mpf_struct **)(puVar30 + -0x10) = p_Var10;
  *(mpf_srcptr *)(puVar30 + -0x18) = p_Var19;
  *(int *)(puVar30 + -0x1c) = *piVar22;
  p_Var17 = y;
  if (p_Var15 == (__mpf_struct *)0x0) {
    p_Var13->_mp_exp = 0;
    p_Var13->_mp_size = 0;
    puVar12 = (undefined1 *)0x0;
    p_Var4 = p_Var13;
  }
  else {
    p_Var10 = p_Var15;
    if ((int)p_Var15 < 0) {
      p_Var10 = (__mpf_struct *)-(int)p_Var15;
    }
    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);
    if ((int)p_Var4 <= (int)p_Var10) {
      p_Var10 = p_Var4;
    }
    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);
    iVar2 = *(int *)(puVar30 + -0x28);
    pcVar25 = *(code **)(iVar2 + -0x7a40);
    if (**(char **)(iVar2 + -0x7eb8) == '\0') {
      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);
      **(char **)(iVar2 + -0x7eb8) = '\x01';
      (*pcVar25)(uVar31);
      iVar2 = *(int *)(puVar30 + -0x28);
    }
    puVar12 = puVar30 + -0x20;
    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))
              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);
    pcVar27 = *(code **)(puVar30 + -0x28);
    if ((int)y < 0) {
      p_Var17 = (mpf_srcptr)-(int)y;
      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);
      uVar14 = (int)y * -2 + 1;
      if (uVar14 == 0) {
        trap(7);
      }
      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;
      if ((int)p_Var15 < 0) {
        p_Var10 = (__mpf_struct *)-(int)p_Var10;
      }
    }
    else {
      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);
      uVar14 = (int)y * 2 + 1;
      if (uVar14 == 0) {
        trap(7);
      }
      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;
      if ((int)p_Var15 < 0) {
        p_Var10 = (__mpf_struct *)-(int)p_Var10;
      }
    }
    p_Var13->_mp_size = (int)p_Var10;
    p_Var19 = y;
  }
  if (*(int *)(puVar30 + -0x1c) == *piVar22) {
    return;
  }
  pcVar25 = *(code **)(pcVar27 + -0x7b70);
  uVar31 = 0x1a7b4;
  (*pcVar25)();
  *(code **)(puVar30 + -0x70) = pcVar25 + 0x84880;
  *(undefined4 *)(puVar30 + -0x3c) = uVar31;
  *(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40;
  *(undefined4 *)(puVar30 + -0x44) = unaff_s7;
  *(undefined4 *)(puVar30 + -0x48) = unaff_s6;
  *(undefined4 *)(puVar30 + -0x4c) = unaff_s5;
  *(__mpf_struct **)(puVar30 + -0x50) = p_Var15;
  *(int **)(puVar30 + -0x54) = piVar22;
  *(__mpf_struct **)(puVar30 + -0x58) = p_Var10;
  *(__mpf_struct **)(puVar30 + -0x5c) = p_Var13;
  *(mpf_srcptr *)(puVar30 + -0x60) = p_Var19;
  *(__mpf_struct **)(puVar30 + -0x38) = p_Var4;
  *(mpf_srcptr *)(puVar30 + -0x30) = p_Var17;
  if (puVar12 == (undefined1 *)0x0) {
    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);
  }
  puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100);
  piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))();
  iVar2 = *(int *)(puVar30 + -0x70);
  do {
    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);
    iVar2 = *(int *)(puVar30 + -0x70);
  } while ((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0);
  puVar23 = *(undefined4 **)(iVar2 + -0x7aa0);
  pcVar25 = *(code **)(iVar2 + -0x7f3c);
  uVar11 = 100;
  uVar14 = 0;
  puVar6 = puVar5;
  while ((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))) {
    *puVar5 = (char)iVar7;
    iVar7 = (*pcVar25)(puVar12);
    iVar2 = *(int *)(puVar30 + -0x70);
    uVar14 = uVar11 * 3 >> 1;
    if (uVar11 <= uVar21) {
      pcVar25 = (code *)*puVar23;
      *(int *)(puVar30 + -100) = iVar7;
      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);
      iVar2 = *(int *)(puVar30 + -0x70);
      iVar7 = *(int *)(puVar30 + -100);
      uVar11 = uVar14;
    }
    pcVar25 = *(code **)(iVar2 + -0x7f3c);
    puVar5 = puVar6 + uVar21;
    uVar14 = uVar21;
  }
  (**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12);
  iVar2 = *(int *)(puVar30 + -0x70);
  uVar21 = uVar11;
  if (uVar11 <= uVar14) {
    uVar21 = uVar11 * 3 >> 1;
    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);
    iVar2 = *(int *)(puVar30 + -0x70);
  }
  pcVar25 = *(code **)(iVar2 + -0x7ae8);
  uVar31 = *(undefined4 *)(puVar30 + -0x38);
  uVar16 = *(undefined4 *)(puVar30 + -0x30);
  puVar6[uVar14] = 0;
  iVar2 = (*pcVar25)(uVar31,puVar6,uVar16);
  (*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21);
  if (iVar2 != -1) {
    return;
  }
  return;
}



int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)

{
  undefined *puVar1;
  int iVar2;
  undefined1 *puVar3;
  int *piVar4;
  int iVar5;
  undefined1 *puVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  uint uVar11;
  undefined1 *puVar12;
  undefined4 uVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  int *piVar17;
  uint uVar18;
  int *unaff_s2;
  int *unaff_s3;
  int iVar19;
  undefined4 unaff_s4;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 *puVar20;
  undefined4 unaff_s7;
  undefined *puVar21;
  code *pcVar22;
  undefined *puVar23;
  code *pcVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined4 uVar28;
  undefined1 auStack_50 [16];
  int *local_30;
  int local_2c;
  int local_28;
  undefined1 *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  puVar3 = auStack_50;
  puVar25 = auStack_50;
  iVar2 = param_2[1];
  local_1c = *(int *)PTR___stack_chk_guard_00097540;
  if (iVar2 == 0) {
    piVar14 = (int *)(uint)(param_3[1] != 0);
    (*(code *)PTR___gmpf_set_ui_00097428)();
    piVar4 = param_1;
  }
  else {
    local_30 = (int *)0x0;
    if (iVar2 < 0) {
      iVar2 = -iVar2;
    }
    local_2c = iVar2 + *param_1;
    uVar11 = (local_2c + 1) * 4;
    if (uVar11 < 0x7f01) {
      iVar2 = -(uVar11 + 7 & 0xfffffff8);
      puVar25 = auStack_50 + iVar2;
      local_20 = &stack0xffffffc0 + iVar2;
    }
    else {
      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
    }
    unaff_s3 = &local_2c;
    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);
    if (local_28 < 0) {
      local_28 = -local_28;
    }
    piVar14 = unaff_s3;
    param_3 = param_2;
    (*(code *)PTR___gmpf_div_00097230)(param_1);
    piVar4 = local_30;
    unaff_s2 = param_1;
    puVar3 = puVar25;
    if (local_30 != (int *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  iVar2 = *(int *)puVar1;
  if (local_1c == iVar2) {
    return iVar2;
  }
  uVar28 = 0x1a418;
  puVar21 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar23 = puVar21 + 0x84c20;
  puVar27 = puVar3 + -0x40;
  puVar12 = puVar3 + -0x40;
  puVar26 = puVar3 + -0x40;
  *(int **)(puVar3 + -0x14) = param_2;
  *(undefined **)(puVar3 + -0x18) = puVar1;
  piVar17 = *(int **)(puVar21 + 0x7d120);
  piVar15 = (int *)piVar14[1];
  *(undefined1 **)(puVar3 + -8) = auStack_50;
  *(int **)(puVar3 + -0x10) = unaff_s2;
  *(undefined4 *)(puVar3 + -4) = uVar28;
  *(int **)(puVar3 + -0xc) = unaff_s3;
  *(undefined **)(puVar3 + -0x30) = puVar23;
  *(int *)(puVar3 + -0x1c) = *piVar17;
  if ((int)piVar15 < 1) {
    pcVar22 = *(code **)(puVar21 + 0x7cdac);
    piVar9 = piVar4;
    if (piVar15 != (int *)0x0) goto LAB_0001a630;
    piVar4[1] = 0;
    piVar4[2] = 0;
  }
  else {
    uVar11 = piVar14[2];
    iVar2 = *piVar4;
    unaff_s3 = (int *)piVar14[3];
    uVar7 = uVar11 & 1;
    *(undefined4 *)(puVar3 + -0x20) = 0;
    piVar4[1] = iVar2;
    piVar14 = (int *)(iVar2 * 2 - uVar7);
    piVar4[2] = (int)(uVar11 + uVar7) / 2;
    if ((uint)((int)piVar14 * 4) < 0x7f01) {
      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);
      puVar26 = puVar3 + iVar2 + -0x40;
      param_3 = (int *)(puVar3 + iVar2 + -0x30);
    }
    else {
      pcVar22 = *(code **)(puVar21 + 0x7ced0);
      *(int **)(puVar3 + -0x24) = piVar14;
      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);
      puVar23 = *(undefined **)(puVar3 + -0x30);
      piVar14 = *(int **)(puVar3 + -0x24);
    }
    if ((int)piVar14 < (int)piVar15) {
      pcVar22 = *(code **)(puVar23 + -0x7f60);
      if (piVar14 != (int *)0x0) {
        iVar8 = (int)piVar14 + -1;
        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);
        iVar2 = *piVar16;
        piVar9 = param_3;
        if (iVar8 == 0) {
          *param_3 = iVar2;
        }
        else {
          do {
            piVar16 = piVar16 + 1;
            *piVar9 = iVar2;
            iVar8 = iVar8 + -1;
            iVar2 = *piVar16;
            piVar9 = piVar9 + 1;
          } while (iVar8 != 0);
          param_3[(int)piVar14 + -1] = iVar2;
        }
        goto LAB_0001a530;
      }
    }
    else {
      piVar9 = param_3;
      iVar2 = (int)piVar14 - (int)piVar15;
      if (piVar15 != piVar14) {
        do {
          iVar2 = iVar2 + -1;
          *piVar9 = 0;
          piVar9 = piVar9 + 1;
        } while (iVar2 != 0);
      }
      iVar2 = *unaff_s3;
      iVar8 = (int)piVar15 + -1;
      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);
      piVar9 = piVar10;
      piVar16 = piVar15;
      piVar14 = unaff_s3;
      if (iVar8 != 0) {
        do {
          *piVar9 = iVar2;
          iVar8 = iVar8 + -1;
          iVar2 = piVar14[1];
          piVar9 = piVar9 + 1;
          piVar14 = piVar14 + 1;
        } while (iVar8 != 0);
        piVar16 = (int *)((int)piVar15 * 4 + -4);
        piVar10 = piVar10 + (int)piVar15 + -1;
      }
      *piVar10 = iVar2;
      piVar15 = piVar16;
LAB_0001a530:
      pcVar22 = *(code **)(puVar23 + -0x7f60);
    }
    piVar14 = (int *)0x0;
    (*pcVar22)(piVar4[3]);
    piVar9 = *(int **)(puVar3 + -0x20);
    puVar23 = *(undefined **)(puVar3 + -0x30);
    puVar12 = puVar26;
    if (piVar9 != (int *)0x0) {
      (**(code **)(puVar23 + -0x7a2c))();
      puVar23 = *(undefined **)(puVar3 + -0x30);
    }
  }
  if (*(int *)(puVar3 + -0x1c) == *piVar17) {
    return *piVar17;
  }
  pcVar22 = *(code **)(puVar23 + -0x7b70);
  (*pcVar22)();
  puVar27 = puVar12;
LAB_0001a630:
  uVar28 = 0x1a638;
  (*pcVar22)();
  pcVar24 = pcVar22 + 0x84a00;
  *(int **)(puVar27 + -0xc) = unaff_s3;
  piVar16 = *(int **)(pcVar22 + 0x7cf00);
  *(code **)(puVar27 + -0x28) = pcVar24;
  *(int **)(puVar27 + -0x14) = piVar17;
  *(undefined4 *)(puVar27 + -4) = uVar28;
  *(undefined4 *)(puVar27 + -8) = unaff_s4;
  *(int **)(puVar27 + -0x10) = piVar4;
  *(int **)(puVar27 + -0x18) = piVar15;
  *(int *)(puVar27 + -0x1c) = *piVar16;
  piVar17 = param_3;
  if (piVar14 == (int *)0x0) {
    piVar9[2] = 0;
    piVar9[1] = 0;
    puVar12 = (undefined1 *)0x0;
    piVar10 = piVar9;
  }
  else {
    piVar4 = piVar14;
    if ((int)piVar14 < 0) {
      piVar4 = (int *)-(int)piVar14;
    }
    if (*piVar9 + 1 <= (int)piVar4) {
      piVar4 = (int *)(*piVar9 + 1);
    }
    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);
    iVar2 = *(int *)(puVar27 + -0x28);
    pcVar22 = *(code **)(iVar2 + -0x7a40);
    if (**(char **)(iVar2 + -0x7eb8) == '\0') {
      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);
      **(char **)(iVar2 + -0x7eb8) = '\x01';
      (*pcVar22)(uVar28);
      iVar2 = *(int *)(puVar27 + -0x28);
    }
    puVar12 = puVar27 + -0x20;
    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))
              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);
    pcVar24 = *(code **)(puVar27 + -0x28);
    if ((int)param_3 < 0) {
      piVar17 = (int *)-(int)param_3;
      piVar10 = *(int **)(puVar27 + -0x20);
      uVar11 = (int)param_3 * -2 + 1;
      if (uVar11 == 0) {
        trap(7);
      }
      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;
      if ((int)piVar14 < 0) {
        piVar4 = (int *)-(int)piVar4;
      }
    }
    else {
      piVar10 = *(int **)(puVar27 + -0x20);
      uVar11 = (int)param_3 * 2 + 1;
      if (uVar11 == 0) {
        trap(7);
      }
      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;
      if ((int)piVar14 < 0) {
        piVar4 = (int *)-(int)piVar4;
      }
    }
    piVar9[1] = (int)piVar4;
    piVar15 = param_3;
  }
  if (*(int *)(puVar27 + -0x1c) == *piVar16) {
    return *piVar16;
  }
  pcVar22 = *(code **)(pcVar24 + -0x7b70);
  uVar28 = 0x1a7b4;
  (*pcVar22)();
  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;
  *(undefined4 *)(puVar27 + -0x3c) = uVar28;
  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;
  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;
  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;
  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;
  *(int **)(puVar27 + -0x50) = piVar14;
  *(int **)(puVar27 + -0x54) = piVar16;
  *(int **)(puVar27 + -0x58) = piVar4;
  *(int **)(puVar27 + -0x5c) = piVar9;
  *(int **)(puVar27 + -0x60) = piVar15;
  *(int **)(puVar27 + -0x38) = piVar10;
  *(int **)(puVar27 + -0x30) = piVar17;
  if (puVar12 == (undefined1 *)0x0) {
    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);
  }
  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);
  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();
  iVar2 = *(int *)(puVar27 + -0x70);
  iVar8 = 0;
  do {
    iVar19 = iVar8;
    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);
    iVar2 = *(int *)(puVar27 + -0x70);
    iVar8 = iVar19 + 1;
  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);
  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);
  pcVar22 = *(code **)(iVar2 + -0x7f3c);
  uVar7 = 100;
  uVar11 = 0;
  puVar6 = puVar3;
  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {
    *puVar3 = (char)iVar5;
    iVar5 = (*pcVar22)(puVar12);
    iVar2 = *(int *)(puVar27 + -0x70);
    uVar11 = uVar7 * 3 >> 1;
    if (uVar7 <= uVar18) {
      pcVar22 = (code *)*puVar20;
      *(int *)(puVar27 + -100) = iVar5;
      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);
      iVar2 = *(int *)(puVar27 + -0x70);
      iVar5 = *(int *)(puVar27 + -100);
      uVar7 = uVar11;
    }
    pcVar22 = *(code **)(iVar2 + -0x7f3c);
    puVar3 = puVar6 + uVar18;
    uVar11 = uVar18;
  }
  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);
  iVar2 = *(int *)(puVar27 + -0x70);
  uVar18 = uVar7;
  if (uVar7 <= uVar11) {
    uVar18 = uVar7 * 3 >> 1;
    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);
    iVar2 = *(int *)(puVar27 + -0x70);
  }
  pcVar22 = *(code **)(iVar2 + -0x7ae8);
  uVar28 = *(undefined4 *)(puVar27 + -0x38);
  uVar13 = *(undefined4 *)(puVar27 + -0x30);
  puVar6[uVar11] = 0;
  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);
  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);
  if (iVar2 != -1) {
    return iVar19 + uVar11;
  }
  return 0;
}


lui gp,0x8
addiu gp,gp,0x4d80
addu gp,gp,t9
addiu sp,sp,-0x50
lw v0,0x4(a1)
sw s0,0x38(sp)
lw s0,-0x7b00(gp)
sw s8,0x48(sp)
or s8,sp,zero
sw ra,0x4c(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw gp,0x10(sp)
lw v1,0x0(s0)
sw v1,0x34(s8)
beq v0,zero,0x0001a3c8
_or s1,a1,zero
sw zero,0x20(s8)
bgez v0,0x0001a318
_or s2,a0,zero
subu v0,zero,v0
lw v1,0x0(s2)
addu v0,v0,v1
addiu a1,v0,0x1
sw v0,0x24(s8)
sll a1,a1,0x2
sltiu v0,a1,0x7f01
beq v0,zero,0x0001a3f4
_lw t9,-0x7d50(gp)
addiu a1,a1,0x7
srl a1,a1,0x3
sll a1,a1,0x3
subu sp,sp,a1
addiu v0,sp,0x10
lw t9,-0x7de4(gp)
addiu s3,s8,0x24
sw v0,0x30(s8)
or a1,s1,zero
jalr t9
_or a0,s3,zero
lw v0,0x28(s8)
bgez v0,0x0001a374
_lw gp,0x10(s8)
subu v0,zero,v0
lw t9,-0x7e10(gp)
or a0,s2,zero
or a2,s1,zero
sw v0,0x28(s8)
jalr t9
_or a1,s3,zero
lw a0,0x20(s8)
bne a0,zero,0x0001a3e0
_lw gp,0x10(s8)
lw v1,0x34(s8)
lw v0,0x0(s0)
bne v1,v0,0x0001a40c
_lw ra,0x4c(s8)
or sp,s8,zero
lw s8,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x50
lw a1,0x4(a2)
lw t9,-0x7c18(gp)
jalr t9
_sltu a1,zero,a1
b 0x0001a398
_lw gp,0x10(s8)
lw t9,-0x7a2c(gp)
jalr t9
_nop
b 0x0001a398
_lw gp,0x10(s8)
addiu a0,s8,0x20
jalr t9
_sw a2,0x1c(s8)
lw gp,0x10(s8)
b 0x0001a34c
_lw a2,0x1c(s8)
lw t9,-0x7b70(gp)
jalr t9
_nop
nop
nop
(translation_unit "int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}\n\n" (function_definition "int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" primitive_type (function_declarator "__gmpf_reldiff(int *param_1,int *param_2,int *param_3)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined4 uVar28;" type_identifier identifier ;) (declaration "undefined1 auStack_50 [16];" type_identifier (array_declarator "auStack_50 [16]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar3 = auStack_50;" (assignment_expression "puVar3 = auStack_50" identifier = identifier) ;) (expression_statement "puVar25 = auStack_50;" (assignment_expression "puVar25 = auStack_50" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }" { (expression_statement "piVar14 = (int *)(uint)(param_3[1] != 0);" (assignment_expression "piVar14 = (int *)(uint)(param_3[1] != 0)" identifier = (cast_expression "(int *)(uint)(param_3[1] != 0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(param_3[1] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3[1] != 0)" ( (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) != number_literal) ))))) ;) (expression_statement "(*(code *)PTR___gmpf_set_ui_00097428)();" (call_expression "(*(code *)PTR___gmpf_set_ui_00097428)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_ui_00097428)" ( (pointer_expression "*(code *)PTR___gmpf_set_ui_00097428" * (cast_expression "(code *)PTR___gmpf_set_ui_00097428" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar4 = param_1;" (assignment_expression "piVar4 = param_1" identifier = identifier) ;) }) (else_clause "else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "local_30 = (int *)0x0;" (assignment_expression "local_30 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -iVar2;\n    }" { (expression_statement "iVar2 = -iVar2;" (assignment_expression "iVar2 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) })) (expression_statement "local_2c = iVar2 + *param_1;" (assignment_expression "local_2c = iVar2 + *param_1" identifier = (binary_expression "iVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar11 = (local_2c + 1) * 4;" (assignment_expression "uVar11 = (local_2c + 1) * 4" identifier = (binary_expression "(local_2c + 1) * 4" (parenthesized_expression "(local_2c + 1)" ( (binary_expression "local_2c + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" if (parenthesized_expression "(uVar11 < 0x7f01)" ( (binary_expression "uVar11 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }" { (expression_statement "iVar2 = -(uVar11 + 7 & 0xfffffff8);" (assignment_expression "iVar2 = -(uVar11 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar11 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar11 + 7 & 0xfffffff8)" ( (binary_expression "uVar11 + 7 & 0xfffffff8" (binary_expression "uVar11 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar25 = auStack_50 + iVar2;" (assignment_expression "puVar25 = auStack_50 + iVar2" identifier = (binary_expression "auStack_50 + iVar2" identifier + identifier)) ;) (expression_statement "local_20 = &stack0xffffffc0 + iVar2;" (assignment_expression "local_20 = &stack0xffffffc0 + iVar2" identifier = (binary_expression "&stack0xffffffc0 + iVar2" (pointer_expression "&stack0xffffffc0" & identifier) + identifier)) ;) }) (else_clause "else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" else (compound_statement "{\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" { (expression_statement "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined1 *" 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 "unaff_s3 = &local_2c;" (assignment_expression "unaff_s3 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_28 < 0) {\n      local_28 = -local_28;\n    }" if (parenthesized_expression "(local_28 < 0)" ( (binary_expression "local_28 < 0" identifier < number_literal) )) (compound_statement "{\n      local_28 = -local_28;\n    }" { (expression_statement "local_28 = -local_28;" (assignment_expression "local_28 = -local_28" identifier = (unary_expression "-local_28" - identifier)) ;) })) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" identifier = identifier) ;) (expression_statement "param_3 = param_2;" (assignment_expression "param_3 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_div_00097230)(param_1);" (call_expression "(*(code *)PTR___gmpf_div_00097230)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpf_div_00097230)" ( (pointer_expression "*(code *)PTR___gmpf_div_00097230" * (cast_expression "(code *)PTR___gmpf_div_00097230" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar4 = local_30;" (assignment_expression "piVar4 = local_30" identifier = identifier) ;) (expression_statement "unaff_s2 = param_1;" (assignment_expression "unaff_s2 = param_1" identifier = identifier) ;) (expression_statement "puVar3 = puVar25;" (assignment_expression "puVar3 = puVar25" identifier = identifier) ;) (if_statement "if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (int *)0x0)" ( (binary_expression "local_30 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (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 "()" ( ))) ;) })) }))) (expression_statement "iVar2 = *(int *)puVar1;" (assignment_expression "iVar2 = *(int *)puVar1" identifier = (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_1c == iVar2) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == iVar2)" ( (binary_expression "local_1c == iVar2" identifier == identifier) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar28 = 0x1a418;" (assignment_expression "uVar28 = 0x1a418" identifier = number_literal) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar21 = 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 "puVar23 = puVar21 + 0x84c20;" (assignment_expression "puVar23 = puVar21 + 0x84c20" identifier = (binary_expression "puVar21 + 0x84c20" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar3 + -0x40;" (assignment_expression "puVar27 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar3 + -0x40;" (assignment_expression "puVar12 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar3 + -0x40;" (assignment_expression "puVar26 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar3 + -0x14) = param_2;" (assignment_expression "*(int **)(puVar3 + -0x14) = param_2" (pointer_expression "*(int **)(puVar3 + -0x14)" * (cast_expression "(int **)(puVar3 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x14)" ( (binary_expression "puVar3 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar3 + -0x18) = puVar1;" (assignment_expression "*(undefined **)(puVar3 + -0x18) = puVar1" (pointer_expression "*(undefined **)(puVar3 + -0x18)" * (cast_expression "(undefined **)(puVar3 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x18)" ( (binary_expression "puVar3 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar17 = *(int **)(puVar21 + 0x7d120);" (assignment_expression "piVar17 = *(int **)(puVar21 + 0x7d120)" identifier = (pointer_expression "*(int **)(puVar21 + 0x7d120)" * (cast_expression "(int **)(puVar21 + 0x7d120)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7d120)" ( (binary_expression "puVar21 + 0x7d120" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = (int *)piVar14[1];" (assignment_expression "piVar15 = (int *)piVar14[1]" identifier = (cast_expression "(int *)piVar14[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar3 + -8) = auStack_50;" (assignment_expression "*(undefined1 **)(puVar3 + -8) = auStack_50" (pointer_expression "*(undefined1 **)(puVar3 + -8)" * (cast_expression "(undefined1 **)(puVar3 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -8)" ( (binary_expression "puVar3 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0x10) = unaff_s2;" (assignment_expression "*(int **)(puVar3 + -0x10) = unaff_s2" (pointer_expression "*(int **)(puVar3 + -0x10)" * (cast_expression "(int **)(puVar3 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x10)" ( (binary_expression "puVar3 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar3 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar3 + -4)" * (cast_expression "(undefined4 *)(puVar3 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -4)" ( (binary_expression "puVar3 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar3 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar3 + -0xc)" * (cast_expression "(int **)(puVar3 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xc)" ( (binary_expression "puVar3 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar3 + -0x30) = puVar23;" (assignment_expression "*(undefined **)(puVar3 + -0x30) = puVar23" (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar3 + -0x1c) = *piVar17;" (assignment_expression "*(int *)(puVar3 + -0x1c) = *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" * (cast_expression "(int *)(puVar3 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x1c)" ( (binary_expression "puVar3 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar17" * identifier)) ;) (if_statement "if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" if (parenthesized_expression "((int)piVar15 < 1)" ( (binary_expression "(int)piVar15 < 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }" { (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7cdac);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7cdac)" identifier = (pointer_expression "*(code **)(puVar21 + 0x7cdac)" * (cast_expression "(code **)(puVar21 + 0x7cdac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7cdac)" ( (binary_expression "puVar21 + 0x7cdac" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" identifier = identifier) ;) (if_statement "if (piVar15 != (int *)0x0) goto LAB_0001a630;" if (parenthesized_expression "(piVar15 != (int *)0x0)" ( (binary_expression "piVar15 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001a630;" goto statement_identifier ;)) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" else (compound_statement "{\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" { (expression_statement "uVar11 = piVar14[2];" (assignment_expression "uVar11 = piVar14[2]" identifier = (subscript_expression "piVar14[2]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "unaff_s3 = (int *)piVar14[3];" (assignment_expression "unaff_s3 = (int *)piVar14[3]" identifier = (cast_expression "(int *)piVar14[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = uVar11 & 1;" (assignment_expression "uVar7 = uVar11 & 1" identifier = (binary_expression "uVar11 & 1" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x20)" * (cast_expression "(undefined4 *)(puVar3 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar14 = (int *)(iVar2 * 2 - uVar7);" (assignment_expression "piVar14 = (int *)(iVar2 * 2 - uVar7)" identifier = (cast_expression "(int *)(iVar2 * 2 - uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 * 2 - uVar7)" ( (binary_expression "iVar2 * 2 - uVar7" (binary_expression "iVar2 * 2" identifier * number_literal) - identifier) )))) ;) (expression_statement "piVar4[2] = (int)(uVar11 + uVar7) / 2;" (assignment_expression "piVar4[2] = (int)(uVar11 + uVar7) / 2" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (binary_expression "(int)(uVar11 + uVar7) / 2" (cast_expression "(int)(uVar11 + uVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar11 + uVar7)" ( (binary_expression "uVar11 + uVar7" identifier + identifier) ))) / number_literal)) ;) (if_statement "if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" if (parenthesized_expression "((uint)((int)piVar14 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)piVar14 * 4) < 0x7f01" (call_expression "(uint)((int)piVar14 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar14 * 4)" ( (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }" { (expression_statement "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)piVar14 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)piVar14 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar14 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar14 * 4 + 7U" (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = puVar3 + iVar2 + -0x40;" (assignment_expression "puVar26 = puVar3 + iVar2 + -0x40" identifier = (binary_expression "puVar3 + iVar2 + -0x40" (binary_expression "puVar3 + iVar2" identifier + identifier) + number_literal)) ;) (expression_statement "param_3 = (int *)(puVar3 + iVar2 + -0x30);" (assignment_expression "param_3 = (int *)(puVar3 + iVar2 + -0x30)" identifier = (cast_expression "(int *)(puVar3 + iVar2 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + iVar2 + -0x30)" ( (binary_expression "puVar3 + iVar2 + -0x30" (binary_expression "puVar3 + iVar2" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" else (compound_statement "{\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" { (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7ced0);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7ced0)" identifier = (pointer_expression "*(code **)(puVar21 + 0x7ced0)" * (cast_expression "(code **)(puVar21 + 0x7ced0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7ced0)" ( (binary_expression "puVar21 + 0x7ced0" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar3 + -0x24) = piVar14;" (assignment_expression "*(int **)(puVar3 + -0x24) = piVar14" (pointer_expression "*(int **)(puVar3 + -0x24)" * (cast_expression "(int **)(puVar3 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x24)" ( (binary_expression "puVar3 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_3 = (int *)(*pcVar22)(puVar3 + -0x20);" (assignment_expression "param_3 = (int *)(*pcVar22)(puVar3 + -0x20)" identifier = (cast_expression "(int *)(*pcVar22)(puVar3 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(puVar3 + -0x20)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = *(int **)(puVar3 + -0x24);" (assignment_expression "piVar14 = *(int **)(puVar3 + -0x24)" identifier = (pointer_expression "*(int **)(puVar3 + -0x24)" * (cast_expression "(int **)(puVar3 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x24)" ( (binary_expression "puVar3 + -0x24" identifier + number_literal) ))))) ;) }))) (if_statement "if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" if (parenthesized_expression "((int)piVar14 < (int)piVar15)" ( (binary_expression "(int)piVar14 < (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }" { (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" { (expression_statement "iVar8 = (int)piVar14 + -1;" (assignment_expression "iVar8 = (int)piVar14 + -1" identifier = (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);" (assignment_expression "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14)" identifier = (binary_expression "unaff_s3 + ((int)piVar15 - (int)piVar14)" identifier + (parenthesized_expression "((int)piVar15 - (int)piVar14)" ( (binary_expression "(int)piVar15 - (int)piVar14" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (if_statement "if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          *param_3 = iVar2;\n        }" { (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" else (compound_statement "{\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" { (do_statement "do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);" do (compound_statement "{\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          }" { (expression_statement "piVar16 = piVar16 + 1;" (assignment_expression "piVar16 = piVar16 + 1" identifier = (binary_expression "piVar16 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) ;) (expression_statement "param_3[(int)piVar14 + -1] = iVar2;" (assignment_expression "param_3[(int)piVar14 + -1] = iVar2" (subscript_expression "param_3[(int)piVar14 + -1]" identifier [ (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) (goto_statement "goto LAB_0001a530;" goto statement_identifier ;) })) }) (else_clause "else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" else (compound_statement "{\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" { (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (expression_statement "iVar2 = (int)piVar14 - (int)piVar15;" (assignment_expression "iVar2 = (int)piVar14 - (int)piVar15" identifier = (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(piVar15 != piVar14)" ( (binary_expression "piVar15 != piVar14" identifier != identifier) )) (compound_statement "{\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" { (do_statement "do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar2 = *unaff_s3;" (assignment_expression "iVar2 = *unaff_s3" identifier = (pointer_expression "*unaff_s3" * identifier)) ;) (expression_statement "iVar8 = (int)piVar15 + -1;" (assignment_expression "iVar8 = (int)piVar15 + -1" identifier = (binary_expression "(int)piVar15 + -1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar10 = param_3 + ((int)piVar14 - (int)piVar15);" (assignment_expression "piVar10 = param_3 + ((int)piVar14 - (int)piVar15)" identifier = (binary_expression "param_3 + ((int)piVar14 - (int)piVar15)" identifier + (parenthesized_expression "((int)piVar14 - (int)piVar15)" ( (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" identifier = identifier) ;) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" { (do_statement "do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);" do (compound_statement "{\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        }" { (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = piVar14[1];" (assignment_expression "iVar2 = piVar14[1]" identifier = (subscript_expression "piVar14[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) ;) (expression_statement "piVar16 = (int *)((int)piVar15 * 4 + -4);" (assignment_expression "piVar16 = (int *)((int)piVar15 * 4 + -4)" identifier = (cast_expression "(int *)((int)piVar15 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 * 4 + -4)" ( (binary_expression "(int)piVar15 * 4 + -4" (binary_expression "(int)piVar15 * 4" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "piVar10 = piVar10 + (int)piVar15 + -1;" (assignment_expression "piVar10 = piVar10 + (int)piVar15 + -1" identifier = (binary_expression "piVar10 + (int)piVar15 + -1" (binary_expression "piVar10 + (int)piVar15" identifier + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*piVar10 = iVar2;" (assignment_expression "*piVar10 = iVar2" (pointer_expression "*piVar10" * identifier) = identifier) ;) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" identifier = identifier) ;) (labeled_statement "LAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);" statement_identifier : (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) ;)) }))) (expression_statement "piVar14 = (int *)0x0;" (assignment_expression "piVar14 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar22)(piVar4[3]);" (call_expression "(*pcVar22)(piVar4[3])" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(piVar4[3])" ( (subscript_expression "piVar4[3]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar9 = *(int **)(puVar3 + -0x20);" (assignment_expression "piVar9 = *(int **)(puVar3 + -0x20)" identifier = (pointer_expression "*(int **)(puVar3 + -0x20)" * (cast_expression "(int **)(puVar3 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar26;" (assignment_expression "puVar12 = puVar26" identifier = identifier) ;) (if_statement "if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" { (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar23 + -0x7a2c)" * (pointer_expression "*(code **)(puVar23 + -0x7a2c)" * (cast_expression "(code **)(puVar23 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a2c)" ( (binary_expression "puVar23 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }" if (parenthesized_expression "(*(int *)(puVar3 + -0x1c) == *piVar17)" ( (binary_expression "*(int *)(puVar3 + -0x1c) == *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" * (cast_expression "(int *)(puVar3 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x1c)" ( (binary_expression "puVar3 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar17" * identifier)) )) (compound_statement "{\n    return *piVar17;\n  }" { (return_statement "return *piVar17;" return (pointer_expression "*piVar17" * identifier) ;) })) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7b70)" * (cast_expression "(code **)(puVar23 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b70)" ( (binary_expression "puVar23 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar27 = puVar12;" (assignment_expression "puVar27 = puVar12" identifier = identifier) ;) (labeled_statement "LAB_0001a630:\n  uVar28 = 0x1a638;" statement_identifier : (expression_statement "uVar28 = 0x1a638;" (assignment_expression "uVar28 = 0x1a638" identifier = number_literal) ;)) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar24 = pcVar22 + 0x84a00;" (assignment_expression "pcVar24 = pcVar22 + 0x84a00" identifier = (binary_expression "pcVar22 + 0x84a00" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar16 = *(int **)(pcVar22 + 0x7cf00);" (assignment_expression "piVar16 = *(int **)(pcVar22 + 0x7cf00)" identifier = (pointer_expression "*(int **)(pcVar22 + 0x7cf00)" * (cast_expression "(int **)(pcVar22 + 0x7cf00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cf00)" ( (binary_expression "pcVar22 + 0x7cf00" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x14) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x14) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x14)" * (cast_expression "(int **)(puVar27 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -8) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar27 + -8) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar27 + -8)" * (cast_expression "(undefined4 *)(puVar27 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x10) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x18) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x18) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x18)" * (cast_expression "(int **)(puVar27 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x1c) = *piVar16;" (assignment_expression "*(int *)(puVar27 + -0x1c) = *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" * (cast_expression "(int *)(puVar27 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar17 = param_3;" (assignment_expression "piVar17 = param_3" identifier = identifier) ;) (if_statement "if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }" { (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12 = (undefined1 *)0x0;" (assignment_expression "puVar12 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) }) (else_clause "else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" else (compound_statement "{\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" { (expression_statement "piVar4 = piVar14;" (assignment_expression "piVar4 = piVar14" identifier = identifier) ;) (if_statement "if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar4 = (int *)-(int)piVar14;\n    }" { (expression_statement "piVar4 = (int *)-(int)piVar14;" (assignment_expression "piVar4 = (int *)-(int)piVar14" identifier = (cast_expression "(int *)-(int)piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar14" - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }" if (parenthesized_expression "(*piVar9 + 1 <= (int)piVar4)" ( (binary_expression "*piVar9 + 1 <= (int)piVar4" (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" * identifier) + number_literal) <= (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      piVar4 = (int *)(*piVar9 + 1);\n    }" { (expression_statement "piVar4 = (int *)(*piVar9 + 1);" (assignment_expression "piVar4 = (int *)(*piVar9 + 1)" identifier = (cast_expression "(int *)(*piVar9 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + 1)" ( (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" * identifier) + number_literal) )))) ;) })) (expression_statement "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);" (call_expression "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4)" (parenthesized_expression "(**(code **)(pcVar22 + 0x7cb14))" ( (pointer_expression "**(code **)(pcVar22 + 0x7cb14)" * (pointer_expression "*(code **)(pcVar22 + 0x7cb14)" * (cast_expression "(code **)(pcVar22 + 0x7cb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cb14)" ( (binary_expression "pcVar22 + 0x7cb14" identifier + number_literal) ))))) )) (argument_list "(piVar9[3],piVar4)" ( (subscript_expression "piVar9[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" identifier = (pointer_expression "*(int *)(puVar27 + -0x28)" * (cast_expression "(int *)(puVar27 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7a40);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7a40)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7a40)" * (cast_expression "(code **)(iVar2 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7a40)" ( (binary_expression "iVar2 + -0x7a40" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" if (parenthesized_expression "(**(char **)(iVar2 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar2 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" { (expression_statement "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);" (assignment_expression "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar2 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) ))))) ;) (expression_statement "**(char **)(iVar2 + -0x7eb8) = '\x01';" (assignment_expression "**(char **)(iVar2 + -0x7eb8) = '\x01'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "(*pcVar22)(uVar28);" (call_expression "(*pcVar22)(uVar28)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(uVar28)" ( identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" identifier = (pointer_expression "*(int *)(puVar27 + -0x28)" * (cast_expression "(int *)(puVar27 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) })) (expression_statement "puVar12 = puVar27 + -0x20;" (assignment_expression "puVar12 = puVar27 + -0x20" identifier = (binary_expression "puVar27 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);" (call_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" (parenthesized_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (binary_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4" (pointer_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" * (cast_expression "(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (binary_expression "*(int *)(iVar2 + -0x7dc4) + 0x10" (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" ( (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) , identifier , number_literal ))) ;) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x28);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x28)" identifier = (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" { (expression_statement "piVar17 = (int *)-(int)param_3;" (assignment_expression "piVar17 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" identifier = (pointer_expression "*(int **)(puVar27 + -0x20)" * (cast_expression "(int **)(puVar27 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = (int)param_3 * -2 + 1;" (assignment_expression "uVar11 = (int)param_3 * -2 + 1" identifier = (binary_expression "(int)param_3 * -2 + 1" (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar10 % uVar11 + (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" { (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" identifier = (cast_expression "(int *)-(int)piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar4" - (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }) (else_clause "else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" else (compound_statement "{\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" { (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" identifier = (pointer_expression "*(int **)(puVar27 + -0x20)" * (cast_expression "(int **)(puVar27 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = (int)param_3 * 2 + 1;" (assignment_expression "uVar11 = (int)param_3 * 2 + 1" identifier = (binary_expression "(int)param_3 * 2 + 1" (binary_expression "(int)param_3 * 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar10 % uVar11 - (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" { (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" identifier = (cast_expression "(int *)-(int)piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar4" - (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }))) (expression_statement "piVar9[1] = (int)piVar4;" (assignment_expression "piVar9[1] = (int)piVar4" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar15 = param_3;" (assignment_expression "piVar15 = param_3" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }" if (parenthesized_expression "(*(int *)(puVar27 + -0x1c) == *piVar16)" ( (binary_expression "*(int *)(puVar27 + -0x1c) == *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" * (cast_expression "(int *)(puVar27 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n    return *piVar16;\n  }" { (return_statement "return *piVar16;" return (pointer_expression "*piVar16" * identifier) ;) })) (expression_statement "pcVar22 = *(code **)(pcVar24 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(pcVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar24 + -0x7b70)" * (cast_expression "(code **)(pcVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b70)" ( (binary_expression "pcVar24 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = 0x1a7b4;" (assignment_expression "uVar28 = 0x1a7b4" identifier = number_literal) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;" (assignment_expression "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880" (pointer_expression "*(code **)(puVar27 + -0x70)" * (cast_expression "(code **)(puVar27 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) = (binary_expression "pcVar22 + 0x84880" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x3c) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -0x3c) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -0x3c)" * (cast_expression "(undefined4 *)(puVar27 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x3c)" ( (binary_expression "puVar27 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;" (assignment_expression "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40" (pointer_expression "*(undefined1 **)(puVar27 + -0x40)" * (cast_expression "(undefined1 **)(puVar27 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x40)" ( (binary_expression "puVar27 + -0x40" identifier + number_literal) )))) = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar27 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar27 + -0x44)" * (cast_expression "(undefined4 *)(puVar27 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x44)" ( (binary_expression "puVar27 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar27 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar27 + -0x48)" * (cast_expression "(undefined4 *)(puVar27 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x48)" ( (binary_expression "puVar27 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar27 + -0x4c)" * (cast_expression "(undefined4 *)(puVar27 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x4c)" ( (binary_expression "puVar27 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x50) = piVar14;" (assignment_expression "*(int **)(puVar27 + -0x50) = piVar14" (pointer_expression "*(int **)(puVar27 + -0x50)" * (cast_expression "(int **)(puVar27 + -0x50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x50)" ( (binary_expression "puVar27 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x54) = piVar16;" (assignment_expression "*(int **)(puVar27 + -0x54) = piVar16" (pointer_expression "*(int **)(puVar27 + -0x54)" * (cast_expression "(int **)(puVar27 + -0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x54)" ( (binary_expression "puVar27 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x58) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x58) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x58)" * (cast_expression "(int **)(puVar27 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x58)" ( (binary_expression "puVar27 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x5c) = piVar9;" (assignment_expression "*(int **)(puVar27 + -0x5c) = piVar9" (pointer_expression "*(int **)(puVar27 + -0x5c)" * (cast_expression "(int **)(puVar27 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x5c)" ( (binary_expression "puVar27 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x60) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x60) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x60)" * (cast_expression "(int **)(puVar27 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x60)" ( (binary_expression "puVar27 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x38) = piVar10;" (assignment_expression "*(int **)(puVar27 + -0x38) = piVar10" (pointer_expression "*(int **)(puVar27 + -0x38)" * (cast_expression "(int **)(puVar27 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x38)" ( (binary_expression "puVar27 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x30) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x30) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x30)" * (cast_expression "(int **)(puVar27 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" if (parenthesized_expression "(puVar12 == (undefined1 *)0x0)" ( (binary_expression "puVar12 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" { (expression_statement "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);" (assignment_expression "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54)" identifier = (cast_expression "(undefined1 *)**(int **)(pcVar22 + 0x7cb54)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(pcVar22 + 0x7cb54)" * (pointer_expression "*(int **)(pcVar22 + 0x7cb54)" * (cast_expression "(int **)(pcVar22 + 0x7cb54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cb54)" ( (binary_expression "pcVar22 + 0x7cb54" identifier + number_literal) ))))))) ;) })) (expression_statement "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar22 + 0x7cd4c)" * (pointer_expression "*(undefined4 **)(pcVar22 + 0x7cd4c)" * (cast_expression "(undefined4 **)(pcVar22 + 0x7cd4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cd4c)" ( (binary_expression "pcVar22 + 0x7cd4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal ))))) ;) (expression_statement "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7f94)" ( (binary_expression "*(int *)(puVar27 + -0x70) + -0x7f94" (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);" do (compound_statement "{\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  }" { (expression_statement "iVar19 = iVar8;" (assignment_expression "iVar19 = iVar8" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);" (assignment_expression "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12)" identifier = (call_expression "(**(code **)(iVar2 + -0x7f3c))(puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar2 + -0x7f3c)" * (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar19 + 1;" (assignment_expression "iVar8 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" * (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + iVar5 * 2)" ( (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "iVar5 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);" (assignment_expression "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 100;" (assignment_expression "uVar7 = 100" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (while_statement "while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" while (parenthesized_expression "((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))" ( (binary_expression "iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" (binary_expression "iVar5 != -1" identifier != number_literal) && (parenthesized_expression "(uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" ( (comma_expression "uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (assignment_expression "uVar18 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" * (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + iVar5 * 2)" ( (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "iVar5 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" { (expression_statement "*puVar3 = (char)iVar5;" (assignment_expression "*puVar3 = (char)iVar5" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = (*pcVar22)(puVar12);" (assignment_expression "iVar5 = (*pcVar22)(puVar12)" identifier = (call_expression "(*pcVar22)(puVar12)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar7 * 3 >> 1;" (assignment_expression "uVar11 = uVar7 * 3 >> 1" identifier = (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" identifier * number_literal) >> number_literal)) ;) (if_statement "if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" if (parenthesized_expression "(uVar7 <= uVar18)" ( (binary_expression "uVar7 <= uVar18" identifier <= identifier) )) (compound_statement "{\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" { (expression_statement "pcVar22 = (code *)*puVar20;" (assignment_expression "pcVar22 = (code *)*puVar20" identifier = (cast_expression "(code *)*puVar20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier))) ;) (expression_statement "*(int *)(puVar27 + -100) = iVar5;" (assignment_expression "*(int *)(puVar27 + -100) = iVar5" (pointer_expression "*(int *)(puVar27 + -100)" * (cast_expression "(int *)(puVar27 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -100)" ( (binary_expression "puVar27 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);" (assignment_expression "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" identifier = (cast_expression "(undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(puVar6,uVar7,uVar11)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar6,uVar7,uVar11)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar27 + -100);" (assignment_expression "iVar5 = *(int *)(puVar27 + -100)" identifier = (pointer_expression "*(int *)(puVar27 + -100)" * (cast_expression "(int *)(puVar27 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -100)" ( (binary_expression "puVar27 + -100" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) })) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar6 + uVar18;" (assignment_expression "puVar3 = puVar6 + uVar18" identifier = (binary_expression "puVar6 + uVar18" identifier + identifier)) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);" (call_expression "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar2 + -0x7d5c)" * (pointer_expression "*(code **)(iVar2 + -0x7d5c)" * (cast_expression "(code **)(iVar2 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7d5c)" ( (binary_expression "iVar2 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar5,puVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = uVar7;" (assignment_expression "uVar18 = uVar7" identifier = identifier) ;) (if_statement "if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" if (parenthesized_expression "(uVar7 <= uVar11)" ( (binary_expression "uVar7 <= uVar11" identifier <= identifier) )) (compound_statement "{\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" { (expression_statement "uVar18 = uVar7 * 3 >> 1;" (assignment_expression "uVar18 = uVar7 * 3 >> 1" identifier = (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);" (assignment_expression "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar2 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(puVar6,uVar7,uVar18)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7ae8);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7ae8)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7ae8)" * (cast_expression "(code **)(iVar2 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7ae8)" ( (binary_expression "iVar2 + -0x7ae8" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = *(undefined4 *)(puVar27 + -0x38);" (assignment_expression "uVar28 = *(undefined4 *)(puVar27 + -0x38)" identifier = (pointer_expression "*(undefined4 *)(puVar27 + -0x38)" * (cast_expression "(undefined4 *)(puVar27 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x38)" ( (binary_expression "puVar27 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(undefined4 *)(puVar27 + -0x30);" (assignment_expression "uVar13 = *(undefined4 *)(puVar27 + -0x30)" identifier = (pointer_expression "*(undefined4 *)(puVar27 + -0x30)" * (cast_expression "(undefined4 *)(puVar27 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar6[uVar11] = 0;" (assignment_expression "puVar6[uVar11] = 0" (subscript_expression "puVar6[uVar11]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);" (assignment_expression "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13)" identifier = (call_expression "(*pcVar22)(uVar28,puVar6,uVar13)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(uVar28,puVar6,uVar13)" ( identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (binary_expression "*(int *)(puVar27 + -0x70) + -0x7e70" (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(puVar6,uVar18)" ( identifier , identifier ))) ;) (if_statement "if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n    return iVar19 + uVar11;\n  }" { (return_statement "return iVar19 + uVar11;" return (binary_expression "iVar19 + uVar11" identifier + identifier) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "void __gmpf_reldiff(__mpf_struct *rdiff,mpf_srcptr x,mpf_srcptr y)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  mp_limb_t mVar3;\n  __mpf_struct *p_Var4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  mp_limb_t *pmVar9;\n  __mpf_struct *p_Var10;\n  uint uVar11;\n  undefined1 *puVar12;\n  __mpf_struct *p_Var13;\n  uint uVar14;\n  __mpf_struct *p_Var15;\n  undefined4 uVar16;\n  mpf_srcptr p_Var17;\n  mp_limb_t *pmVar18;\n  mpf_srcptr p_Var19;\n  int *piVar20;\n  uint uVar21;\n  __mpf_struct *unaff_s2;\n  __mpf_struct *unaff_s3;\n  int *piVar22;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar23;\n  undefined4 unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined4 uVar31;\n  undefined1 auStack_50 [16];\n  tmp_reentrant_t *__tmp_marker;\n  mpf_t d;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar5 = auStack_50;\n  puVar28 = auStack_50;\n  iVar2 = x->_mp_size;\n  iVar7 = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    p_Var10 = rdiff;\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (iVar7 == *(int *)puVar1) {\n    return;\n  }\n  uVar31 = 0x1a418;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar26 = puVar24 + 0x84c20;\n  puVar30 = puVar5 + -0x40;\n  puVar12 = puVar5 + -0x40;\n  puVar29 = puVar5 + -0x40;\n  *(mpf_srcptr *)(puVar5 + -0x14) = x;\n  *(undefined **)(puVar5 + -0x18) = puVar1;\n  piVar20 = *(int **)(puVar24 + 0x7d120);\n  p_Var19 = (mpf_srcptr)p_Var15->_mp_size;\n  *(undefined1 **)(puVar5 + -8) = auStack_50;\n  *(__mpf_struct **)(puVar5 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar5 + -4) = uVar31;\n  *(__mpf_struct **)(puVar5 + -0xc) = unaff_s3;\n  *(undefined **)(puVar5 + -0x30) = puVar26;\n  *(int *)(puVar5 + -0x1c) = *piVar20;\n  if ((int)p_Var19 < 1) {\n    pcVar25 = *(code **)(puVar24 + 0x7cdac);\n    p_Var13 = p_Var10;\n    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;\n    p_Var10->_mp_size = 0;\n    p_Var10->_mp_exp = 0;\n  }\n  else {\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }\n  if (*(int *)(puVar5 + -0x1c) == *piVar20) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  (*pcVar25)();\n  puVar30 = puVar12;\nLAB_0001a630:\n  uVar31 = 0x1a638;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x84a00;\n  *(__mpf_struct **)(puVar30 + -0xc) = unaff_s3;\n  piVar22 = *(int **)(pcVar25 + 0x7cf00);\n  *(code **)(puVar30 + -0x28) = pcVar27;\n  *(int **)(puVar30 + -0x14) = piVar20;\n  *(undefined4 *)(puVar30 + -4) = uVar31;\n  *(undefined4 *)(puVar30 + -8) = unaff_s4;\n  *(__mpf_struct **)(puVar30 + -0x10) = p_Var10;\n  *(mpf_srcptr *)(puVar30 + -0x18) = p_Var19;\n  *(int *)(puVar30 + -0x1c) = *piVar22;\n  p_Var17 = y;\n  if (p_Var15 == (__mpf_struct *)0x0) {\n    p_Var13->_mp_exp = 0;\n    p_Var13->_mp_size = 0;\n    puVar12 = (undefined1 *)0x0;\n    p_Var4 = p_Var13;\n  }\n  else {\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }\n  if (*(int *)(puVar30 + -0x1c) == *piVar22) {\n    return;\n  }\n  pcVar25 = *(code **)(pcVar27 + -0x7b70);\n  uVar31 = 0x1a7b4;\n  (*pcVar25)();\n  *(code **)(puVar30 + -0x70) = pcVar25 + 0x84880;\n  *(undefined4 *)(puVar30 + -0x3c) = uVar31;\n  *(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40;\n  *(undefined4 *)(puVar30 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar30 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar30 + -0x4c) = unaff_s5;\n  *(__mpf_struct **)(puVar30 + -0x50) = p_Var15;\n  *(int **)(puVar30 + -0x54) = piVar22;\n  *(__mpf_struct **)(puVar30 + -0x58) = p_Var10;\n  *(__mpf_struct **)(puVar30 + -0x5c) = p_Var13;\n  *(mpf_srcptr *)(puVar30 + -0x60) = p_Var19;\n  *(__mpf_struct **)(puVar30 + -0x38) = p_Var4;\n  *(mpf_srcptr *)(puVar30 + -0x30) = p_Var17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);\n  }\n  puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100);\n  piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar30 + -0x70);\n  do {\n    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  } while ((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0);\n  puVar23 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar25 = *(code **)(iVar2 + -0x7f3c);\n  uVar11 = 100;\n  uVar14 = 0;\n  puVar6 = puVar5;\n  while ((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))) {\n    *puVar5 = (char)iVar7;\n    iVar7 = (*pcVar25)(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n    uVar14 = uVar11 * 3 >> 1;\n    if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }\n    pcVar25 = *(code **)(iVar2 + -0x7f3c);\n    puVar5 = puVar6 + uVar21;\n    uVar14 = uVar21;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12);\n  iVar2 = *(int *)(puVar30 + -0x70);\n  uVar21 = uVar11;\n  if (uVar11 <= uVar14) {\n    uVar21 = uVar11 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }\n  pcVar25 = *(code **)(iVar2 + -0x7ae8);\n  uVar31 = *(undefined4 *)(puVar30 + -0x38);\n  uVar16 = *(undefined4 *)(puVar30 + -0x30);\n  puVar6[uVar14] = 0;\n  iVar2 = (*pcVar25)(uVar31,puVar6,uVar16);\n  (*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21);\n  if (iVar2 != -1) {\n    return;\n  }\n  return;\n}\n\n" (function_definition "void __gmpf_reldiff(__mpf_struct *rdiff,mpf_srcptr x,mpf_srcptr y)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  mp_limb_t mVar3;\n  __mpf_struct *p_Var4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  mp_limb_t *pmVar9;\n  __mpf_struct *p_Var10;\n  uint uVar11;\n  undefined1 *puVar12;\n  __mpf_struct *p_Var13;\n  uint uVar14;\n  __mpf_struct *p_Var15;\n  undefined4 uVar16;\n  mpf_srcptr p_Var17;\n  mp_limb_t *pmVar18;\n  mpf_srcptr p_Var19;\n  int *piVar20;\n  uint uVar21;\n  __mpf_struct *unaff_s2;\n  __mpf_struct *unaff_s3;\n  int *piVar22;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar23;\n  undefined4 unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined4 uVar31;\n  undefined1 auStack_50 [16];\n  tmp_reentrant_t *__tmp_marker;\n  mpf_t d;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar5 = auStack_50;\n  puVar28 = auStack_50;\n  iVar2 = x->_mp_size;\n  iVar7 = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    p_Var10 = rdiff;\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (iVar7 == *(int *)puVar1) {\n    return;\n  }\n  uVar31 = 0x1a418;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar26 = puVar24 + 0x84c20;\n  puVar30 = puVar5 + -0x40;\n  puVar12 = puVar5 + -0x40;\n  puVar29 = puVar5 + -0x40;\n  *(mpf_srcptr *)(puVar5 + -0x14) = x;\n  *(undefined **)(puVar5 + -0x18) = puVar1;\n  piVar20 = *(int **)(puVar24 + 0x7d120);\n  p_Var19 = (mpf_srcptr)p_Var15->_mp_size;\n  *(undefined1 **)(puVar5 + -8) = auStack_50;\n  *(__mpf_struct **)(puVar5 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar5 + -4) = uVar31;\n  *(__mpf_struct **)(puVar5 + -0xc) = unaff_s3;\n  *(undefined **)(puVar5 + -0x30) = puVar26;\n  *(int *)(puVar5 + -0x1c) = *piVar20;\n  if ((int)p_Var19 < 1) {\n    pcVar25 = *(code **)(puVar24 + 0x7cdac);\n    p_Var13 = p_Var10;\n    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;\n    p_Var10->_mp_size = 0;\n    p_Var10->_mp_exp = 0;\n  }\n  else {\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }\n  if (*(int *)(puVar5 + -0x1c) == *piVar20) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  (*pcVar25)();\n  puVar30 = puVar12;\nLAB_0001a630:\n  uVar31 = 0x1a638;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x84a00;\n  *(__mpf_struct **)(puVar30 + -0xc) = unaff_s3;\n  piVar22 = *(int **)(pcVar25 + 0x7cf00);\n  *(code **)(puVar30 + -0x28) = pcVar27;\n  *(int **)(puVar30 + -0x14) = piVar20;\n  *(undefined4 *)(puVar30 + -4) = uVar31;\n  *(undefined4 *)(puVar30 + -8) = unaff_s4;\n  *(__mpf_struct **)(puVar30 + -0x10) = p_Var10;\n  *(mpf_srcptr *)(puVar30 + -0x18) = p_Var19;\n  *(int *)(puVar30 + -0x1c) = *piVar22;\n  p_Var17 = y;\n  if (p_Var15 == (__mpf_struct *)0x0) {\n    p_Var13->_mp_exp = 0;\n    p_Var13->_mp_size = 0;\n    puVar12 = (undefined1 *)0x0;\n    p_Var4 = p_Var13;\n  }\n  else {\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }\n  if (*(int *)(puVar30 + -0x1c) == *piVar22) {\n    return;\n  }\n  pcVar25 = *(code **)(pcVar27 + -0x7b70);\n  uVar31 = 0x1a7b4;\n  (*pcVar25)();\n  *(code **)(puVar30 + -0x70) = pcVar25 + 0x84880;\n  *(undefined4 *)(puVar30 + -0x3c) = uVar31;\n  *(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40;\n  *(undefined4 *)(puVar30 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar30 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar30 + -0x4c) = unaff_s5;\n  *(__mpf_struct **)(puVar30 + -0x50) = p_Var15;\n  *(int **)(puVar30 + -0x54) = piVar22;\n  *(__mpf_struct **)(puVar30 + -0x58) = p_Var10;\n  *(__mpf_struct **)(puVar30 + -0x5c) = p_Var13;\n  *(mpf_srcptr *)(puVar30 + -0x60) = p_Var19;\n  *(__mpf_struct **)(puVar30 + -0x38) = p_Var4;\n  *(mpf_srcptr *)(puVar30 + -0x30) = p_Var17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);\n  }\n  puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100);\n  piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar30 + -0x70);\n  do {\n    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  } while ((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0);\n  puVar23 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar25 = *(code **)(iVar2 + -0x7f3c);\n  uVar11 = 100;\n  uVar14 = 0;\n  puVar6 = puVar5;\n  while ((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))) {\n    *puVar5 = (char)iVar7;\n    iVar7 = (*pcVar25)(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n    uVar14 = uVar11 * 3 >> 1;\n    if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }\n    pcVar25 = *(code **)(iVar2 + -0x7f3c);\n    puVar5 = puVar6 + uVar21;\n    uVar14 = uVar21;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12);\n  iVar2 = *(int *)(puVar30 + -0x70);\n  uVar21 = uVar11;\n  if (uVar11 <= uVar14) {\n    uVar21 = uVar11 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }\n  pcVar25 = *(code **)(iVar2 + -0x7ae8);\n  uVar31 = *(undefined4 *)(puVar30 + -0x38);\n  uVar16 = *(undefined4 *)(puVar30 + -0x30);\n  puVar6[uVar14] = 0;\n  iVar2 = (*pcVar25)(uVar31,puVar6,uVar16);\n  (*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21);\n  if (iVar2 != -1) {\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "__gmpf_reldiff(__mpf_struct *rdiff,mpf_srcptr x,mpf_srcptr y)" identifier (parameter_list "(__mpf_struct *rdiff,mpf_srcptr x,mpf_srcptr y)" ( (parameter_declaration "__mpf_struct *rdiff" type_identifier (pointer_declarator "*rdiff" * identifier)) , (parameter_declaration "mpf_srcptr x" type_identifier identifier) , (parameter_declaration "mpf_srcptr y" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  mp_limb_t mVar3;\n  __mpf_struct *p_Var4;\n  undefined1 *puVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  mp_limb_t *pmVar9;\n  __mpf_struct *p_Var10;\n  uint uVar11;\n  undefined1 *puVar12;\n  __mpf_struct *p_Var13;\n  uint uVar14;\n  __mpf_struct *p_Var15;\n  undefined4 uVar16;\n  mpf_srcptr p_Var17;\n  mp_limb_t *pmVar18;\n  mpf_srcptr p_Var19;\n  int *piVar20;\n  uint uVar21;\n  __mpf_struct *unaff_s2;\n  __mpf_struct *unaff_s3;\n  int *piVar22;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar23;\n  undefined4 unaff_s7;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined *puVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined1 *puVar29;\n  undefined1 *puVar30;\n  undefined4 uVar31;\n  undefined1 auStack_50 [16];\n  tmp_reentrant_t *__tmp_marker;\n  mpf_t d;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar5 = auStack_50;\n  puVar28 = auStack_50;\n  iVar2 = x->_mp_size;\n  iVar7 = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    p_Var10 = rdiff;\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  if (iVar7 == *(int *)puVar1) {\n    return;\n  }\n  uVar31 = 0x1a418;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar26 = puVar24 + 0x84c20;\n  puVar30 = puVar5 + -0x40;\n  puVar12 = puVar5 + -0x40;\n  puVar29 = puVar5 + -0x40;\n  *(mpf_srcptr *)(puVar5 + -0x14) = x;\n  *(undefined **)(puVar5 + -0x18) = puVar1;\n  piVar20 = *(int **)(puVar24 + 0x7d120);\n  p_Var19 = (mpf_srcptr)p_Var15->_mp_size;\n  *(undefined1 **)(puVar5 + -8) = auStack_50;\n  *(__mpf_struct **)(puVar5 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar5 + -4) = uVar31;\n  *(__mpf_struct **)(puVar5 + -0xc) = unaff_s3;\n  *(undefined **)(puVar5 + -0x30) = puVar26;\n  *(int *)(puVar5 + -0x1c) = *piVar20;\n  if ((int)p_Var19 < 1) {\n    pcVar25 = *(code **)(puVar24 + 0x7cdac);\n    p_Var13 = p_Var10;\n    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;\n    p_Var10->_mp_size = 0;\n    p_Var10->_mp_exp = 0;\n  }\n  else {\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }\n  if (*(int *)(puVar5 + -0x1c) == *piVar20) {\n    return;\n  }\n  pcVar25 = *(code **)(puVar26 + -0x7b70);\n  (*pcVar25)();\n  puVar30 = puVar12;\nLAB_0001a630:\n  uVar31 = 0x1a638;\n  (*pcVar25)();\n  pcVar27 = pcVar25 + 0x84a00;\n  *(__mpf_struct **)(puVar30 + -0xc) = unaff_s3;\n  piVar22 = *(int **)(pcVar25 + 0x7cf00);\n  *(code **)(puVar30 + -0x28) = pcVar27;\n  *(int **)(puVar30 + -0x14) = piVar20;\n  *(undefined4 *)(puVar30 + -4) = uVar31;\n  *(undefined4 *)(puVar30 + -8) = unaff_s4;\n  *(__mpf_struct **)(puVar30 + -0x10) = p_Var10;\n  *(mpf_srcptr *)(puVar30 + -0x18) = p_Var19;\n  *(int *)(puVar30 + -0x1c) = *piVar22;\n  p_Var17 = y;\n  if (p_Var15 == (__mpf_struct *)0x0) {\n    p_Var13->_mp_exp = 0;\n    p_Var13->_mp_size = 0;\n    puVar12 = (undefined1 *)0x0;\n    p_Var4 = p_Var13;\n  }\n  else {\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }\n  if (*(int *)(puVar30 + -0x1c) == *piVar22) {\n    return;\n  }\n  pcVar25 = *(code **)(pcVar27 + -0x7b70);\n  uVar31 = 0x1a7b4;\n  (*pcVar25)();\n  *(code **)(puVar30 + -0x70) = pcVar25 + 0x84880;\n  *(undefined4 *)(puVar30 + -0x3c) = uVar31;\n  *(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40;\n  *(undefined4 *)(puVar30 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar30 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar30 + -0x4c) = unaff_s5;\n  *(__mpf_struct **)(puVar30 + -0x50) = p_Var15;\n  *(int **)(puVar30 + -0x54) = piVar22;\n  *(__mpf_struct **)(puVar30 + -0x58) = p_Var10;\n  *(__mpf_struct **)(puVar30 + -0x5c) = p_Var13;\n  *(mpf_srcptr *)(puVar30 + -0x60) = p_Var19;\n  *(__mpf_struct **)(puVar30 + -0x38) = p_Var4;\n  *(mpf_srcptr *)(puVar30 + -0x30) = p_Var17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);\n  }\n  puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100);\n  piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar30 + -0x70);\n  do {\n    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  } while ((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0);\n  puVar23 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar25 = *(code **)(iVar2 + -0x7f3c);\n  uVar11 = 100;\n  uVar14 = 0;\n  puVar6 = puVar5;\n  while ((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))) {\n    *puVar5 = (char)iVar7;\n    iVar7 = (*pcVar25)(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n    uVar14 = uVar11 * 3 >> 1;\n    if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }\n    pcVar25 = *(code **)(iVar2 + -0x7f3c);\n    puVar5 = puVar6 + uVar21;\n    uVar14 = uVar21;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12);\n  iVar2 = *(int *)(puVar30 + -0x70);\n  uVar21 = uVar11;\n  if (uVar11 <= uVar14) {\n    uVar21 = uVar11 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }\n  pcVar25 = *(code **)(iVar2 + -0x7ae8);\n  uVar31 = *(undefined4 *)(puVar30 + -0x38);\n  uVar16 = *(undefined4 *)(puVar30 + -0x30);\n  puVar6[uVar14] = 0;\n  iVar2 = (*pcVar25)(uVar31,puVar6,uVar16);\n  (*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21);\n  if (iVar2 != -1) {\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "mp_limb_t mVar3;" type_identifier identifier ;) (declaration "__mpf_struct *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "undefined1 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "mpf_srcptr p_Var8;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar9;" type_identifier (pointer_declarator "*pmVar9" * identifier) ;) (declaration "__mpf_struct *p_Var10;" type_identifier (pointer_declarator "*p_Var10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "__mpf_struct *p_Var13;" type_identifier (pointer_declarator "*p_Var13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "__mpf_struct *p_Var15;" type_identifier (pointer_declarator "*p_Var15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "mpf_srcptr p_Var17;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar18;" type_identifier (pointer_declarator "*pmVar18" * identifier) ;) (declaration "mpf_srcptr p_Var19;" type_identifier identifier ;) (declaration "int *piVar20;" primitive_type (pointer_declarator "*piVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "__mpf_struct *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "__mpf_struct *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined1 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "undefined1 *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined4 uVar31;" type_identifier identifier ;) (declaration "undefined1 auStack_50 [16];" type_identifier (array_declarator "auStack_50 [16]" identifier [ number_literal ]) ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "mpf_t d;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar5 = auStack_50;" (assignment_expression "puVar5 = auStack_50" identifier = identifier) ;) (expression_statement "puVar28 = auStack_50;" (assignment_expression "puVar28 = auStack_50" identifier = identifier) ;) (expression_statement "iVar2 = x->_mp_size;" (assignment_expression "iVar2 = x->_mp_size" identifier = (field_expression "x->_mp_size" identifier -> field_identifier)) ;) (expression_statement "iVar7 = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "iVar7 = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 == 0) {\n    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    p_Var10 = rdiff;\n  }\n  else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    p_Var10 = rdiff;\n  }" { (expression_statement "p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0);" (assignment_expression "p_Var15 = (__mpf_struct *)(uint)(y->_mp_size != 0)" identifier = (cast_expression "(__mpf_struct *)(uint)(y->_mp_size != 0)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(y->_mp_size != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(y->_mp_size != 0)" ( (binary_expression "y->_mp_size != 0" (field_expression "y->_mp_size" identifier -> field_identifier) != number_literal) ))))) ;) (expression_statement "(*(code *)PTR___gmpf_set_ui_00097428)();" (call_expression "(*(code *)PTR___gmpf_set_ui_00097428)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_ui_00097428)" ( (pointer_expression "*(code *)PTR___gmpf_set_ui_00097428" * (cast_expression "(code *)PTR___gmpf_set_ui_00097428" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "p_Var10 = rdiff;" (assignment_expression "p_Var10 = rdiff" identifier = identifier) ;) }) (else_clause "else {\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    d[0]._mp_prec = iVar2 + rdiff->_mp_prec;\n    uVar14 = (d[0]._mp_prec + 1) * 4;\n    if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }\n    unaff_s3 = d;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);\n    if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }\n    p_Var15 = unaff_s3;\n    y = x;\n    (*(code *)PTR___gmpf_div_00097230)(rdiff);\n    p_Var10 = (__mpf_struct *)__tmp_marker;\n    unaff_s2 = rdiff;\n    puVar5 = puVar28;\n    if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -iVar2;\n    }" { (expression_statement "iVar2 = -iVar2;" (assignment_expression "iVar2 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) })) (expression_statement "d[0]._mp_prec = iVar2 + rdiff->_mp_prec;" (assignment_expression "d[0]._mp_prec = iVar2 + rdiff->_mp_prec" (field_expression "d[0]._mp_prec" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) = (binary_expression "iVar2 + rdiff->_mp_prec" identifier + (field_expression "rdiff->_mp_prec" identifier -> field_identifier))) ;) (expression_statement "uVar14 = (d[0]._mp_prec + 1) * 4;" (assignment_expression "uVar14 = (d[0]._mp_prec + 1) * 4" identifier = (binary_expression "(d[0]._mp_prec + 1) * 4" (parenthesized_expression "(d[0]._mp_prec + 1)" ( (binary_expression "d[0]._mp_prec + 1" (field_expression "d[0]._mp_prec" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) + number_literal) )) * number_literal)) ;) (if_statement "if (uVar14 < 0x7f01) {\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }\n    else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" if (parenthesized_expression "(uVar14 < 0x7f01)" ( (binary_expression "uVar14 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -(uVar14 + 7 & 0xfffffff8);\n      puVar28 = auStack_50 + iVar2;\n      d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);\n    }" { (expression_statement "iVar2 = -(uVar14 + 7 & 0xfffffff8);" (assignment_expression "iVar2 = -(uVar14 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar14 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar14 + 7 & 0xfffffff8)" ( (binary_expression "uVar14 + 7 & 0xfffffff8" (binary_expression "uVar14 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = auStack_50 + iVar2;" (assignment_expression "puVar28 = auStack_50 + iVar2" identifier = (binary_expression "auStack_50 + iVar2" identifier + identifier)) ;) (expression_statement "d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14);" (assignment_expression "d[0]._mp_d = (mp_limb_t *)((int)d + iVar2 + -0x14)" (field_expression "d[0]._mp_d" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)((int)d + iVar2 + -0x14)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)d + iVar2 + -0x14)" ( (binary_expression "(int)d + iVar2 + -0x14" (binary_expression "(int)d + iVar2" (cast_expression "(int)d" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" else (compound_statement "{\n      d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);\n    }" { (expression_statement "d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker);" (assignment_expression "d[0]._mp_d = (mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" (field_expression "d[0]._mp_d" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(mp_limb_t *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker)" ( (type_descriptor "mp_limb_t *" 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 "unaff_s3 = d;" (assignment_expression "unaff_s3 = d" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y)" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,x,y)" ( identifier , identifier , identifier ))) ;) (if_statement "if (d[0]._mp_size < 0) {\n      d[0]._mp_size = -d[0]._mp_size;\n    }" if (parenthesized_expression "(d[0]._mp_size < 0)" ( (binary_expression "d[0]._mp_size < 0" (field_expression "d[0]._mp_size" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) < number_literal) )) (compound_statement "{\n      d[0]._mp_size = -d[0]._mp_size;\n    }" { (expression_statement "d[0]._mp_size = -d[0]._mp_size;" (assignment_expression "d[0]._mp_size = -d[0]._mp_size" (field_expression "d[0]._mp_size" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier) = (unary_expression "-d[0]._mp_size" - (field_expression "d[0]._mp_size" (subscript_expression "d[0]" identifier [ number_literal ]) . field_identifier))) ;) })) (expression_statement "p_Var15 = unaff_s3;" (assignment_expression "p_Var15 = unaff_s3" identifier = identifier) ;) (expression_statement "y = x;" (assignment_expression "y = x" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_div_00097230)(rdiff);" (call_expression "(*(code *)PTR___gmpf_div_00097230)(rdiff)" (parenthesized_expression "(*(code *)PTR___gmpf_div_00097230)" ( (pointer_expression "*(code *)PTR___gmpf_div_00097230" * (cast_expression "(code *)PTR___gmpf_div_00097230" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(rdiff)" ( identifier ))) ;) (expression_statement "p_Var10 = (__mpf_struct *)__tmp_marker;" (assignment_expression "p_Var10 = (__mpf_struct *)__tmp_marker" identifier = (cast_expression "(__mpf_struct *)__tmp_marker" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "unaff_s2 = rdiff;" (assignment_expression "unaff_s2 = rdiff" identifier = identifier) ;) (expression_statement "puVar5 = puVar28;" (assignment_expression "puVar5 = puVar28" 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 (iVar7 == *(int *)puVar1) {\n    return;\n  }" if (parenthesized_expression "(iVar7 == *(int *)puVar1)" ( (binary_expression "iVar7 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar31 = 0x1a418;" (assignment_expression "uVar31 = 0x1a418" identifier = number_literal) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar24 = 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 "puVar26 = puVar24 + 0x84c20;" (assignment_expression "puVar26 = puVar24 + 0x84c20" identifier = (binary_expression "puVar24 + 0x84c20" identifier + number_literal)) ;) (expression_statement "puVar30 = puVar5 + -0x40;" (assignment_expression "puVar30 = puVar5 + -0x40" identifier = (binary_expression "puVar5 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar5 + -0x40;" (assignment_expression "puVar12 = puVar5 + -0x40" identifier = (binary_expression "puVar5 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar29 = puVar5 + -0x40;" (assignment_expression "puVar29 = puVar5 + -0x40" identifier = (binary_expression "puVar5 + -0x40" identifier + number_literal)) ;) (expression_statement "*(mpf_srcptr *)(puVar5 + -0x14) = x;" (assignment_expression "*(mpf_srcptr *)(puVar5 + -0x14) = x" (pointer_expression "*(mpf_srcptr *)(puVar5 + -0x14)" * (cast_expression "(mpf_srcptr *)(puVar5 + -0x14)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x14)" ( (binary_expression "puVar5 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar5 + -0x18) = puVar1;" (assignment_expression "*(undefined **)(puVar5 + -0x18) = puVar1" (pointer_expression "*(undefined **)(puVar5 + -0x18)" * (cast_expression "(undefined **)(puVar5 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x18)" ( (binary_expression "puVar5 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar20 = *(int **)(puVar24 + 0x7d120);" (assignment_expression "piVar20 = *(int **)(puVar24 + 0x7d120)" identifier = (pointer_expression "*(int **)(puVar24 + 0x7d120)" * (cast_expression "(int **)(puVar24 + 0x7d120)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7d120)" ( (binary_expression "puVar24 + 0x7d120" identifier + number_literal) ))))) ;) (expression_statement "p_Var19 = (mpf_srcptr)p_Var15->_mp_size;" (assignment_expression "p_Var19 = (mpf_srcptr)p_Var15->_mp_size" identifier = (cast_expression "(mpf_srcptr)p_Var15->_mp_size" ( (type_descriptor "mpf_srcptr" type_identifier) ) (field_expression "p_Var15->_mp_size" identifier -> field_identifier))) ;) (expression_statement "*(undefined1 **)(puVar5 + -8) = auStack_50;" (assignment_expression "*(undefined1 **)(puVar5 + -8) = auStack_50" (pointer_expression "*(undefined1 **)(puVar5 + -8)" * (cast_expression "(undefined1 **)(puVar5 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -8)" ( (binary_expression "puVar5 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar5 + -0x10) = unaff_s2;" (assignment_expression "*(__mpf_struct **)(puVar5 + -0x10) = unaff_s2" (pointer_expression "*(__mpf_struct **)(puVar5 + -0x10)" * (cast_expression "(__mpf_struct **)(puVar5 + -0x10)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x10)" ( (binary_expression "puVar5 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar5 + -4) = uVar31;" (assignment_expression "*(undefined4 *)(puVar5 + -4) = uVar31" (pointer_expression "*(undefined4 *)(puVar5 + -4)" * (cast_expression "(undefined4 *)(puVar5 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -4)" ( (binary_expression "puVar5 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar5 + -0xc) = unaff_s3;" (assignment_expression "*(__mpf_struct **)(puVar5 + -0xc) = unaff_s3" (pointer_expression "*(__mpf_struct **)(puVar5 + -0xc)" * (cast_expression "(__mpf_struct **)(puVar5 + -0xc)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0xc)" ( (binary_expression "puVar5 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar5 + -0x30) = puVar26;" (assignment_expression "*(undefined **)(puVar5 + -0x30) = puVar26" (pointer_expression "*(undefined **)(puVar5 + -0x30)" * (cast_expression "(undefined **)(puVar5 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x30)" ( (binary_expression "puVar5 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar5 + -0x1c) = *piVar20;" (assignment_expression "*(int *)(puVar5 + -0x1c) = *piVar20" (pointer_expression "*(int *)(puVar5 + -0x1c)" * (cast_expression "(int *)(puVar5 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x1c)" ( (binary_expression "puVar5 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar20" * identifier)) ;) (if_statement "if ((int)p_Var19 < 1) {\n    pcVar25 = *(code **)(puVar24 + 0x7cdac);\n    p_Var13 = p_Var10;\n    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;\n    p_Var10->_mp_size = 0;\n    p_Var10->_mp_exp = 0;\n  }\n  else {\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }" if (parenthesized_expression "((int)p_Var19 < 1)" ( (binary_expression "(int)p_Var19 < 1" (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    pcVar25 = *(code **)(puVar24 + 0x7cdac);\n    p_Var13 = p_Var10;\n    if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;\n    p_Var10->_mp_size = 0;\n    p_Var10->_mp_exp = 0;\n  }" { (expression_statement "pcVar25 = *(code **)(puVar24 + 0x7cdac);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x7cdac)" identifier = (pointer_expression "*(code **)(puVar24 + 0x7cdac)" * (cast_expression "(code **)(puVar24 + 0x7cdac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7cdac)" ( (binary_expression "puVar24 + 0x7cdac" identifier + number_literal) ))))) ;) (expression_statement "p_Var13 = p_Var10;" (assignment_expression "p_Var13 = p_Var10" identifier = identifier) ;) (if_statement "if (p_Var19 != (mpf_srcptr)0x0) goto LAB_0001a630;" if (parenthesized_expression "(p_Var19 != (mpf_srcptr)0x0)" ( (binary_expression "p_Var19 != (mpf_srcptr)0x0" identifier != (cast_expression "(mpf_srcptr)0x0" ( (type_descriptor "mpf_srcptr" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0001a630;" goto statement_identifier ;)) (expression_statement "p_Var10->_mp_size = 0;" (assignment_expression "p_Var10->_mp_size = 0" (field_expression "p_Var10->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var10->_mp_exp = 0;" (assignment_expression "p_Var10->_mp_exp = 0" (field_expression "p_Var10->_mp_exp" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }" else (compound_statement "{\n    uVar14 = p_Var15->_mp_exp;\n    iVar2 = p_Var10->_mp_prec;\n    unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;\n    uVar11 = uVar14 & 1;\n    *(undefined4 *)(puVar5 + -0x20) = 0;\n    p_Var10->_mp_size = iVar2;\n    p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);\n    p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;\n    if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }\n    if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }\n    p_Var15 = (__mpf_struct *)0x0;\n    (*pcVar25)(p_Var10->_mp_d);\n    p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);\n    puVar26 = *(undefined **)(puVar5 + -0x30);\n    puVar12 = puVar29;\n    if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }\n  }" { (expression_statement "uVar14 = p_Var15->_mp_exp;" (assignment_expression "uVar14 = p_Var15->_mp_exp" identifier = (field_expression "p_Var15->_mp_exp" identifier -> field_identifier)) ;) (expression_statement "iVar2 = p_Var10->_mp_prec;" (assignment_expression "iVar2 = p_Var10->_mp_prec" identifier = (field_expression "p_Var10->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "unaff_s3 = (__mpf_struct *)p_Var15->_mp_d;" (assignment_expression "unaff_s3 = (__mpf_struct *)p_Var15->_mp_d" identifier = (cast_expression "(__mpf_struct *)p_Var15->_mp_d" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var15->_mp_d" identifier -> field_identifier))) ;) (expression_statement "uVar11 = uVar14 & 1;" (assignment_expression "uVar11 = uVar14 & 1" identifier = (binary_expression "uVar14 & 1" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar5 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar5 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar5 + -0x20)" * (cast_expression "(undefined4 *)(puVar5 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x20)" ( (binary_expression "puVar5 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "p_Var10->_mp_size = iVar2;" (assignment_expression "p_Var10->_mp_size = iVar2" (field_expression "p_Var10->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11);" (assignment_expression "p_Var17 = (mpf_srcptr)(iVar2 * 2 - uVar11)" identifier = (call_expression "(mpf_srcptr)(iVar2 * 2 - uVar11)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(iVar2 * 2 - uVar11)" ( (binary_expression "iVar2 * 2 - uVar11" (binary_expression "iVar2 * 2" identifier * number_literal) - identifier) )))) ;) (expression_statement "p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2;" (assignment_expression "p_Var10->_mp_exp = (int)(uVar14 + uVar11) / 2" (field_expression "p_Var10->_mp_exp" identifier -> field_identifier) = (binary_expression "(int)(uVar14 + uVar11) / 2" (cast_expression "(int)(uVar14 + uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar14 + uVar11)" ( (binary_expression "uVar14 + uVar11" identifier + identifier) ))) / number_literal)) ;) (if_statement "if ((uint)((int)p_Var17 * 4) < 0x7f01) {\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }\n    else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }" if (parenthesized_expression "((uint)((int)p_Var17 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)p_Var17 * 4) < 0x7f01" (call_expression "(uint)((int)p_Var17 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)p_Var17 * 4)" ( (binary_expression "(int)p_Var17 * 4" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);\n      puVar29 = puVar5 + iVar2 + -0x40;\n      y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);\n    }" { (expression_statement "iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -((int)p_Var17 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)p_Var17 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)p_Var17 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)p_Var17 * 4 + 7U & 0xfffffff8" (binary_expression "(int)p_Var17 * 4 + 7U" (binary_expression "(int)p_Var17 * 4" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar29 = puVar5 + iVar2 + -0x40;" (assignment_expression "puVar29 = puVar5 + iVar2 + -0x40" identifier = (binary_expression "puVar5 + iVar2 + -0x40" (binary_expression "puVar5 + iVar2" identifier + identifier) + number_literal)) ;) (expression_statement "y = (mpf_srcptr)(puVar5 + iVar2 + -0x30);" (assignment_expression "y = (mpf_srcptr)(puVar5 + iVar2 + -0x30)" identifier = (call_expression "(mpf_srcptr)(puVar5 + iVar2 + -0x30)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(puVar5 + iVar2 + -0x30)" ( (binary_expression "puVar5 + iVar2 + -0x30" (binary_expression "puVar5 + iVar2" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }" else (compound_statement "{\n      pcVar25 = *(code **)(puVar24 + 0x7ced0);\n      *(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;\n      y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n      p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);\n    }" { (expression_statement "pcVar25 = *(code **)(puVar24 + 0x7ced0);" (assignment_expression "pcVar25 = *(code **)(puVar24 + 0x7ced0)" identifier = (pointer_expression "*(code **)(puVar24 + 0x7ced0)" * (cast_expression "(code **)(puVar24 + 0x7ced0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7ced0)" ( (binary_expression "puVar24 + 0x7ced0" identifier + number_literal) ))))) ;) (expression_statement "*(mpf_srcptr *)(puVar5 + -0x24) = p_Var17;" (assignment_expression "*(mpf_srcptr *)(puVar5 + -0x24) = p_Var17" (pointer_expression "*(mpf_srcptr *)(puVar5 + -0x24)" * (cast_expression "(mpf_srcptr *)(puVar5 + -0x24)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x24)" ( (binary_expression "puVar5 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20);" (assignment_expression "y = (mpf_srcptr)(*pcVar25)(puVar5 + -0x20)" identifier = (call_expression "(mpf_srcptr)(*pcVar25)(puVar5 + -0x20)" (call_expression "(mpf_srcptr)(*pcVar25)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) ))) (argument_list "(puVar5 + -0x20)" ( (binary_expression "puVar5 + -0x20" identifier + number_literal) )))) ;) (expression_statement "puVar26 = *(undefined **)(puVar5 + -0x30);" (assignment_expression "puVar26 = *(undefined **)(puVar5 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar5 + -0x30)" * (cast_expression "(undefined **)(puVar5 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x30)" ( (binary_expression "puVar5 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24);" (assignment_expression "p_Var17 = *(mpf_srcptr *)(puVar5 + -0x24)" identifier = (pointer_expression "*(mpf_srcptr *)(puVar5 + -0x24)" * (cast_expression "(mpf_srcptr *)(puVar5 + -0x24)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x24)" ( (binary_expression "puVar5 + -0x24" identifier + number_literal) ))))) ;) }))) (if_statement "if ((int)p_Var17 < (int)p_Var19) {\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }" if (parenthesized_expression "((int)p_Var17 < (int)p_Var19)" ( (binary_expression "(int)p_Var17 < (int)p_Var19" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n      if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }\n    }" { (expression_statement "pcVar25 = *(code **)(puVar26 + -0x7f60);" (assignment_expression "pcVar25 = *(code **)(puVar26 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar26 + -0x7f60)" * (cast_expression "(code **)(puVar26 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7f60)" ( (binary_expression "puVar26 + -0x7f60" identifier + number_literal) ))))) ;) (if_statement "if (p_Var17 != (mpf_srcptr)0x0) {\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }" if (parenthesized_expression "(p_Var17 != (mpf_srcptr)0x0)" ( (binary_expression "p_Var17 != (mpf_srcptr)0x0" identifier != (cast_expression "(mpf_srcptr)0x0" ( (type_descriptor "mpf_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);\n        pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);\n        mVar3 = *pmVar9;\n        p_Var8 = y;\n        if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }\n        goto LAB_0001a530;\n      }" { (expression_statement "puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3);" (assignment_expression "puVar12 = (undefined1 *)((int)&p_Var17[-1]._mp_d + 3)" identifier = (cast_expression "(undefined1 *)((int)&p_Var17[-1]._mp_d + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var17[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var17[-1]._mp_d + 3" (cast_expression "(int)&p_Var17[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var17[-1]._mp_d" & (field_expression "p_Var17[-1]._mp_d" (subscript_expression "p_Var17[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4);" (assignment_expression "pmVar9 = (mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4)" identifier = (cast_expression "(mp_limb_t *)((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4)" ( (binary_expression "(int)unaff_s3 + ((int)p_Var19 - (int)p_Var17) * 4" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "((int)p_Var19 - (int)p_Var17) * 4" (parenthesized_expression "((int)p_Var19 - (int)p_Var17)" ( (binary_expression "(int)p_Var19 - (int)p_Var17" (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "mVar3 = *pmVar9;" (assignment_expression "mVar3 = *pmVar9" identifier = (pointer_expression "*pmVar9" * identifier)) ;) (expression_statement "p_Var8 = y;" (assignment_expression "p_Var8 = y" identifier = identifier) ;) (if_statement "if (puVar12 == (undefined1 *)0x0) {\n          y->_mp_prec = mVar3;\n        }\n        else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }" if (parenthesized_expression "(puVar12 == (undefined1 *)0x0)" ( (binary_expression "puVar12 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          y->_mp_prec = mVar3;\n        }" { (expression_statement "y->_mp_prec = mVar3;" (assignment_expression "y->_mp_prec = mVar3" (field_expression "y->_mp_prec" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }" else (compound_statement "{\n          do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);\n          *(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;\n        }" { (do_statement "do {\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          } while (puVar12 != (undefined1 *)0x0);" do (compound_statement "{\n            pmVar9 = pmVar9 + 1;\n            p_Var8->_mp_prec = mVar3;\n            puVar12 = puVar12 + -1;\n            mVar3 = *pmVar9;\n            p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n          }" { (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) (expression_statement "p_Var8->_mp_prec = mVar3;" (assignment_expression "p_Var8->_mp_prec = mVar3" (field_expression "p_Var8->_mp_prec" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) (expression_statement "mVar3 = *pmVar9;" (assignment_expression "mVar3 = *pmVar9" identifier = (pointer_expression "*pmVar9" * identifier)) ;) (expression_statement "p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;" (assignment_expression "p_Var8 = (mpf_srcptr)&p_Var8->_mp_size" identifier = (binary_expression "(mpf_srcptr)&p_Var8->_mp_size" (parenthesized_expression "(mpf_srcptr)" ( identifier )) & (field_expression "p_Var8->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(puVar12 != (undefined1 *)0x0)" ( (binary_expression "puVar12 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "*(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3;" (assignment_expression "*(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4) = mVar3" (pointer_expression "*(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4)" * (cast_expression "(mp_limb_t *)((int)y + (int)p_Var17 * 4 + -4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)y + (int)p_Var17 * 4 + -4)" ( (binary_expression "(int)y + (int)p_Var17 * 4 + -4" (binary_expression "(int)y + (int)p_Var17 * 4" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(int)p_Var17 * 4" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) + number_literal) )))) = identifier) ;) }))) (goto_statement "goto LAB_0001a530;" goto statement_identifier ;) })) }) (else_clause "else {\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }" else (compound_statement "{\n      p_Var8 = y;\n      iVar2 = (int)p_Var17 - (int)p_Var19;\n      if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }\n      mVar3 = unaff_s3->_mp_prec;\n      puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);\n      pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);\n      pmVar9 = pmVar18;\n      p_Var17 = p_Var19;\n      p_Var15 = unaff_s3;\n      if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }\n      *pmVar18 = mVar3;\n      p_Var19 = p_Var17;\nLAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);\n    }" { (expression_statement "p_Var8 = y;" (assignment_expression "p_Var8 = y" identifier = identifier) ;) (expression_statement "iVar2 = (int)p_Var17 - (int)p_Var19;" (assignment_expression "iVar2 = (int)p_Var17 - (int)p_Var19" identifier = (binary_expression "(int)p_Var17 - (int)p_Var19" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (p_Var19 != p_Var17) {\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(p_Var19 != p_Var17)" ( (binary_expression "p_Var19 != p_Var17" identifier != identifier) )) (compound_statement "{\n        do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);\n      }" { (do_statement "do {\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = iVar2 + -1;\n          p_Var8->_mp_prec = 0;\n          p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;\n        }" { (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "p_Var8->_mp_prec = 0;" (assignment_expression "p_Var8->_mp_prec = 0" (field_expression "p_Var8->_mp_prec" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var8 = (mpf_srcptr)&p_Var8->_mp_size;" (assignment_expression "p_Var8 = (mpf_srcptr)&p_Var8->_mp_size" identifier = (binary_expression "(mpf_srcptr)&p_Var8->_mp_size" (parenthesized_expression "(mpf_srcptr)" ( identifier )) & (field_expression "p_Var8->_mp_size" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "mVar3 = unaff_s3->_mp_prec;" (assignment_expression "mVar3 = unaff_s3->_mp_prec" identifier = (field_expression "unaff_s3->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3);" (assignment_expression "puVar12 = (undefined1 *)((int)&p_Var19[-1]._mp_d + 3)" identifier = (cast_expression "(undefined1 *)((int)&p_Var19[-1]._mp_d + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p_Var19[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var19[-1]._mp_d + 3" (cast_expression "(int)&p_Var19[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var19[-1]._mp_d" & (field_expression "p_Var19[-1]._mp_d" (subscript_expression "p_Var19[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4);" (assignment_expression "pmVar18 = (mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4)" identifier = (cast_expression "(mp_limb_t *)((int)y + ((int)p_Var17 - (int)p_Var19) * 4)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)y + ((int)p_Var17 - (int)p_Var19) * 4)" ( (binary_expression "(int)y + ((int)p_Var17 - (int)p_Var19) * 4" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "((int)p_Var17 - (int)p_Var19) * 4" (parenthesized_expression "((int)p_Var17 - (int)p_Var19)" ( (binary_expression "(int)p_Var17 - (int)p_Var19" (cast_expression "(int)p_Var17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) )))) ;) (expression_statement "pmVar9 = pmVar18;" (assignment_expression "pmVar9 = pmVar18" identifier = identifier) ;) (expression_statement "p_Var17 = p_Var19;" (assignment_expression "p_Var17 = p_Var19" identifier = identifier) ;) (expression_statement "p_Var15 = unaff_s3;" (assignment_expression "p_Var15 = unaff_s3" identifier = identifier) ;) (if_statement "if (puVar12 != (undefined1 *)0x0) {\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }" if (parenthesized_expression "(puVar12 != (undefined1 *)0x0)" ( (binary_expression "puVar12 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);\n        p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);\n        pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);\n      }" { (do_statement "do {\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        } while (puVar12 != (undefined1 *)0x0);" do (compound_statement "{\n          *pmVar9 = mVar3;\n          puVar12 = puVar12 + -1;\n          mVar3 = p_Var15->_mp_size;\n          pmVar9 = pmVar9 + 1;\n          p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;\n        }" { (expression_statement "*pmVar9 = mVar3;" (assignment_expression "*pmVar9 = mVar3" (pointer_expression "*pmVar9" * identifier) = identifier) ;) (expression_statement "puVar12 = puVar12 + -1;" (assignment_expression "puVar12 = puVar12 + -1" identifier = (binary_expression "puVar12 + -1" identifier + number_literal)) ;) (expression_statement "mVar3 = p_Var15->_mp_size;" (assignment_expression "mVar3 = p_Var15->_mp_size" identifier = (field_expression "p_Var15->_mp_size" identifier -> field_identifier)) ;) (expression_statement "pmVar9 = pmVar9 + 1;" (assignment_expression "pmVar9 = pmVar9 + 1" identifier = (binary_expression "pmVar9 + 1" identifier + number_literal)) ;) (expression_statement "p_Var15 = (__mpf_struct *)&p_Var15->_mp_size;" (assignment_expression "p_Var15 = (__mpf_struct *)&p_Var15->_mp_size" identifier = (cast_expression "(__mpf_struct *)&p_Var15->_mp_size" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Var15->_mp_size" & (field_expression "p_Var15->_mp_size" identifier -> field_identifier)))) ;) }) while (parenthesized_expression "(puVar12 != (undefined1 *)0x0)" ( (binary_expression "puVar12 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4);" (assignment_expression "p_Var17 = (mpf_srcptr)((int)p_Var19 * 4 + -4)" identifier = (call_expression "(mpf_srcptr)((int)p_Var19 * 4 + -4)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)p_Var19 * 4 + -4)" ( (binary_expression "(int)p_Var19 * 4 + -4" (binary_expression "(int)p_Var19 * 4" (cast_expression "(int)p_Var19" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3);" (assignment_expression "pmVar18 = pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3)" identifier = (binary_expression "pmVar18 + (int)((int)&p_Var19[-1]._mp_d + 3)" identifier + (cast_expression "(int)((int)&p_Var19[-1]._mp_d + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p_Var19[-1]._mp_d + 3)" ( (binary_expression "(int)&p_Var19[-1]._mp_d + 3" (cast_expression "(int)&p_Var19[-1]._mp_d" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p_Var19[-1]._mp_d" & (field_expression "p_Var19[-1]._mp_d" (subscript_expression "p_Var19[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) })) (expression_statement "*pmVar18 = mVar3;" (assignment_expression "*pmVar18 = mVar3" (pointer_expression "*pmVar18" * identifier) = identifier) ;) (expression_statement "p_Var19 = p_Var17;" (assignment_expression "p_Var19 = p_Var17" identifier = identifier) ;) (labeled_statement "LAB_0001a530:\n      pcVar25 = *(code **)(puVar26 + -0x7f60);" statement_identifier : (expression_statement "pcVar25 = *(code **)(puVar26 + -0x7f60);" (assignment_expression "pcVar25 = *(code **)(puVar26 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar26 + -0x7f60)" * (cast_expression "(code **)(puVar26 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7f60)" ( (binary_expression "puVar26 + -0x7f60" identifier + number_literal) ))))) ;)) }))) (expression_statement "p_Var15 = (__mpf_struct *)0x0;" (assignment_expression "p_Var15 = (__mpf_struct *)0x0" identifier = (cast_expression "(__mpf_struct *)0x0" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar25)(p_Var10->_mp_d);" (call_expression "(*pcVar25)(p_Var10->_mp_d)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(p_Var10->_mp_d)" ( (field_expression "p_Var10->_mp_d" identifier -> field_identifier) ))) ;) (expression_statement "p_Var13 = *(__mpf_struct **)(puVar5 + -0x20);" (assignment_expression "p_Var13 = *(__mpf_struct **)(puVar5 + -0x20)" identifier = (pointer_expression "*(__mpf_struct **)(puVar5 + -0x20)" * (cast_expression "(__mpf_struct **)(puVar5 + -0x20)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x20)" ( (binary_expression "puVar5 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar26 = *(undefined **)(puVar5 + -0x30);" (assignment_expression "puVar26 = *(undefined **)(puVar5 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar5 + -0x30)" * (cast_expression "(undefined **)(puVar5 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x30)" ( (binary_expression "puVar5 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar29;" (assignment_expression "puVar12 = puVar29" identifier = identifier) ;) (if_statement "if (p_Var13 != (__mpf_struct *)0x0) {\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }" if (parenthesized_expression "(p_Var13 != (__mpf_struct *)0x0)" ( (binary_expression "p_Var13 != (__mpf_struct *)0x0" identifier != (cast_expression "(__mpf_struct *)0x0" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar26 + -0x7a2c))();\n      puVar26 = *(undefined **)(puVar5 + -0x30);\n    }" { (expression_statement "(**(code **)(puVar26 + -0x7a2c))();" (call_expression "(**(code **)(puVar26 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar26 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar26 + -0x7a2c)" * (pointer_expression "*(code **)(puVar26 + -0x7a2c)" * (cast_expression "(code **)(puVar26 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7a2c)" ( (binary_expression "puVar26 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar26 = *(undefined **)(puVar5 + -0x30);" (assignment_expression "puVar26 = *(undefined **)(puVar5 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar5 + -0x30)" * (cast_expression "(undefined **)(puVar5 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar5 + -0x30)" ( (binary_expression "puVar5 + -0x30" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar5 + -0x1c) == *piVar20) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar5 + -0x1c) == *piVar20)" ( (binary_expression "*(int *)(puVar5 + -0x1c) == *piVar20" (pointer_expression "*(int *)(puVar5 + -0x1c)" * (cast_expression "(int *)(puVar5 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + -0x1c)" ( (binary_expression "puVar5 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar20" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar25 = *(code **)(puVar26 + -0x7b70);" (assignment_expression "pcVar25 = *(code **)(puVar26 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar26 + -0x7b70)" * (cast_expression "(code **)(puVar26 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x7b70)" ( (binary_expression "puVar26 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar30 = puVar12;" (assignment_expression "puVar30 = puVar12" identifier = identifier) ;) (labeled_statement "LAB_0001a630:\n  uVar31 = 0x1a638;" statement_identifier : (expression_statement "uVar31 = 0x1a638;" (assignment_expression "uVar31 = 0x1a638" identifier = number_literal) ;)) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar27 = pcVar25 + 0x84a00;" (assignment_expression "pcVar27 = pcVar25 + 0x84a00" identifier = (binary_expression "pcVar25 + 0x84a00" identifier + number_literal)) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0xc) = unaff_s3;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0xc) = unaff_s3" (pointer_expression "*(__mpf_struct **)(puVar30 + -0xc)" * (cast_expression "(__mpf_struct **)(puVar30 + -0xc)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0xc)" ( (binary_expression "puVar30 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar22 = *(int **)(pcVar25 + 0x7cf00);" (assignment_expression "piVar22 = *(int **)(pcVar25 + 0x7cf00)" identifier = (pointer_expression "*(int **)(pcVar25 + 0x7cf00)" * (cast_expression "(int **)(pcVar25 + 0x7cf00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x7cf00)" ( (binary_expression "pcVar25 + 0x7cf00" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar30 + -0x28) = pcVar27;" (assignment_expression "*(code **)(puVar30 + -0x28) = pcVar27" (pointer_expression "*(code **)(puVar30 + -0x28)" * (cast_expression "(code **)(puVar30 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar30 + -0x14) = piVar20;" (assignment_expression "*(int **)(puVar30 + -0x14) = piVar20" (pointer_expression "*(int **)(puVar30 + -0x14)" * (cast_expression "(int **)(puVar30 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x14)" ( (binary_expression "puVar30 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar30 + -4) = uVar31;" (assignment_expression "*(undefined4 *)(puVar30 + -4) = uVar31" (pointer_expression "*(undefined4 *)(puVar30 + -4)" * (cast_expression "(undefined4 *)(puVar30 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -4)" ( (binary_expression "puVar30 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar30 + -8) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar30 + -8) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar30 + -8)" * (cast_expression "(undefined4 *)(puVar30 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -8)" ( (binary_expression "puVar30 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0x10) = p_Var10;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0x10) = p_Var10" (pointer_expression "*(__mpf_struct **)(puVar30 + -0x10)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x10)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x10)" ( (binary_expression "puVar30 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar30 + -0x18) = p_Var19;" (assignment_expression "*(mpf_srcptr *)(puVar30 + -0x18) = p_Var19" (pointer_expression "*(mpf_srcptr *)(puVar30 + -0x18)" * (cast_expression "(mpf_srcptr *)(puVar30 + -0x18)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x18)" ( (binary_expression "puVar30 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar30 + -0x1c) = *piVar22;" (assignment_expression "*(int *)(puVar30 + -0x1c) = *piVar22" (pointer_expression "*(int *)(puVar30 + -0x1c)" * (cast_expression "(int *)(puVar30 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c)" ( (binary_expression "puVar30 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "p_Var17 = y;" (assignment_expression "p_Var17 = y" identifier = identifier) ;) (if_statement "if (p_Var15 == (__mpf_struct *)0x0) {\n    p_Var13->_mp_exp = 0;\n    p_Var13->_mp_size = 0;\n    puVar12 = (undefined1 *)0x0;\n    p_Var4 = p_Var13;\n  }\n  else {\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }" if (parenthesized_expression "(p_Var15 == (__mpf_struct *)0x0)" ( (binary_expression "p_Var15 == (__mpf_struct *)0x0" identifier == (cast_expression "(__mpf_struct *)0x0" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var13->_mp_exp = 0;\n    p_Var13->_mp_size = 0;\n    puVar12 = (undefined1 *)0x0;\n    p_Var4 = p_Var13;\n  }" { (expression_statement "p_Var13->_mp_exp = 0;" (assignment_expression "p_Var13->_mp_exp = 0" (field_expression "p_Var13->_mp_exp" identifier -> field_identifier) = number_literal) ;) (expression_statement "p_Var13->_mp_size = 0;" (assignment_expression "p_Var13->_mp_size = 0" (field_expression "p_Var13->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "puVar12 = (undefined1 *)0x0;" (assignment_expression "puVar12 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "p_Var4 = p_Var13;" (assignment_expression "p_Var4 = p_Var13" identifier = identifier) ;) }) (else_clause "else {\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }" else (compound_statement "{\n    p_Var10 = p_Var15;\n    if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }\n    p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);\n    if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }\n    (**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);\n    iVar2 = *(int *)(puVar30 + -0x28);\n    pcVar25 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }\n    puVar12 = puVar30 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar27 = *(code **)(puVar30 + -0x28);\n    if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    p_Var13->_mp_size = (int)p_Var10;\n    p_Var19 = y;\n  }" { (expression_statement "p_Var10 = p_Var15;" (assignment_expression "p_Var10 = p_Var15" identifier = identifier) ;) (if_statement "if ((int)p_Var15 < 0) {\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }" if (parenthesized_expression "((int)p_Var15 < 0)" ( (binary_expression "(int)p_Var15 < 0" (cast_expression "(int)p_Var15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      p_Var10 = (__mpf_struct *)-(int)p_Var15;\n    }" { (expression_statement "p_Var10 = (__mpf_struct *)-(int)p_Var15;" (assignment_expression "p_Var10 = (__mpf_struct *)-(int)p_Var15" identifier = (cast_expression "(__mpf_struct *)-(int)p_Var15" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)p_Var15" - (cast_expression "(int)p_Var15" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1);" (assignment_expression "p_Var4 = (__mpf_struct *)(p_Var13->_mp_prec + 1)" identifier = (cast_expression "(__mpf_struct *)(p_Var13->_mp_prec + 1)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var13->_mp_prec + 1)" ( (binary_expression "p_Var13->_mp_prec + 1" (field_expression "p_Var13->_mp_prec" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if ((int)p_Var4 <= (int)p_Var10) {\n      p_Var10 = p_Var4;\n    }" if (parenthesized_expression "((int)p_Var4 <= (int)p_Var10)" ( (binary_expression "(int)p_Var4 <= (int)p_Var10" (cast_expression "(int)p_Var4" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)p_Var10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      p_Var10 = p_Var4;\n    }" { (expression_statement "p_Var10 = p_Var4;" (assignment_expression "p_Var10 = p_Var4" identifier = identifier) ;) })) (expression_statement "(**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10);" (call_expression "(**(code **)(pcVar25 + 0x7cb14))(p_Var13->_mp_d,p_Var10)" (parenthesized_expression "(**(code **)(pcVar25 + 0x7cb14))" ( (pointer_expression "**(code **)(pcVar25 + 0x7cb14)" * (pointer_expression "*(code **)(pcVar25 + 0x7cb14)" * (cast_expression "(code **)(pcVar25 + 0x7cb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x7cb14)" ( (binary_expression "pcVar25 + 0x7cb14" identifier + number_literal) ))))) )) (argument_list "(p_Var13->_mp_d,p_Var10)" ( (field_expression "p_Var13->_mp_d" identifier -> field_identifier) , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x28)" identifier = (pointer_expression "*(int *)(puVar30 + -0x28)" * (cast_expression "(int *)(puVar30 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(iVar2 + -0x7a40);" (assignment_expression "pcVar25 = *(code **)(iVar2 + -0x7a40)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7a40)" * (cast_expression "(code **)(iVar2 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7a40)" ( (binary_expression "iVar2 + -0x7a40" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }" if (parenthesized_expression "(**(char **)(iVar2 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar2 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar25)(uVar31);\n      iVar2 = *(int *)(puVar30 + -0x28);\n    }" { (expression_statement "uVar31 = *(undefined4 *)(iVar2 + -0x7dc4);" (assignment_expression "uVar31 = *(undefined4 *)(iVar2 + -0x7dc4)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar2 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) ))))) ;) (expression_statement "**(char **)(iVar2 + -0x7eb8) = '\x01';" (assignment_expression "**(char **)(iVar2 + -0x7eb8) = '\x01'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "(*pcVar25)(uVar31);" (call_expression "(*pcVar25)(uVar31)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(uVar31)" ( identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x28)" identifier = (pointer_expression "*(int *)(puVar30 + -0x28)" * (cast_expression "(int *)(puVar30 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) ))))) ;) })) (expression_statement "puVar12 = puVar30 + -0x20;" (assignment_expression "puVar12 = puVar30 + -0x20" identifier = (binary_expression "puVar30 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);" (call_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" (parenthesized_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (binary_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4" (pointer_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" * (cast_expression "(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (binary_expression "*(int *)(iVar2 + -0x7dc4) + 0x10" (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" ( (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) , identifier , number_literal ))) ;) (expression_statement "pcVar27 = *(code **)(puVar30 + -0x28);" (assignment_expression "pcVar27 = *(code **)(puVar30 + -0x28)" identifier = (pointer_expression "*(code **)(puVar30 + -0x28)" * (cast_expression "(code **)(puVar30 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x28)" ( (binary_expression "puVar30 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if ((int)y < 0) {\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }\n    else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }" if (parenthesized_expression "((int)y < 0)" ( (binary_expression "(int)y < 0" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      p_Var17 = (mpf_srcptr)-(int)y;\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * -2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }" { (expression_statement "p_Var17 = (mpf_srcptr)-(int)y;" (assignment_expression "p_Var17 = (mpf_srcptr)-(int)y" identifier = (binary_expression "(mpf_srcptr)-(int)y" (parenthesized_expression "(mpf_srcptr)" ( identifier )) - (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);" (assignment_expression "p_Var4 = *(__mpf_struct **)(puVar30 + -0x20)" identifier = (pointer_expression "*(__mpf_struct **)(puVar30 + -0x20)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x20)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x20)" ( (binary_expression "puVar30 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (int)y * -2 + 1;" (assignment_expression "uVar14 = (int)y * -2 + 1" identifier = (binary_expression "(int)y * -2 + 1" (binary_expression "(int)y * -2" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar14 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14;" (assignment_expression "p_Var13->_mp_exp = (int)&y->_mp_prec + (uint)p_Var4 % uVar14" (field_expression "p_Var13->_mp_exp" identifier -> field_identifier) = (binary_expression "(int)&y->_mp_prec + (uint)p_Var4 % uVar14" (cast_expression "(int)&y->_mp_prec" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&y->_mp_prec" & (field_expression "y->_mp_prec" identifier -> field_identifier))) + (binary_expression "(uint)p_Var4 % uVar14" (cast_expression "(uint)p_Var4" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier))) ;) (if_statement "if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }" if (parenthesized_expression "((int)p_Var15 < 0)" ( (binary_expression "(int)p_Var15 < 0" (cast_expression "(int)p_Var15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }" { (expression_statement "p_Var10 = (__mpf_struct *)-(int)p_Var10;" (assignment_expression "p_Var10 = (__mpf_struct *)-(int)p_Var10" identifier = (cast_expression "(__mpf_struct *)-(int)p_Var10" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)p_Var10" - (cast_expression "(int)p_Var10" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }) (else_clause "else {\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }" else (compound_statement "{\n      p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);\n      uVar14 = (int)y * 2 + 1;\n      if (uVar14 == 0) {\n        trap(7);\n      }\n      p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;\n      if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }\n    }" { (expression_statement "p_Var4 = *(__mpf_struct **)(puVar30 + -0x20);" (assignment_expression "p_Var4 = *(__mpf_struct **)(puVar30 + -0x20)" identifier = (pointer_expression "*(__mpf_struct **)(puVar30 + -0x20)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x20)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x20)" ( (binary_expression "puVar30 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = (int)y * 2 + 1;" (assignment_expression "uVar14 = (int)y * 2 + 1" identifier = (binary_expression "(int)y * 2 + 1" (binary_expression "(int)y * 2" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar14 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y;" (assignment_expression "p_Var13->_mp_exp = (uint)p_Var4 % uVar14 - (int)y" (field_expression "p_Var13->_mp_exp" identifier -> field_identifier) = (binary_expression "(uint)p_Var4 % uVar14 - (int)y" (binary_expression "(uint)p_Var4 % uVar14" (cast_expression "(uint)p_Var4" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)p_Var15 < 0) {\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }" if (parenthesized_expression "((int)p_Var15 < 0)" ( (binary_expression "(int)p_Var15 < 0" (cast_expression "(int)p_Var15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        p_Var10 = (__mpf_struct *)-(int)p_Var10;\n      }" { (expression_statement "p_Var10 = (__mpf_struct *)-(int)p_Var10;" (assignment_expression "p_Var10 = (__mpf_struct *)-(int)p_Var10" identifier = (cast_expression "(__mpf_struct *)-(int)p_Var10" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)p_Var10" - (cast_expression "(int)p_Var10" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }))) (expression_statement "p_Var13->_mp_size = (int)p_Var10;" (assignment_expression "p_Var13->_mp_size = (int)p_Var10" (field_expression "p_Var13->_mp_size" identifier -> field_identifier) = (cast_expression "(int)p_Var10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "p_Var19 = y;" (assignment_expression "p_Var19 = y" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar30 + -0x1c) == *piVar22) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(puVar30 + -0x1c) == *piVar22)" ( (binary_expression "*(int *)(puVar30 + -0x1c) == *piVar22" (pointer_expression "*(int *)(puVar30 + -0x1c)" * (cast_expression "(int *)(puVar30 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x1c)" ( (binary_expression "puVar30 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar22" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar25 = *(code **)(pcVar27 + -0x7b70);" (assignment_expression "pcVar25 = *(code **)(pcVar27 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar27 + -0x7b70)" * (cast_expression "(code **)(pcVar27 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + -0x7b70)" ( (binary_expression "pcVar27 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = 0x1a7b4;" (assignment_expression "uVar31 = 0x1a7b4" identifier = number_literal) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar30 + -0x70) = pcVar25 + 0x84880;" (assignment_expression "*(code **)(puVar30 + -0x70) = pcVar25 + 0x84880" (pointer_expression "*(code **)(puVar30 + -0x70)" * (cast_expression "(code **)(puVar30 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) )))) = (binary_expression "pcVar25 + 0x84880" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x3c) = uVar31;" (assignment_expression "*(undefined4 *)(puVar30 + -0x3c) = uVar31" (pointer_expression "*(undefined4 *)(puVar30 + -0x3c)" * (cast_expression "(undefined4 *)(puVar30 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x3c)" ( (binary_expression "puVar30 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40;" (assignment_expression "*(undefined1 **)(puVar30 + -0x40) = puVar5 + -0x40" (pointer_expression "*(undefined1 **)(puVar30 + -0x40)" * (cast_expression "(undefined1 **)(puVar30 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x40)" ( (binary_expression "puVar30 + -0x40" identifier + number_literal) )))) = (binary_expression "puVar5 + -0x40" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar30 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar30 + -0x44)" * (cast_expression "(undefined4 *)(puVar30 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x44)" ( (binary_expression "puVar30 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar30 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar30 + -0x48)" * (cast_expression "(undefined4 *)(puVar30 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x48)" ( (binary_expression "puVar30 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar30 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar30 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar30 + -0x4c)" * (cast_expression "(undefined4 *)(puVar30 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x4c)" ( (binary_expression "puVar30 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0x50) = p_Var15;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0x50) = p_Var15" (pointer_expression "*(__mpf_struct **)(puVar30 + -0x50)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x50)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x50)" ( (binary_expression "puVar30 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar30 + -0x54) = piVar22;" (assignment_expression "*(int **)(puVar30 + -0x54) = piVar22" (pointer_expression "*(int **)(puVar30 + -0x54)" * (cast_expression "(int **)(puVar30 + -0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x54)" ( (binary_expression "puVar30 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0x58) = p_Var10;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0x58) = p_Var10" (pointer_expression "*(__mpf_struct **)(puVar30 + -0x58)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x58)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x58)" ( (binary_expression "puVar30 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0x5c) = p_Var13;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0x5c) = p_Var13" (pointer_expression "*(__mpf_struct **)(puVar30 + -0x5c)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x5c)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x5c)" ( (binary_expression "puVar30 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar30 + -0x60) = p_Var19;" (assignment_expression "*(mpf_srcptr *)(puVar30 + -0x60) = p_Var19" (pointer_expression "*(mpf_srcptr *)(puVar30 + -0x60)" * (cast_expression "(mpf_srcptr *)(puVar30 + -0x60)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x60)" ( (binary_expression "puVar30 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar30 + -0x38) = p_Var4;" (assignment_expression "*(__mpf_struct **)(puVar30 + -0x38) = p_Var4" (pointer_expression "*(__mpf_struct **)(puVar30 + -0x38)" * (cast_expression "(__mpf_struct **)(puVar30 + -0x38)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + -0x38)" ( (binary_expression "puVar30 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar30 + -0x30) = p_Var17;" (assignment_expression "*(mpf_srcptr *)(puVar30 + -0x30) = p_Var17" (pointer_expression "*(mpf_srcptr *)(puVar30 + -0x30)" * (cast_expression "(mpf_srcptr *)(puVar30 + -0x30)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x30)" ( (binary_expression "puVar30 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);\n  }" if (parenthesized_expression "(puVar12 == (undefined1 *)0x0)" ( (binary_expression "puVar12 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);\n  }" { (expression_statement "puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54);" (assignment_expression "puVar12 = (undefined1 *)**(int **)(pcVar25 + 0x7cb54)" identifier = (cast_expression "(undefined1 *)**(int **)(pcVar25 + 0x7cb54)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(pcVar25 + 0x7cb54)" * (pointer_expression "*(int **)(pcVar25 + 0x7cb54)" * (cast_expression "(int **)(pcVar25 + 0x7cb54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x7cb54)" ( (binary_expression "pcVar25 + 0x7cb54" identifier + number_literal) ))))))) ;) })) (expression_statement "puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100);" (assignment_expression "puVar5 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar25 + 0x7cd4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar25 + 0x7cd4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar25 + 0x7cd4c)" * (pointer_expression "*(undefined4 **)(pcVar25 + 0x7cd4c)" * (cast_expression "(undefined4 **)(pcVar25 + 0x7cd4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x7cd4c)" ( (binary_expression "pcVar25 + 0x7cd4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal ))))) ;) (expression_statement "piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))();" (assignment_expression "piVar20 = (int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar30 + -0x70) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar30 + -0x70) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar30 + -0x70) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x70) + -0x7f94)" ( (binary_expression "*(int *)(puVar30 + -0x70) + -0x7f94" (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) (do_statement "do {\n    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  } while ((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0);" do (compound_statement "{\n    iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }" { (expression_statement "iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12);" (assignment_expression "iVar7 = (**(code **)(iVar2 + -0x7f3c))(puVar12)" identifier = (call_expression "(**(code **)(iVar2 + -0x7f3c))(puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar2 + -0x7f3c)" * (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar20 + iVar7 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar20 + iVar7 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar20 + iVar7 * 2)" * (cast_expression "(ushort *)(*piVar20 + iVar7 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + iVar7 * 2)" ( (binary_expression "*piVar20 + iVar7 * 2" (pointer_expression "*piVar20" * identifier) + (binary_expression "iVar7 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar23 = *(undefined4 **)(iVar2 + -0x7aa0);" (assignment_expression "puVar23 = *(undefined4 **)(iVar2 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "pcVar25 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar25 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = 100;" (assignment_expression "uVar11 = 100" identifier = number_literal) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puVar5;" (assignment_expression "puVar6 = puVar5" identifier = identifier) ;) (while_statement "while ((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))) {\n    *puVar5 = (char)iVar7;\n    iVar7 = (*pcVar25)(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n    uVar14 = uVar11 * 3 >> 1;\n    if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }\n    pcVar25 = *(code **)(iVar2 + -0x7f3c);\n    puVar5 = puVar6 + uVar21;\n    uVar14 = uVar21;\n  }" while (parenthesized_expression "((iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0))" ( (binary_expression "iVar7 != -1 && (uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0)" (binary_expression "iVar7 != -1" identifier != number_literal) && (parenthesized_expression "(uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0)" ( (comma_expression "uVar21 = uVar14 + 1, (*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0" (assignment_expression "uVar21 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar20 + iVar7 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar20 + iVar7 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar20 + iVar7 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar20 + iVar7 * 2)" * (cast_expression "(ushort *)(*piVar20 + iVar7 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar20 + iVar7 * 2)" ( (binary_expression "*piVar20 + iVar7 * 2" (pointer_expression "*piVar20" * identifier) + (binary_expression "iVar7 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n    *puVar5 = (char)iVar7;\n    iVar7 = (*pcVar25)(puVar12);\n    iVar2 = *(int *)(puVar30 + -0x70);\n    uVar14 = uVar11 * 3 >> 1;\n    if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }\n    pcVar25 = *(code **)(iVar2 + -0x7f3c);\n    puVar5 = puVar6 + uVar21;\n    uVar14 = uVar21;\n  }" { (expression_statement "*puVar5 = (char)iVar7;" (assignment_expression "*puVar5 = (char)iVar7" (pointer_expression "*puVar5" * identifier) = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar7 = (*pcVar25)(puVar12);" (assignment_expression "iVar7 = (*pcVar25)(puVar12)" identifier = (call_expression "(*pcVar25)(puVar12)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar14 = uVar11 * 3 >> 1;" (assignment_expression "uVar14 = uVar11 * 3 >> 1" identifier = (binary_expression "uVar11 * 3 >> 1" (binary_expression "uVar11 * 3" identifier * number_literal) >> number_literal)) ;) (if_statement "if (uVar11 <= uVar21) {\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }" if (parenthesized_expression "(uVar11 <= uVar21)" ( (binary_expression "uVar11 <= uVar21" identifier <= identifier) )) (compound_statement "{\n      pcVar25 = (code *)*puVar23;\n      *(int *)(puVar30 + -100) = iVar7;\n      puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);\n      iVar2 = *(int *)(puVar30 + -0x70);\n      iVar7 = *(int *)(puVar30 + -100);\n      uVar11 = uVar14;\n    }" { (expression_statement "pcVar25 = (code *)*puVar23;" (assignment_expression "pcVar25 = (code *)*puVar23" identifier = (cast_expression "(code *)*puVar23" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar23" * identifier))) ;) (expression_statement "*(int *)(puVar30 + -100) = iVar7;" (assignment_expression "*(int *)(puVar30 + -100) = iVar7" (pointer_expression "*(int *)(puVar30 + -100)" * (cast_expression "(int *)(puVar30 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -100)" ( (binary_expression "puVar30 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14);" (assignment_expression "puVar6 = (undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14)" identifier = (cast_expression "(undefined1 *)(*pcVar25)(puVar6,uVar11,uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar25)(puVar6,uVar11,uVar14)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(puVar6,uVar11,uVar14)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(puVar30 + -100);" (assignment_expression "iVar7 = *(int *)(puVar30 + -100)" identifier = (pointer_expression "*(int *)(puVar30 + -100)" * (cast_expression "(int *)(puVar30 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -100)" ( (binary_expression "puVar30 + -100" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "pcVar25 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar25 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "puVar5 = puVar6 + uVar21;" (assignment_expression "puVar5 = puVar6 + uVar21" identifier = (binary_expression "puVar6 + uVar21" identifier + identifier)) ;) (expression_statement "uVar14 = uVar21;" (assignment_expression "uVar14 = uVar21" identifier = identifier) ;) })) (expression_statement "(**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12);" (call_expression "(**(code **)(iVar2 + -0x7d5c))(iVar7,puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar2 + -0x7d5c)" * (pointer_expression "*(code **)(iVar2 + -0x7d5c)" * (cast_expression "(code **)(iVar2 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7d5c)" ( (binary_expression "iVar2 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar7,puVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar21 = uVar11;" (assignment_expression "uVar21 = uVar11" identifier = identifier) ;) (if_statement "if (uVar11 <= uVar14) {\n    uVar21 = uVar11 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }" if (parenthesized_expression "(uVar11 <= uVar14)" ( (binary_expression "uVar11 <= uVar14" identifier <= identifier) )) (compound_statement "{\n    uVar21 = uVar11 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);\n    iVar2 = *(int *)(puVar30 + -0x70);\n  }" { (expression_statement "uVar21 = uVar11 * 3 >> 1;" (assignment_expression "uVar21 = uVar11 * 3 >> 1" identifier = (binary_expression "uVar11 * 3 >> 1" (binary_expression "uVar11 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21);" (assignment_expression "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar11,uVar21)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar2 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(puVar6,uVar11,uVar21)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar30 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar30 + -0x70)" identifier = (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar25 = *(code **)(iVar2 + -0x7ae8);" (assignment_expression "pcVar25 = *(code **)(iVar2 + -0x7ae8)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7ae8)" * (cast_expression "(code **)(iVar2 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7ae8)" ( (binary_expression "iVar2 + -0x7ae8" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = *(undefined4 *)(puVar30 + -0x38);" (assignment_expression "uVar31 = *(undefined4 *)(puVar30 + -0x38)" identifier = (pointer_expression "*(undefined4 *)(puVar30 + -0x38)" * (cast_expression "(undefined4 *)(puVar30 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x38)" ( (binary_expression "puVar30 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar16 = *(undefined4 *)(puVar30 + -0x30);" (assignment_expression "uVar16 = *(undefined4 *)(puVar30 + -0x30)" identifier = (pointer_expression "*(undefined4 *)(puVar30 + -0x30)" * (cast_expression "(undefined4 *)(puVar30 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x30)" ( (binary_expression "puVar30 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar6[uVar14] = 0;" (assignment_expression "puVar6[uVar14] = 0" (subscript_expression "puVar6[uVar14]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar2 = (*pcVar25)(uVar31,puVar6,uVar16);" (assignment_expression "iVar2 = (*pcVar25)(uVar31,puVar6,uVar16)" identifier = (call_expression "(*pcVar25)(uVar31,puVar6,uVar16)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(uVar31,puVar6,uVar16)" ( identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))(puVar6,uVar21)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar30 + -0x70) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar30 + -0x70) + -0x7e70)" ( (binary_expression "*(int *)(puVar30 + -0x70) + -0x7e70" (pointer_expression "*(int *)(puVar30 + -0x70)" * (cast_expression "(int *)(puVar30 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + -0x70)" ( (binary_expression "puVar30 + -0x70" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(puVar6,uVar21)" ( identifier , identifier ))) ;) (if_statement "if (iVar2 != -1) {\n    return;\n  }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}\n\n" (function_definition "int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" primitive_type (function_declarator "__gmpf_reldiff(int *param_1,int *param_2,int *param_3)" identifier (parameter_list "(int *param_1,int *param_2,int *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int *piVar14;" primitive_type (pointer_declarator "*piVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "int *piVar16;" primitive_type (pointer_declarator "*piVar16" * identifier) ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int *unaff_s2;" primitive_type (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 unaff_s4;" type_identifier identifier ;) (declaration "undefined4 unaff_s5;" type_identifier identifier ;) (declaration "undefined4 unaff_s6;" type_identifier identifier ;) (declaration "undefined4 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "code *pcVar22;" type_identifier (pointer_declarator "*pcVar22" * identifier) ;) (declaration "undefined *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "undefined4 uVar28;" type_identifier identifier ;) (declaration "undefined1 auStack_50 [16];" type_identifier (array_declarator "auStack_50 [16]" identifier [ number_literal ]) ;) (declaration "int *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined1 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "puVar3 = auStack_50;" (assignment_expression "puVar3 = auStack_50" identifier = identifier) ;) (expression_statement "puVar25 = auStack_50;" (assignment_expression "puVar25 = auStack_50" identifier = identifier) ;) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }" { (expression_statement "piVar14 = (int *)(uint)(param_3[1] != 0);" (assignment_expression "piVar14 = (int *)(uint)(param_3[1] != 0)" identifier = (cast_expression "(int *)(uint)(param_3[1] != 0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(param_3[1] != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3[1] != 0)" ( (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" identifier [ number_literal ]) != number_literal) ))))) ;) (expression_statement "(*(code *)PTR___gmpf_set_ui_00097428)();" (call_expression "(*(code *)PTR___gmpf_set_ui_00097428)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_ui_00097428)" ( (pointer_expression "*(code *)PTR___gmpf_set_ui_00097428" * (cast_expression "(code *)PTR___gmpf_set_ui_00097428" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar4 = param_1;" (assignment_expression "piVar4 = param_1" identifier = identifier) ;) }) (else_clause "else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" else (compound_statement "{\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" { (expression_statement "local_30 = (int *)0x0;" (assignment_expression "local_30 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }" if (parenthesized_expression "(iVar2 < 0)" ( (binary_expression "iVar2 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -iVar2;\n    }" { (expression_statement "iVar2 = -iVar2;" (assignment_expression "iVar2 = -iVar2" identifier = (unary_expression "-iVar2" - identifier)) ;) })) (expression_statement "local_2c = iVar2 + *param_1;" (assignment_expression "local_2c = iVar2 + *param_1" identifier = (binary_expression "iVar2 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar11 = (local_2c + 1) * 4;" (assignment_expression "uVar11 = (local_2c + 1) * 4" identifier = (binary_expression "(local_2c + 1) * 4" (parenthesized_expression "(local_2c + 1)" ( (binary_expression "local_2c + 1" identifier + number_literal) )) * number_literal)) ;) (if_statement "if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" if (parenthesized_expression "(uVar11 < 0x7f01)" ( (binary_expression "uVar11 < 0x7f01" identifier < number_literal) )) (compound_statement "{\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }" { (expression_statement "iVar2 = -(uVar11 + 7 & 0xfffffff8);" (assignment_expression "iVar2 = -(uVar11 + 7 & 0xfffffff8)" identifier = (unary_expression "-(uVar11 + 7 & 0xfffffff8)" - (parenthesized_expression "(uVar11 + 7 & 0xfffffff8)" ( (binary_expression "uVar11 + 7 & 0xfffffff8" (binary_expression "uVar11 + 7" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar25 = auStack_50 + iVar2;" (assignment_expression "puVar25 = auStack_50 + iVar2" identifier = (binary_expression "auStack_50 + iVar2" identifier + identifier)) ;) (expression_statement "local_20 = &stack0xffffffc0 + iVar2;" (assignment_expression "local_20 = &stack0xffffffc0 + iVar2" identifier = (binary_expression "&stack0xffffffc0 + iVar2" (pointer_expression "&stack0xffffffc0" & identifier) + identifier)) ;) }) (else_clause "else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" else (compound_statement "{\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" { (expression_statement "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" ( (type_descriptor "undefined1 *" 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 "unaff_s3 = &local_2c;" (assignment_expression "unaff_s3 = &local_2c" identifier = (pointer_expression "&local_2c" & identifier)) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s3,param_2,param_3)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_28 < 0) {\n      local_28 = -local_28;\n    }" if (parenthesized_expression "(local_28 < 0)" ( (binary_expression "local_28 < 0" identifier < number_literal) )) (compound_statement "{\n      local_28 = -local_28;\n    }" { (expression_statement "local_28 = -local_28;" (assignment_expression "local_28 = -local_28" identifier = (unary_expression "-local_28" - identifier)) ;) })) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" identifier = identifier) ;) (expression_statement "param_3 = param_2;" (assignment_expression "param_3 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_div_00097230)(param_1);" (call_expression "(*(code *)PTR___gmpf_div_00097230)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpf_div_00097230)" ( (pointer_expression "*(code *)PTR___gmpf_div_00097230" * (cast_expression "(code *)PTR___gmpf_div_00097230" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "piVar4 = local_30;" (assignment_expression "piVar4 = local_30" identifier = identifier) ;) (expression_statement "unaff_s2 = param_1;" (assignment_expression "unaff_s2 = param_1" identifier = identifier) ;) (expression_statement "puVar3 = puVar25;" (assignment_expression "puVar3 = puVar25" identifier = identifier) ;) (if_statement "if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != (int *)0x0)" ( (binary_expression "local_30 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (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 "()" ( ))) ;) })) }))) (expression_statement "iVar2 = *(int *)puVar1;" (assignment_expression "iVar2 = *(int *)puVar1" identifier = (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (local_1c == iVar2) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == iVar2)" ( (binary_expression "local_1c == iVar2" identifier == identifier) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "uVar28 = 0x1a418;" (assignment_expression "uVar28 = 0x1a418" identifier = number_literal) ;) (expression_statement "puVar21 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar21 = 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 "puVar23 = puVar21 + 0x84c20;" (assignment_expression "puVar23 = puVar21 + 0x84c20" identifier = (binary_expression "puVar21 + 0x84c20" identifier + number_literal)) ;) (expression_statement "puVar27 = puVar3 + -0x40;" (assignment_expression "puVar27 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar3 + -0x40;" (assignment_expression "puVar12 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "puVar26 = puVar3 + -0x40;" (assignment_expression "puVar26 = puVar3 + -0x40" identifier = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar3 + -0x14) = param_2;" (assignment_expression "*(int **)(puVar3 + -0x14) = param_2" (pointer_expression "*(int **)(puVar3 + -0x14)" * (cast_expression "(int **)(puVar3 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x14)" ( (binary_expression "puVar3 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar3 + -0x18) = puVar1;" (assignment_expression "*(undefined **)(puVar3 + -0x18) = puVar1" (pointer_expression "*(undefined **)(puVar3 + -0x18)" * (cast_expression "(undefined **)(puVar3 + -0x18)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x18)" ( (binary_expression "puVar3 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar17 = *(int **)(puVar21 + 0x7d120);" (assignment_expression "piVar17 = *(int **)(puVar21 + 0x7d120)" identifier = (pointer_expression "*(int **)(puVar21 + 0x7d120)" * (cast_expression "(int **)(puVar21 + 0x7d120)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7d120)" ( (binary_expression "puVar21 + 0x7d120" identifier + number_literal) ))))) ;) (expression_statement "piVar15 = (int *)piVar14[1];" (assignment_expression "piVar15 = (int *)piVar14[1]" identifier = (cast_expression "(int *)piVar14[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[1]" identifier [ number_literal ]))) ;) (expression_statement "*(undefined1 **)(puVar3 + -8) = auStack_50;" (assignment_expression "*(undefined1 **)(puVar3 + -8) = auStack_50" (pointer_expression "*(undefined1 **)(puVar3 + -8)" * (cast_expression "(undefined1 **)(puVar3 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -8)" ( (binary_expression "puVar3 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0x10) = unaff_s2;" (assignment_expression "*(int **)(puVar3 + -0x10) = unaff_s2" (pointer_expression "*(int **)(puVar3 + -0x10)" * (cast_expression "(int **)(puVar3 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x10)" ( (binary_expression "puVar3 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar3 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar3 + -4)" * (cast_expression "(undefined4 *)(puVar3 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -4)" ( (binary_expression "puVar3 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar3 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar3 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar3 + -0xc)" * (cast_expression "(int **)(puVar3 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0xc)" ( (binary_expression "puVar3 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar3 + -0x30) = puVar23;" (assignment_expression "*(undefined **)(puVar3 + -0x30) = puVar23" (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar3 + -0x1c) = *piVar17;" (assignment_expression "*(int *)(puVar3 + -0x1c) = *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" * (cast_expression "(int *)(puVar3 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x1c)" ( (binary_expression "puVar3 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar17" * identifier)) ;) (if_statement "if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" if (parenthesized_expression "((int)piVar15 < 1)" ( (binary_expression "(int)piVar15 < 1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }" { (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7cdac);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7cdac)" identifier = (pointer_expression "*(code **)(puVar21 + 0x7cdac)" * (cast_expression "(code **)(puVar21 + 0x7cdac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7cdac)" ( (binary_expression "puVar21 + 0x7cdac" identifier + number_literal) ))))) ;) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" identifier = identifier) ;) (if_statement "if (piVar15 != (int *)0x0) goto LAB_0001a630;" if (parenthesized_expression "(piVar15 != (int *)0x0)" ( (binary_expression "piVar15 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001a630;" goto statement_identifier ;)) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" else (compound_statement "{\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" { (expression_statement "uVar11 = piVar14[2];" (assignment_expression "uVar11 = piVar14[2]" identifier = (subscript_expression "piVar14[2]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "unaff_s3 = (int *)piVar14[3];" (assignment_expression "unaff_s3 = (int *)piVar14[3]" identifier = (cast_expression "(int *)piVar14[3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar14[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = uVar11 & 1;" (assignment_expression "uVar7 = uVar11 & 1" identifier = (binary_expression "uVar11 & 1" identifier & number_literal)) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x20)" * (cast_expression "(undefined4 *)(puVar3 + -0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar14 = (int *)(iVar2 * 2 - uVar7);" (assignment_expression "piVar14 = (int *)(iVar2 * 2 - uVar7)" identifier = (cast_expression "(int *)(iVar2 * 2 - uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 * 2 - uVar7)" ( (binary_expression "iVar2 * 2 - uVar7" (binary_expression "iVar2 * 2" identifier * number_literal) - identifier) )))) ;) (expression_statement "piVar4[2] = (int)(uVar11 + uVar7) / 2;" (assignment_expression "piVar4[2] = (int)(uVar11 + uVar7) / 2" (subscript_expression "piVar4[2]" identifier [ number_literal ]) = (binary_expression "(int)(uVar11 + uVar7) / 2" (cast_expression "(int)(uVar11 + uVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar11 + uVar7)" ( (binary_expression "uVar11 + uVar7" identifier + identifier) ))) / number_literal)) ;) (if_statement "if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" if (parenthesized_expression "((uint)((int)piVar14 * 4) < 0x7f01)" ( (binary_expression "(uint)((int)piVar14 * 4) < 0x7f01" (call_expression "(uint)((int)piVar14 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)piVar14 * 4)" ( (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }" { (expression_statement "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-((int)piVar14 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "((int)piVar14 * 4 + 7U & 0xfffffff8)" ( (binary_expression "(int)piVar14 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar14 * 4 + 7U" (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = puVar3 + iVar2 + -0x40;" (assignment_expression "puVar26 = puVar3 + iVar2 + -0x40" identifier = (binary_expression "puVar3 + iVar2 + -0x40" (binary_expression "puVar3 + iVar2" identifier + identifier) + number_literal)) ;) (expression_statement "param_3 = (int *)(puVar3 + iVar2 + -0x30);" (assignment_expression "param_3 = (int *)(puVar3 + iVar2 + -0x30)" identifier = (cast_expression "(int *)(puVar3 + iVar2 + -0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + iVar2 + -0x30)" ( (binary_expression "puVar3 + iVar2 + -0x30" (binary_expression "puVar3 + iVar2" identifier + identifier) + number_literal) )))) ;) }) (else_clause "else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" else (compound_statement "{\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" { (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7ced0);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7ced0)" identifier = (pointer_expression "*(code **)(puVar21 + 0x7ced0)" * (cast_expression "(code **)(puVar21 + 0x7ced0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar21 + 0x7ced0)" ( (binary_expression "puVar21 + 0x7ced0" identifier + number_literal) ))))) ;) (expression_statement "*(int **)(puVar3 + -0x24) = piVar14;" (assignment_expression "*(int **)(puVar3 + -0x24) = piVar14" (pointer_expression "*(int **)(puVar3 + -0x24)" * (cast_expression "(int **)(puVar3 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x24)" ( (binary_expression "puVar3 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_3 = (int *)(*pcVar22)(puVar3 + -0x20);" (assignment_expression "param_3 = (int *)(*pcVar22)(puVar3 + -0x20)" identifier = (cast_expression "(int *)(*pcVar22)(puVar3 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(puVar3 + -0x20)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "piVar14 = *(int **)(puVar3 + -0x24);" (assignment_expression "piVar14 = *(int **)(puVar3 + -0x24)" identifier = (pointer_expression "*(int **)(puVar3 + -0x24)" * (cast_expression "(int **)(puVar3 + -0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x24)" ( (binary_expression "puVar3 + -0x24" identifier + number_literal) ))))) ;) }))) (if_statement "if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" if (parenthesized_expression "((int)piVar14 < (int)piVar15)" ( (binary_expression "(int)piVar14 < (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }" { (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) ;) (if_statement "if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" if (parenthesized_expression "(piVar14 != (int *)0x0)" ( (binary_expression "piVar14 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" { (expression_statement "iVar8 = (int)piVar14 + -1;" (assignment_expression "iVar8 = (int)piVar14 + -1" identifier = (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);" (assignment_expression "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14)" identifier = (binary_expression "unaff_s3 + ((int)piVar15 - (int)piVar14)" identifier + (parenthesized_expression "((int)piVar15 - (int)piVar14)" ( (binary_expression "(int)piVar15 - (int)piVar14" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (if_statement "if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n          *param_3 = iVar2;\n        }" { (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) }) (else_clause "else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" else (compound_statement "{\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" { (do_statement "do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);" do (compound_statement "{\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          }" { (expression_statement "piVar16 = piVar16 + 1;" (assignment_expression "piVar16 = piVar16 + 1" identifier = (binary_expression "piVar16 + 1" identifier + number_literal)) ;) (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" identifier = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) ;) (expression_statement "param_3[(int)piVar14 + -1] = iVar2;" (assignment_expression "param_3[(int)piVar14 + -1] = iVar2" (subscript_expression "param_3[(int)piVar14 + -1]" identifier [ (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) (goto_statement "goto LAB_0001a530;" goto statement_identifier ;) })) }) (else_clause "else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" else (compound_statement "{\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" { (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" identifier = identifier) ;) (expression_statement "iVar2 = (int)piVar14 - (int)piVar15;" (assignment_expression "iVar2 = (int)piVar14 - (int)piVar15" identifier = (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(piVar15 != piVar14)" ( (binary_expression "piVar15 != piVar14" identifier != identifier) )) (compound_statement "{\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" { (do_statement "do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);" do (compound_statement "{\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        }" { (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" identifier = (binary_expression "iVar2 + -1" identifier + number_literal)) ;) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" * identifier) = number_literal) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar2 = *unaff_s3;" (assignment_expression "iVar2 = *unaff_s3" identifier = (pointer_expression "*unaff_s3" * identifier)) ;) (expression_statement "iVar8 = (int)piVar15 + -1;" (assignment_expression "iVar8 = (int)piVar15 + -1" identifier = (binary_expression "(int)piVar15 + -1" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "piVar10 = param_3 + ((int)piVar14 - (int)piVar15);" (assignment_expression "piVar10 = param_3 + ((int)piVar14 - (int)piVar15)" identifier = (binary_expression "param_3 + ((int)piVar14 - (int)piVar15)" identifier + (parenthesized_expression "((int)piVar14 - (int)piVar15)" ( (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" identifier = identifier) ;) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" identifier = identifier) ;) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" { (do_statement "do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);" do (compound_statement "{\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        }" { (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "iVar2 = piVar14[1];" (assignment_expression "iVar2 = piVar14[1]" identifier = (subscript_expression "piVar14[1]" identifier [ number_literal ])) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" identifier = (binary_expression "piVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) ;) (expression_statement "piVar16 = (int *)((int)piVar15 * 4 + -4);" (assignment_expression "piVar16 = (int *)((int)piVar15 * 4 + -4)" identifier = (cast_expression "(int *)((int)piVar15 * 4 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 * 4 + -4)" ( (binary_expression "(int)piVar15 * 4 + -4" (binary_expression "(int)piVar15 * 4" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) )))) ;) (expression_statement "piVar10 = piVar10 + (int)piVar15 + -1;" (assignment_expression "piVar10 = piVar10 + (int)piVar15 + -1" identifier = (binary_expression "piVar10 + (int)piVar15 + -1" (binary_expression "piVar10 + (int)piVar15" identifier + (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) })) (expression_statement "*piVar10 = iVar2;" (assignment_expression "*piVar10 = iVar2" (pointer_expression "*piVar10" * identifier) = identifier) ;) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" identifier = identifier) ;) (labeled_statement "LAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);" statement_identifier : (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7f60)" * (cast_expression "(code **)(puVar23 + -0x7f60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7f60)" ( (binary_expression "puVar23 + -0x7f60" identifier + number_literal) ))))) ;)) }))) (expression_statement "piVar14 = (int *)0x0;" (assignment_expression "piVar14 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*pcVar22)(piVar4[3]);" (call_expression "(*pcVar22)(piVar4[3])" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(piVar4[3])" ( (subscript_expression "piVar4[3]" identifier [ number_literal ]) ))) ;) (expression_statement "piVar9 = *(int **)(puVar3 + -0x20);" (assignment_expression "piVar9 = *(int **)(puVar3 + -0x20)" identifier = (pointer_expression "*(int **)(puVar3 + -0x20)" * (cast_expression "(int **)(puVar3 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x20)" ( (binary_expression "puVar3 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar12 = puVar26;" (assignment_expression "puVar12 = puVar26" identifier = identifier) ;) (if_statement "if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" { (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" ( (pointer_expression "**(code **)(puVar23 + -0x7a2c)" * (pointer_expression "*(code **)(puVar23 + -0x7a2c)" * (cast_expression "(code **)(puVar23 + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7a2c)" ( (binary_expression "puVar23 + -0x7a2c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" identifier = (pointer_expression "*(undefined **)(puVar3 + -0x30)" * (cast_expression "(undefined **)(puVar3 + -0x30)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + -0x30)" ( (binary_expression "puVar3 + -0x30" identifier + number_literal) ))))) ;) })) }))) (if_statement "if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }" if (parenthesized_expression "(*(int *)(puVar3 + -0x1c) == *piVar17)" ( (binary_expression "*(int *)(puVar3 + -0x1c) == *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" * (cast_expression "(int *)(puVar3 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x1c)" ( (binary_expression "puVar3 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar17" * identifier)) )) (compound_statement "{\n    return *piVar17;\n  }" { (return_statement "return *piVar17;" return (pointer_expression "*piVar17" * identifier) ;) })) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" identifier = (pointer_expression "*(code **)(puVar23 + -0x7b70)" * (cast_expression "(code **)(puVar23 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + -0x7b70)" ( (binary_expression "puVar23 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar27 = puVar12;" (assignment_expression "puVar27 = puVar12" identifier = identifier) ;) (labeled_statement "LAB_0001a630:\n  uVar28 = 0x1a638;" statement_identifier : (expression_statement "uVar28 = 0x1a638;" (assignment_expression "uVar28 = 0x1a638" identifier = number_literal) ;)) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar24 = pcVar22 + 0x84a00;" (assignment_expression "pcVar24 = pcVar22 + 0x84a00" identifier = (binary_expression "pcVar22 + 0x84a00" identifier + number_literal)) ;) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar27 + -0xc)" * (cast_expression "(int **)(puVar27 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar16 = *(int **)(pcVar22 + 0x7cf00);" (assignment_expression "piVar16 = *(int **)(pcVar22 + 0x7cf00)" identifier = (pointer_expression "*(int **)(pcVar22 + 0x7cf00)" * (cast_expression "(int **)(pcVar22 + 0x7cf00)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cf00)" ( (binary_expression "pcVar22 + 0x7cf00" identifier + number_literal) ))))) ;) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x14) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x14) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x14)" * (cast_expression "(int **)(puVar27 + -0x14)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -8) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar27 + -8) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar27 + -8)" * (cast_expression "(undefined4 *)(puVar27 + -8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x10) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x10)" * (cast_expression "(int **)(puVar27 + -0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x18) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x18) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x18)" * (cast_expression "(int **)(puVar27 + -0x18)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar27 + -0x1c) = *piVar16;" (assignment_expression "*(int *)(puVar27 + -0x1c) = *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" * (cast_expression "(int *)(puVar27 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = (pointer_expression "*piVar16" * identifier)) ;) (expression_statement "piVar17 = param_3;" (assignment_expression "piVar17 = param_3" identifier = identifier) ;) (if_statement "if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" if (parenthesized_expression "(piVar14 == (int *)0x0)" ( (binary_expression "piVar14 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }" { (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar12 = (undefined1 *)0x0;" (assignment_expression "puVar12 = (undefined1 *)0x0" identifier = (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" identifier = identifier) ;) }) (else_clause "else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" else (compound_statement "{\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" { (expression_statement "piVar4 = piVar14;" (assignment_expression "piVar4 = piVar14" identifier = identifier) ;) (if_statement "if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar4 = (int *)-(int)piVar14;\n    }" { (expression_statement "piVar4 = (int *)-(int)piVar14;" (assignment_expression "piVar4 = (int *)-(int)piVar14" identifier = (cast_expression "(int *)-(int)piVar14" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar14" - (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (if_statement "if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }" if (parenthesized_expression "(*piVar9 + 1 <= (int)piVar4)" ( (binary_expression "*piVar9 + 1 <= (int)piVar4" (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" * identifier) + number_literal) <= (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      piVar4 = (int *)(*piVar9 + 1);\n    }" { (expression_statement "piVar4 = (int *)(*piVar9 + 1);" (assignment_expression "piVar4 = (int *)(*piVar9 + 1)" identifier = (cast_expression "(int *)(*piVar9 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar9 + 1)" ( (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" * identifier) + number_literal) )))) ;) })) (expression_statement "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);" (call_expression "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4)" (parenthesized_expression "(**(code **)(pcVar22 + 0x7cb14))" ( (pointer_expression "**(code **)(pcVar22 + 0x7cb14)" * (pointer_expression "*(code **)(pcVar22 + 0x7cb14)" * (cast_expression "(code **)(pcVar22 + 0x7cb14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cb14)" ( (binary_expression "pcVar22 + 0x7cb14" identifier + number_literal) ))))) )) (argument_list "(piVar9[3],piVar4)" ( (subscript_expression "piVar9[3]" identifier [ number_literal ]) , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" identifier = (pointer_expression "*(int *)(puVar27 + -0x28)" * (cast_expression "(int *)(puVar27 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7a40);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7a40)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7a40)" * (cast_expression "(code **)(iVar2 + -0x7a40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7a40)" ( (binary_expression "iVar2 + -0x7a40" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" if (parenthesized_expression "(**(char **)(iVar2 + -0x7eb8) == '\0')" ( (binary_expression "**(char **)(iVar2 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" { (expression_statement "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);" (assignment_expression "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4)" identifier = (pointer_expression "*(undefined4 *)(iVar2 + -0x7dc4)" * (cast_expression "(undefined4 *)(iVar2 + -0x7dc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) ))))) ;) (expression_statement "**(char **)(iVar2 + -0x7eb8) = '\x01';" (assignment_expression "**(char **)(iVar2 + -0x7eb8) = '\x01'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" * (pointer_expression "*(char **)(iVar2 + -0x7eb8)" * (cast_expression "(char **)(iVar2 + -0x7eb8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7eb8)" ( (binary_expression "iVar2 + -0x7eb8" identifier + number_literal) ))))) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "(*pcVar22)(uVar28);" (call_expression "(*pcVar22)(uVar28)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(uVar28)" ( identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" identifier = (pointer_expression "*(int *)(puVar27 + -0x28)" * (cast_expression "(int *)(puVar27 + -0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) })) (expression_statement "puVar12 = puVar27 + -0x20;" (assignment_expression "puVar12 = puVar27 + -0x20" identifier = (binary_expression "puVar27 + -0x20" identifier + number_literal)) ;) (expression_statement "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);" (call_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" (parenthesized_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))" ( (pointer_expression "**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (pointer_expression "*(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" * (cast_expression "(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" ( (binary_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4" (pointer_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" * (cast_expression "(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + -0x7dc4) + 0x10)" ( (binary_expression "*(int *)(iVar2 + -0x7dc4) + 0x10" (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" ( (pointer_expression "*(int *)(iVar2 + -0x7dc4)" * (cast_expression "(int *)(iVar2 + -0x7dc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + -0x7dc4)" ( (binary_expression "iVar2 + -0x7dc4" identifier + number_literal) )))) , identifier , number_literal ))) ;) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x28);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x28)" identifier = (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) ))))) ;) (if_statement "if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" { (expression_statement "piVar17 = (int *)-(int)param_3;" (assignment_expression "piVar17 = (int *)-(int)param_3" identifier = (cast_expression "(int *)-(int)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)param_3" - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" identifier = (pointer_expression "*(int **)(puVar27 + -0x20)" * (cast_expression "(int **)(puVar27 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = (int)param_3 * -2 + 1;" (assignment_expression "uVar11 = (int)param_3 * -2 + 1" identifier = (binary_expression "(int)param_3 * -2 + 1" (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar10 % uVar11 + (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" { (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" identifier = (cast_expression "(int *)-(int)piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar4" - (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }) (else_clause "else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" else (compound_statement "{\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" { (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" identifier = (pointer_expression "*(int **)(puVar27 + -0x20)" * (cast_expression "(int **)(puVar27 + -0x20)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x20)" ( (binary_expression "puVar27 + -0x20" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = (int)param_3 * 2 + 1;" (assignment_expression "uVar11 = (int)param_3 * 2 + 1" identifier = (binary_expression "(int)param_3 * 2 + 1" (binary_expression "(int)param_3 * 2" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "(uint)piVar10 % uVar11 - (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" ( (type_descriptor "uint" type_identifier) ) identifier) % identifier) - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" if (parenthesized_expression "((int)piVar14 < 0)" ( (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" { (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" identifier = (cast_expression "(int *)-(int)piVar4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)piVar4" - (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) }))) (expression_statement "piVar9[1] = (int)piVar4;" (assignment_expression "piVar9[1] = (int)piVar4" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar15 = param_3;" (assignment_expression "piVar15 = param_3" identifier = identifier) ;) }))) (if_statement "if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }" if (parenthesized_expression "(*(int *)(puVar27 + -0x1c) == *piVar16)" ( (binary_expression "*(int *)(puVar27 + -0x1c) == *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" * (cast_expression "(int *)(puVar27 + -0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) == (pointer_expression "*piVar16" * identifier)) )) (compound_statement "{\n    return *piVar16;\n  }" { (return_statement "return *piVar16;" return (pointer_expression "*piVar16" * identifier) ;) })) (expression_statement "pcVar22 = *(code **)(pcVar24 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(pcVar24 + -0x7b70)" identifier = (pointer_expression "*(code **)(pcVar24 + -0x7b70)" * (cast_expression "(code **)(pcVar24 + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + -0x7b70)" ( (binary_expression "pcVar24 + -0x7b70" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = 0x1a7b4;" (assignment_expression "uVar28 = 0x1a7b4" identifier = number_literal) ;) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;" (assignment_expression "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880" (pointer_expression "*(code **)(puVar27 + -0x70)" * (cast_expression "(code **)(puVar27 + -0x70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) = (binary_expression "pcVar22 + 0x84880" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x3c) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -0x3c) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -0x3c)" * (cast_expression "(undefined4 *)(puVar27 + -0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x3c)" ( (binary_expression "puVar27 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;" (assignment_expression "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40" (pointer_expression "*(undefined1 **)(puVar27 + -0x40)" * (cast_expression "(undefined1 **)(puVar27 + -0x40)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x40)" ( (binary_expression "puVar27 + -0x40" identifier + number_literal) )))) = (binary_expression "puVar3 + -0x40" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar27 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar27 + -0x44)" * (cast_expression "(undefined4 *)(puVar27 + -0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x44)" ( (binary_expression "puVar27 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar27 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar27 + -0x48)" * (cast_expression "(undefined4 *)(puVar27 + -0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x48)" ( (binary_expression "puVar27 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar27 + -0x4c)" * (cast_expression "(undefined4 *)(puVar27 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x4c)" ( (binary_expression "puVar27 + -0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x50) = piVar14;" (assignment_expression "*(int **)(puVar27 + -0x50) = piVar14" (pointer_expression "*(int **)(puVar27 + -0x50)" * (cast_expression "(int **)(puVar27 + -0x50)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x50)" ( (binary_expression "puVar27 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x54) = piVar16;" (assignment_expression "*(int **)(puVar27 + -0x54) = piVar16" (pointer_expression "*(int **)(puVar27 + -0x54)" * (cast_expression "(int **)(puVar27 + -0x54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x54)" ( (binary_expression "puVar27 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x58) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x58) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x58)" * (cast_expression "(int **)(puVar27 + -0x58)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x58)" ( (binary_expression "puVar27 + -0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x5c) = piVar9;" (assignment_expression "*(int **)(puVar27 + -0x5c) = piVar9" (pointer_expression "*(int **)(puVar27 + -0x5c)" * (cast_expression "(int **)(puVar27 + -0x5c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x5c)" ( (binary_expression "puVar27 + -0x5c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x60) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x60) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x60)" * (cast_expression "(int **)(puVar27 + -0x60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x60)" ( (binary_expression "puVar27 + -0x60" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x38) = piVar10;" (assignment_expression "*(int **)(puVar27 + -0x38) = piVar10" (pointer_expression "*(int **)(puVar27 + -0x38)" * (cast_expression "(int **)(puVar27 + -0x38)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x38)" ( (binary_expression "puVar27 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar27 + -0x30) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x30) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x30)" * (cast_expression "(int **)(puVar27 + -0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" if (parenthesized_expression "(puVar12 == (undefined1 *)0x0)" ( (binary_expression "puVar12 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" { (expression_statement "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);" (assignment_expression "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54)" identifier = (cast_expression "(undefined1 *)**(int **)(pcVar22 + 0x7cb54)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(pcVar22 + 0x7cb54)" * (pointer_expression "*(int **)(pcVar22 + 0x7cb54)" * (cast_expression "(int **)(pcVar22 + 0x7cb54)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cb54)" ( (binary_expression "pcVar22 + 0x7cb54" identifier + number_literal) ))))))) ;) })) (expression_statement "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))" ( (pointer_expression "*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" * (cast_expression "(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(pcVar22 + 0x7cd4c)" * (pointer_expression "*(undefined4 **)(pcVar22 + 0x7cd4c)" * (cast_expression "(undefined4 **)(pcVar22 + 0x7cd4c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar22 + 0x7cd4c)" ( (binary_expression "pcVar22 + 0x7cd4c" identifier + number_literal) ))))))) )) (argument_list "(100)" ( number_literal ))))) ;) (expression_statement "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" identifier = (cast_expression "(int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))" ( (pointer_expression "**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" * (pointer_expression "*(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" * (cast_expression "(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7f94)" ( (binary_expression "*(int *)(puVar27 + -0x70) + -0x7f94" (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);" do (compound_statement "{\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  }" { (expression_statement "iVar19 = iVar8;" (assignment_expression "iVar19 = iVar8" identifier = identifier) ;) (expression_statement "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);" (assignment_expression "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12)" identifier = (call_expression "(**(code **)(iVar2 + -0x7f3c))(puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7f3c))" ( (pointer_expression "**(code **)(iVar2 + -0x7f3c)" * (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar19 + 1;" (assignment_expression "iVar8 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0)" ( (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" * (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + iVar5 * 2)" ( (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "iVar5 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) ;) (expression_statement "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);" (assignment_expression "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0)" identifier = (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))) ;) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = 100;" (assignment_expression "uVar7 = 100" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" identifier = identifier) ;) (while_statement "while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" while (parenthesized_expression "((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)))" ( (parenthesized_expression "(iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))" ( (binary_expression "iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" (binary_expression "iVar5 != -1" identifier != number_literal) && (parenthesized_expression "(uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" ( (comma_expression "uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (assignment_expression "uVar18 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) , (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" ( (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" * (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar4 + iVar5 * 2)" ( (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" * identifier) + (binary_expression "iVar5 * 2" identifier * number_literal)) )))) & number_literal) )) == number_literal)) ))) )) )) (compound_statement "{\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" { (expression_statement "*puVar3 = (char)iVar5;" (assignment_expression "*puVar3 = (char)iVar5" (pointer_expression "*puVar3" * identifier) = (cast_expression "(char)iVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar5 = (*pcVar22)(puVar12);" (assignment_expression "iVar5 = (*pcVar22)(puVar12)" identifier = (call_expression "(*pcVar22)(puVar12)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar12)" ( identifier )))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar7 * 3 >> 1;" (assignment_expression "uVar11 = uVar7 * 3 >> 1" identifier = (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" identifier * number_literal) >> number_literal)) ;) (if_statement "if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" if (parenthesized_expression "(uVar7 <= uVar18)" ( (binary_expression "uVar7 <= uVar18" identifier <= identifier) )) (compound_statement "{\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" { (expression_statement "pcVar22 = (code *)*puVar20;" (assignment_expression "pcVar22 = (code *)*puVar20" identifier = (cast_expression "(code *)*puVar20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier))) ;) (expression_statement "*(int *)(puVar27 + -100) = iVar5;" (assignment_expression "*(int *)(puVar27 + -100) = iVar5" (pointer_expression "*(int *)(puVar27 + -100)" * (cast_expression "(int *)(puVar27 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -100)" ( (binary_expression "puVar27 + -100" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);" (assignment_expression "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" identifier = (cast_expression "(undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar22)(puVar6,uVar7,uVar11)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(puVar6,uVar7,uVar11)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(puVar27 + -100);" (assignment_expression "iVar5 = *(int *)(puVar27 + -100)" identifier = (pointer_expression "*(int *)(puVar27 + -100)" * (cast_expression "(int *)(puVar27 + -100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -100)" ( (binary_expression "puVar27 + -100" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) })) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7f3c)" * (cast_expression "(code **)(iVar2 + -0x7f3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7f3c)" ( (binary_expression "iVar2 + -0x7f3c" identifier + number_literal) ))))) ;) (expression_statement "puVar3 = puVar6 + uVar18;" (assignment_expression "puVar3 = puVar6 + uVar18" identifier = (binary_expression "puVar6 + uVar18" identifier + identifier)) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);" (call_expression "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7d5c))" ( (pointer_expression "**(code **)(iVar2 + -0x7d5c)" * (pointer_expression "*(code **)(iVar2 + -0x7d5c)" * (cast_expression "(code **)(iVar2 + -0x7d5c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7d5c)" ( (binary_expression "iVar2 + -0x7d5c" identifier + number_literal) ))))) )) (argument_list "(iVar5,puVar12)" ( identifier , identifier ))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = uVar7;" (assignment_expression "uVar18 = uVar7" identifier = identifier) ;) (if_statement "if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" if (parenthesized_expression "(uVar7 <= uVar11)" ( (binary_expression "uVar7 <= uVar11" identifier <= identifier) )) (compound_statement "{\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" { (expression_statement "uVar18 = uVar7 * 3 >> 1;" (assignment_expression "uVar18 = uVar7 * 3 >> 1" identifier = (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" identifier * number_literal) >> number_literal)) ;) (expression_statement "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);" (assignment_expression "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" identifier = (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))" ( (pointer_expression "*(code *)**(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(code *)**(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(iVar2 + -0x7aa0)" * (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" * (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7aa0)" ( (binary_expression "iVar2 + -0x7aa0" identifier + number_literal) ))))))) )) (argument_list "(puVar6,uVar7,uVar18)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" identifier = (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7ae8);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7ae8)" identifier = (pointer_expression "*(code **)(iVar2 + -0x7ae8)" * (cast_expression "(code **)(iVar2 + -0x7ae8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + -0x7ae8)" ( (binary_expression "iVar2 + -0x7ae8" identifier + number_literal) ))))) ;) (expression_statement "uVar28 = *(undefined4 *)(puVar27 + -0x38);" (assignment_expression "uVar28 = *(undefined4 *)(puVar27 + -0x38)" identifier = (pointer_expression "*(undefined4 *)(puVar27 + -0x38)" * (cast_expression "(undefined4 *)(puVar27 + -0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x38)" ( (binary_expression "puVar27 + -0x38" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(undefined4 *)(puVar27 + -0x30);" (assignment_expression "uVar13 = *(undefined4 *)(puVar27 + -0x30)" identifier = (pointer_expression "*(undefined4 *)(puVar27 + -0x30)" * (cast_expression "(undefined4 *)(puVar27 + -0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x30)" ( (binary_expression "puVar27 + -0x30" identifier + number_literal) ))))) ;) (expression_statement "puVar6[uVar11] = 0;" (assignment_expression "puVar6[uVar11] = 0" (subscript_expression "puVar6[uVar11]" identifier [ identifier ]) = number_literal) ;) (expression_statement "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);" (assignment_expression "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13)" identifier = (call_expression "(*pcVar22)(uVar28,puVar6,uVar13)" (parenthesized_expression "(*pcVar22)" ( (pointer_expression "*pcVar22" * identifier) )) (argument_list "(uVar28,puVar6,uVar13)" ( identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))" ( (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (pointer_expression "*(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" * (cast_expression "(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7e70)" ( (binary_expression "*(int *)(puVar27 + -0x70) + -0x7e70" (pointer_expression "*(int *)(puVar27 + -0x70)" * (cast_expression "(int *)(puVar27 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x70)" ( (binary_expression "puVar27 + -0x70" identifier + number_literal) )))) + number_literal) ))))))) )) (argument_list "(puVar6,uVar18)" ( identifier , identifier ))) ;) (if_statement "if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }" if (parenthesized_expression "(iVar2 != -1)" ( (binary_expression "iVar2 != -1" identifier != number_literal) )) (compound_statement "{\n    return iVar19 + uVar11;\n  }" { (return_statement "return iVar19 + uVar11;" return (binary_expression "iVar19 + uVar11" identifier + identifier) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (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 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 (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = 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 ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) - IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))) / LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + 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) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = IDENT) ;) }))) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (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 { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression 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 = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (pointer_expression * 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + 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 (pointer_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 IDENT + LIT) ))))) )) (argument_list ( (subscript_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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = (char_literal ' escape_sequence ')) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) % IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return (pointer_expression * IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) & LIT) )) == LIT)) ))) )) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) >> LIT)) ;) (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 *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))))) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return (binary_expression IDENT + IDENT) ;) })) (return_statement return LIT ;) })))
(function_definition "int __gmpf_reldiff(int *param_1,int *param_2,int *param_3)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" (primitive_type "int") (function_declarator "__gmpf_reldiff(int *param_1,int *param_2,int *param_3)" (identifier "__gmpf_reldiff") (parameter_list "(int *param_1,int *param_2,int *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  undefined1 *puVar3;\n  int *piVar4;\n  int iVar5;\n  undefined1 *puVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int *piVar10;\n  uint uVar11;\n  undefined1 *puVar12;\n  undefined4 uVar13;\n  int *piVar14;\n  int *piVar15;\n  int *piVar16;\n  int *piVar17;\n  uint uVar18;\n  int *unaff_s2;\n  int *unaff_s3;\n  int iVar19;\n  undefined4 unaff_s4;\n  undefined4 unaff_s5;\n  undefined4 unaff_s6;\n  undefined4 *puVar20;\n  undefined4 unaff_s7;\n  undefined *puVar21;\n  code *pcVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined1 *puVar27;\n  undefined4 uVar28;\n  undefined1 auStack_50 [16];\n  int *local_30;\n  int local_2c;\n  int local_28;\n  undefined1 *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_00097540;\n  puVar3 = auStack_50;\n  puVar25 = auStack_50;\n  iVar2 = param_2[1];\n  local_1c = *(int *)PTR___stack_chk_guard_00097540;\n  if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }\n  iVar2 = *(int *)puVar1;\n  if (local_1c == iVar2) {\n    return iVar2;\n  }\n  uVar28 = 0x1a418;\n  puVar21 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puVar23 = puVar21 + 0x84c20;\n  puVar27 = puVar3 + -0x40;\n  puVar12 = puVar3 + -0x40;\n  puVar26 = puVar3 + -0x40;\n  *(int **)(puVar3 + -0x14) = param_2;\n  *(undefined **)(puVar3 + -0x18) = puVar1;\n  piVar17 = *(int **)(puVar21 + 0x7d120);\n  piVar15 = (int *)piVar14[1];\n  *(undefined1 **)(puVar3 + -8) = auStack_50;\n  *(int **)(puVar3 + -0x10) = unaff_s2;\n  *(undefined4 *)(puVar3 + -4) = uVar28;\n  *(int **)(puVar3 + -0xc) = unaff_s3;\n  *(undefined **)(puVar3 + -0x30) = puVar23;\n  *(int *)(puVar3 + -0x1c) = *piVar17;\n  if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }\n  if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }\n  pcVar22 = *(code **)(puVar23 + -0x7b70);\n  (*pcVar22)();\n  puVar27 = puVar12;\nLAB_0001a630:\n  uVar28 = 0x1a638;\n  (*pcVar22)();\n  pcVar24 = pcVar22 + 0x84a00;\n  *(int **)(puVar27 + -0xc) = unaff_s3;\n  piVar16 = *(int **)(pcVar22 + 0x7cf00);\n  *(code **)(puVar27 + -0x28) = pcVar24;\n  *(int **)(puVar27 + -0x14) = piVar17;\n  *(undefined4 *)(puVar27 + -4) = uVar28;\n  *(undefined4 *)(puVar27 + -8) = unaff_s4;\n  *(int **)(puVar27 + -0x10) = piVar4;\n  *(int **)(puVar27 + -0x18) = piVar15;\n  *(int *)(puVar27 + -0x1c) = *piVar16;\n  piVar17 = param_3;\n  if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }\n  if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }\n  pcVar22 = *(code **)(pcVar24 + -0x7b70);\n  uVar28 = 0x1a7b4;\n  (*pcVar22)();\n  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;\n  *(undefined4 *)(puVar27 + -0x3c) = uVar28;\n  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;\n  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;\n  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;\n  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;\n  *(int **)(puVar27 + -0x50) = piVar14;\n  *(int **)(puVar27 + -0x54) = piVar16;\n  *(int **)(puVar27 + -0x58) = piVar4;\n  *(int **)(puVar27 + -0x5c) = piVar9;\n  *(int **)(puVar27 + -0x60) = piVar15;\n  *(int **)(puVar27 + -0x38) = piVar10;\n  *(int **)(puVar27 + -0x30) = piVar17;\n  if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }\n  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);\n  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();\n  iVar2 = *(int *)(puVar27 + -0x70);\n  iVar8 = 0;\n  do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);\n  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);\n  pcVar22 = *(code **)(iVar2 + -0x7f3c);\n  uVar7 = 100;\n  uVar11 = 0;\n  puVar6 = puVar3;\n  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }\n  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);\n  iVar2 = *(int *)(puVar27 + -0x70);\n  uVar18 = uVar7;\n  if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }\n  pcVar22 = *(code **)(iVar2 + -0x7ae8);\n  uVar28 = *(undefined4 *)(puVar27 + -0x38);\n  uVar13 = *(undefined4 *)(puVar27 + -0x30);\n  puVar6[uVar11] = 0;\n  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);\n  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);\n  if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }\n  return 0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "undefined1 *puVar12;" (type_identifier "undefined1") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "int *piVar14;" (primitive_type "int") (pointer_declarator "*piVar14" (* "*") (identifier "piVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "int *piVar16;" (primitive_type "int") (pointer_declarator "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int *unaff_s2;" (primitive_type "int") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")) (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "undefined4 unaff_s4;" (type_identifier "undefined4") (identifier "unaff_s4") (; ";")) (declaration "undefined4 unaff_s5;" (type_identifier "undefined4") (identifier "unaff_s5") (; ";")) (declaration "undefined4 unaff_s6;" (type_identifier "undefined4") (identifier "unaff_s6") (; ";")) (declaration "undefined4 *puVar20;" (type_identifier "undefined4") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar21;" (type_identifier "undefined") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "code *pcVar22;" (type_identifier "code") (pointer_declarator "*pcVar22" (* "*") (identifier "pcVar22")) (; ";")) (declaration "undefined *puVar23;" (type_identifier "undefined") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "code *pcVar24;" (type_identifier "code") (pointer_declarator "*pcVar24" (* "*") (identifier "pcVar24")) (; ";")) (declaration "undefined1 *puVar25;" (type_identifier "undefined1") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "undefined1 *puVar27;" (type_identifier "undefined1") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "undefined4 uVar28;" (type_identifier "undefined4") (identifier "uVar28") (; ";")) (declaration "undefined1 auStack_50 [16];" (type_identifier "undefined1") (array_declarator "auStack_50 [16]" (identifier "auStack_50") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "int *local_30;" (primitive_type "int") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "undefined1 *local_20;" (type_identifier "undefined1") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00097540" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "puVar3 = auStack_50;" (assignment_expression "puVar3 = auStack_50" (identifier "puVar3") (= "=") (identifier "auStack_50")) (; ";")) (expression_statement "puVar25 = auStack_50;" (assignment_expression "puVar25 = auStack_50" (identifier "puVar25") (= "=") (identifier "auStack_50")) (; ";")) (expression_statement "iVar2 = param_2[1];" (assignment_expression "iVar2 = param_2[1]" (identifier "iVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_00097540" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }\n  else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    piVar14 = (int *)(uint)(param_3[1] != 0);\n    (*(code *)PTR___gmpf_set_ui_00097428)();\n    piVar4 = param_1;\n  }" ({ "{") (expression_statement "piVar14 = (int *)(uint)(param_3[1] != 0);" (assignment_expression "piVar14 = (int *)(uint)(param_3[1] != 0)" (identifier "piVar14") (= "=") (cast_expression "(int *)(uint)(param_3[1] != 0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(param_3[1] != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3[1] != 0)" (( "(") (binary_expression "param_3[1] != 0" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR___gmpf_set_ui_00097428)();" (call_expression "(*(code *)PTR___gmpf_set_ui_00097428)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_ui_00097428)" (( "(") (pointer_expression "*(code *)PTR___gmpf_set_ui_00097428" (* "*") (cast_expression "(code *)PTR___gmpf_set_ui_00097428" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_set_ui_00097428"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar4 = param_1;" (assignment_expression "piVar4 = param_1" (identifier "piVar4") (= "=") (identifier "param_1")) (; ";")) (} "}")) (else_clause "else {\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" (else "else") (compound_statement "{\n    local_30 = (int *)0x0;\n    if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }\n    local_2c = iVar2 + *param_1;\n    uVar11 = (local_2c + 1) * 4;\n    if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }\n    unaff_s3 = &local_2c;\n    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);\n    if (local_28 < 0) {\n      local_28 = -local_28;\n    }\n    piVar14 = unaff_s3;\n    param_3 = param_2;\n    (*(code *)PTR___gmpf_div_00097230)(param_1);\n    piVar4 = local_30;\n    unaff_s2 = param_1;\n    puVar3 = puVar25;\n    if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n  }" ({ "{") (expression_statement "local_30 = (int *)0x0;" (assignment_expression "local_30 = (int *)0x0" (identifier "local_30") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar2 < 0) {\n      iVar2 = -iVar2;\n    }" (if "if") (parenthesized_expression "(iVar2 < 0)" (( "(") (binary_expression "iVar2 < 0" (identifier "iVar2") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = -iVar2;\n    }" ({ "{") (expression_statement "iVar2 = -iVar2;" (assignment_expression "iVar2 = -iVar2" (identifier "iVar2") (= "=") (unary_expression "-iVar2" (- "-") (identifier "iVar2"))) (; ";")) (} "}"))) (expression_statement "local_2c = iVar2 + *param_1;" (assignment_expression "local_2c = iVar2 + *param_1" (identifier "local_2c") (= "=") (binary_expression "iVar2 + *param_1" (identifier "iVar2") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar11 = (local_2c + 1) * 4;" (assignment_expression "uVar11 = (local_2c + 1) * 4" (identifier "uVar11") (= "=") (binary_expression "(local_2c + 1) * 4" (parenthesized_expression "(local_2c + 1)" (( "(") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar11 < 0x7f01) {\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }\n    else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" (if "if") (parenthesized_expression "(uVar11 < 0x7f01)" (( "(") (binary_expression "uVar11 < 0x7f01" (identifier "uVar11") (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar2 = -(uVar11 + 7 & 0xfffffff8);\n      puVar25 = auStack_50 + iVar2;\n      local_20 = &stack0xffffffc0 + iVar2;\n    }" ({ "{") (expression_statement "iVar2 = -(uVar11 + 7 & 0xfffffff8);" (assignment_expression "iVar2 = -(uVar11 + 7 & 0xfffffff8)" (identifier "iVar2") (= "=") (unary_expression "-(uVar11 + 7 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar11 + 7 & 0xfffffff8)" (( "(") (binary_expression "uVar11 + 7 & 0xfffffff8" (binary_expression "uVar11 + 7" (identifier "uVar11") (+ "+") (number_literal "7")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar25 = auStack_50 + iVar2;" (assignment_expression "puVar25 = auStack_50 + iVar2" (identifier "puVar25") (= "=") (binary_expression "auStack_50 + iVar2" (identifier "auStack_50") (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "local_20 = &stack0xffffffc0 + iVar2;" (assignment_expression "local_20 = &stack0xffffffc0 + iVar2" (identifier "local_20") (= "=") (binary_expression "&stack0xffffffc0 + iVar2" (pointer_expression "&stack0xffffffc0" (& "&") (identifier "stack0xffffffc0")) (+ "+") (identifier "iVar2"))) (; ";")) (} "}")) (else_clause "else {\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" (else "else") (compound_statement "{\n      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);\n    }" ({ "{") (expression_statement "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);" (assignment_expression "local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (identifier "local_20") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (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 "unaff_s3 = &local_2c;" (assignment_expression "unaff_s3 = &local_2c" (identifier "unaff_s3") (= "=") (pointer_expression "&local_2c" (& "&") (identifier "local_2c"))) (; ";")) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" (( "(") (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" (* "*") (cast_expression "(code *)PTR___gmpf_sub_0009725c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_sub_0009725c"))) () ")")) (argument_list "(unaff_s3,param_2,param_3)" (( "(") (identifier "unaff_s3") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (local_28 < 0) {\n      local_28 = -local_28;\n    }" (if "if") (parenthesized_expression "(local_28 < 0)" (( "(") (binary_expression "local_28 < 0" (identifier "local_28") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      local_28 = -local_28;\n    }" ({ "{") (expression_statement "local_28 = -local_28;" (assignment_expression "local_28 = -local_28" (identifier "local_28") (= "=") (unary_expression "-local_28" (- "-") (identifier "local_28"))) (; ";")) (} "}"))) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" (identifier "piVar14") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "param_3 = param_2;" (assignment_expression "param_3 = param_2" (identifier "param_3") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(*(code *)PTR___gmpf_div_00097230)(param_1);" (call_expression "(*(code *)PTR___gmpf_div_00097230)(param_1)" (parenthesized_expression "(*(code *)PTR___gmpf_div_00097230)" (( "(") (pointer_expression "*(code *)PTR___gmpf_div_00097230" (* "*") (cast_expression "(code *)PTR___gmpf_div_00097230" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_div_00097230"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "piVar4 = local_30;" (assignment_expression "piVar4 = local_30" (identifier "piVar4") (= "=") (identifier "local_30")) (; ";")) (expression_statement "unaff_s2 = param_1;" (assignment_expression "unaff_s2 = param_1" (identifier "unaff_s2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar3 = puVar25;" (assignment_expression "puVar3 = puVar25" (identifier "puVar3") (= "=") (identifier "puVar25")) (; ";")) (if_statement "if (local_30 != (int *)0x0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (if "if") (parenthesized_expression "(local_30 != (int *)0x0)" (( "(") (binary_expression "local_30 != (int *)0x0" (identifier "local_30") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = *(int *)puVar1;" (assignment_expression "iVar2 = *(int *)puVar1" (identifier "iVar2") (= "=") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if (local_1c == iVar2) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_1c == iVar2)" (( "(") (binary_expression "local_1c == iVar2" (identifier "local_1c") (== "==") (identifier "iVar2")) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "uVar28 = 0x1a418;" (assignment_expression "uVar28 = 0x1a418" (identifier "uVar28") (= "=") (number_literal "0x1a418")) (; ";")) (expression_statement "puVar21 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar21 = PTR___stack_chk_fail_000974d0" (identifier "puVar21") (= "=") (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 "puVar23 = puVar21 + 0x84c20;" (assignment_expression "puVar23 = puVar21 + 0x84c20" (identifier "puVar23") (= "=") (binary_expression "puVar21 + 0x84c20" (identifier "puVar21") (+ "+") (number_literal "0x84c20"))) (; ";")) (expression_statement "puVar27 = puVar3 + -0x40;" (assignment_expression "puVar27 = puVar3 + -0x40" (identifier "puVar27") (= "=") (binary_expression "puVar3 + -0x40" (identifier "puVar3") (+ "+") (number_literal "-0x40"))) (; ";")) (expression_statement "puVar12 = puVar3 + -0x40;" (assignment_expression "puVar12 = puVar3 + -0x40" (identifier "puVar12") (= "=") (binary_expression "puVar3 + -0x40" (identifier "puVar3") (+ "+") (number_literal "-0x40"))) (; ";")) (expression_statement "puVar26 = puVar3 + -0x40;" (assignment_expression "puVar26 = puVar3 + -0x40" (identifier "puVar26") (= "=") (binary_expression "puVar3 + -0x40" (identifier "puVar3") (+ "+") (number_literal "-0x40"))) (; ";")) (expression_statement "*(int **)(puVar3 + -0x14) = param_2;" (assignment_expression "*(int **)(puVar3 + -0x14) = param_2" (pointer_expression "*(int **)(puVar3 + -0x14)" (* "*") (cast_expression "(int **)(puVar3 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x14)" (( "(") (binary_expression "puVar3 + -0x14" (identifier "puVar3") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined **)(puVar3 + -0x18) = puVar1;" (assignment_expression "*(undefined **)(puVar3 + -0x18) = puVar1" (pointer_expression "*(undefined **)(puVar3 + -0x18)" (* "*") (cast_expression "(undefined **)(puVar3 + -0x18)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x18)" (( "(") (binary_expression "puVar3 + -0x18" (identifier "puVar3") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "puVar1")) (; ";")) (expression_statement "piVar17 = *(int **)(puVar21 + 0x7d120);" (assignment_expression "piVar17 = *(int **)(puVar21 + 0x7d120)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(puVar21 + 0x7d120)" (* "*") (cast_expression "(int **)(puVar21 + 0x7d120)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x7d120)" (( "(") (binary_expression "puVar21 + 0x7d120" (identifier "puVar21") (+ "+") (number_literal "0x7d120")) () ")"))))) (; ";")) (expression_statement "piVar15 = (int *)piVar14[1];" (assignment_expression "piVar15 = (int *)piVar14[1]" (identifier "piVar15") (= "=") (cast_expression "(int *)piVar14[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar14[1]" (identifier "piVar14") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*(undefined1 **)(puVar3 + -8) = auStack_50;" (assignment_expression "*(undefined1 **)(puVar3 + -8) = auStack_50" (pointer_expression "*(undefined1 **)(puVar3 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar3 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -8)" (( "(") (binary_expression "puVar3 + -8" (identifier "puVar3") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_50")) (; ";")) (expression_statement "*(int **)(puVar3 + -0x10) = unaff_s2;" (assignment_expression "*(int **)(puVar3 + -0x10) = unaff_s2" (pointer_expression "*(int **)(puVar3 + -0x10)" (* "*") (cast_expression "(int **)(puVar3 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x10)" (( "(") (binary_expression "puVar3 + -0x10" (identifier "puVar3") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar3 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar3 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -4)" (( "(") (binary_expression "puVar3 + -4" (identifier "puVar3") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar28")) (; ";")) (expression_statement "*(int **)(puVar3 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar3 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar3 + -0xc)" (* "*") (cast_expression "(int **)(puVar3 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0xc)" (( "(") (binary_expression "puVar3 + -0xc" (identifier "puVar3") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(undefined **)(puVar3 + -0x30) = puVar23;" (assignment_expression "*(undefined **)(puVar3 + -0x30) = puVar23" (pointer_expression "*(undefined **)(puVar3 + -0x30)" (* "*") (cast_expression "(undefined **)(puVar3 + -0x30)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x30)" (( "(") (binary_expression "puVar3 + -0x30" (identifier "puVar3") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "puVar23")) (; ";")) (expression_statement "*(int *)(puVar3 + -0x1c) = *piVar17;" (assignment_expression "*(int *)(puVar3 + -0x1c) = *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" (* "*") (cast_expression "(int *)(puVar3 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x1c)" (( "(") (binary_expression "puVar3 + -0x1c" (identifier "puVar3") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) (; ";")) (if_statement "if ((int)piVar15 < 1) {\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }\n  else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" (if "if") (parenthesized_expression "((int)piVar15 < 1)" (( "(") (binary_expression "(int)piVar15 < 1" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    pcVar22 = *(code **)(puVar21 + 0x7cdac);\n    piVar9 = piVar4;\n    if (piVar15 != (int *)0x0) goto LAB_0001a630;\n    piVar4[1] = 0;\n    piVar4[2] = 0;\n  }" ({ "{") (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7cdac);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7cdac)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar21 + 0x7cdac)" (* "*") (cast_expression "(code **)(puVar21 + 0x7cdac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x7cdac)" (( "(") (binary_expression "puVar21 + 0x7cdac" (identifier "puVar21") (+ "+") (number_literal "0x7cdac")) () ")"))))) (; ";")) (expression_statement "piVar9 = piVar4;" (assignment_expression "piVar9 = piVar4" (identifier "piVar9") (= "=") (identifier "piVar4")) (; ";")) (if_statement "if (piVar15 != (int *)0x0) goto LAB_0001a630;" (if "if") (parenthesized_expression "(piVar15 != (int *)0x0)" (( "(") (binary_expression "piVar15 != (int *)0x0" (identifier "piVar15") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0001a630;" (goto "goto") (statement_identifier "LAB_0001a630") (; ";"))) (expression_statement "piVar4[1] = 0;" (assignment_expression "piVar4[1] = 0" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[2] = 0;" (assignment_expression "piVar4[2] = 0" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" (else "else") (compound_statement "{\n    uVar11 = piVar14[2];\n    iVar2 = *piVar4;\n    unaff_s3 = (int *)piVar14[3];\n    uVar7 = uVar11 & 1;\n    *(undefined4 *)(puVar3 + -0x20) = 0;\n    piVar4[1] = iVar2;\n    piVar14 = (int *)(iVar2 * 2 - uVar7);\n    piVar4[2] = (int)(uVar11 + uVar7) / 2;\n    if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }\n    if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }\n    piVar14 = (int *)0x0;\n    (*pcVar22)(piVar4[3]);\n    piVar9 = *(int **)(puVar3 + -0x20);\n    puVar23 = *(undefined **)(puVar3 + -0x30);\n    puVar12 = puVar26;\n    if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }\n  }" ({ "{") (expression_statement "uVar11 = piVar14[2];" (assignment_expression "uVar11 = piVar14[2]" (identifier "uVar11") (= "=") (subscript_expression "piVar14[2]" (identifier "piVar14") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar2 = *piVar4;" (assignment_expression "iVar2 = *piVar4" (identifier "iVar2") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "unaff_s3 = (int *)piVar14[3];" (assignment_expression "unaff_s3 = (int *)piVar14[3]" (identifier "unaff_s3") (= "=") (cast_expression "(int *)piVar14[3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar14[3]" (identifier "piVar14") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar7 = uVar11 & 1;" (assignment_expression "uVar7 = uVar11 & 1" (identifier "uVar7") (= "=") (binary_expression "uVar11 & 1" (identifier "uVar11") (& "&") (number_literal "1"))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -0x20) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x20) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x20)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x20)" (( "(") (binary_expression "puVar3 + -0x20" (identifier "puVar3") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar4[1] = iVar2;" (assignment_expression "piVar4[1] = iVar2" (subscript_expression "piVar4[1]" (identifier "piVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar14 = (int *)(iVar2 * 2 - uVar7);" (assignment_expression "piVar14 = (int *)(iVar2 * 2 - uVar7)" (identifier "piVar14") (= "=") (cast_expression "(int *)(iVar2 * 2 - uVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 * 2 - uVar7)" (( "(") (binary_expression "iVar2 * 2 - uVar7" (binary_expression "iVar2 * 2" (identifier "iVar2") (* "*") (number_literal "2")) (- "-") (identifier "uVar7")) () ")")))) (; ";")) (expression_statement "piVar4[2] = (int)(uVar11 + uVar7) / 2;" (assignment_expression "piVar4[2] = (int)(uVar11 + uVar7) / 2" (subscript_expression "piVar4[2]" (identifier "piVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(int)(uVar11 + uVar7) / 2" (cast_expression "(int)(uVar11 + uVar7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar11 + uVar7)" (( "(") (binary_expression "uVar11 + uVar7" (identifier "uVar11") (+ "+") (identifier "uVar7")) () ")"))) (/ "/") (number_literal "2"))) (; ";")) (if_statement "if ((uint)((int)piVar14 * 4) < 0x7f01) {\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }\n    else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" (if "if") (parenthesized_expression "((uint)((int)piVar14 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)((int)piVar14 * 4) < 0x7f01" (call_expression "(uint)((int)piVar14 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)piVar14 * 4)" (( "(") (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);\n      puVar26 = puVar3 + iVar2 + -0x40;\n      param_3 = (int *)(puVar3 + iVar2 + -0x30);\n    }" ({ "{") (expression_statement "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8)" (identifier "iVar2") (= "=") (unary_expression "-((int)piVar14 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "((int)piVar14 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "(int)piVar14 * 4 + 7U & 0xfffffff8" (binary_expression "(int)piVar14 * 4 + 7U" (binary_expression "(int)piVar14 * 4" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar26 = puVar3 + iVar2 + -0x40;" (assignment_expression "puVar26 = puVar3 + iVar2 + -0x40" (identifier "puVar26") (= "=") (binary_expression "puVar3 + iVar2 + -0x40" (binary_expression "puVar3 + iVar2" (identifier "puVar3") (+ "+") (identifier "iVar2")) (+ "+") (number_literal "-0x40"))) (; ";")) (expression_statement "param_3 = (int *)(puVar3 + iVar2 + -0x30);" (assignment_expression "param_3 = (int *)(puVar3 + iVar2 + -0x30)" (identifier "param_3") (= "=") (cast_expression "(int *)(puVar3 + iVar2 + -0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + iVar2 + -0x30)" (( "(") (binary_expression "puVar3 + iVar2 + -0x30" (binary_expression "puVar3 + iVar2" (identifier "puVar3") (+ "+") (identifier "iVar2")) (+ "+") (number_literal "-0x30")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" (else "else") (compound_statement "{\n      pcVar22 = *(code **)(puVar21 + 0x7ced0);\n      *(int **)(puVar3 + -0x24) = piVar14;\n      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n      piVar14 = *(int **)(puVar3 + -0x24);\n    }" ({ "{") (expression_statement "pcVar22 = *(code **)(puVar21 + 0x7ced0);" (assignment_expression "pcVar22 = *(code **)(puVar21 + 0x7ced0)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar21 + 0x7ced0)" (* "*") (cast_expression "(code **)(puVar21 + 0x7ced0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar21 + 0x7ced0)" (( "(") (binary_expression "puVar21 + 0x7ced0" (identifier "puVar21") (+ "+") (number_literal "0x7ced0")) () ")"))))) (; ";")) (expression_statement "*(int **)(puVar3 + -0x24) = piVar14;" (assignment_expression "*(int **)(puVar3 + -0x24) = piVar14" (pointer_expression "*(int **)(puVar3 + -0x24)" (* "*") (cast_expression "(int **)(puVar3 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x24)" (( "(") (binary_expression "puVar3 + -0x24" (identifier "puVar3") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "piVar14")) (; ";")) (expression_statement "param_3 = (int *)(*pcVar22)(puVar3 + -0x20);" (assignment_expression "param_3 = (int *)(*pcVar22)(puVar3 + -0x20)" (identifier "param_3") (= "=") (cast_expression "(int *)(*pcVar22)(puVar3 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar22)(puVar3 + -0x20)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(puVar3 + -0x20)" (( "(") (binary_expression "puVar3 + -0x20" (identifier "puVar3") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar3 + -0x30)" (* "*") (cast_expression "(undefined **)(puVar3 + -0x30)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x30)" (( "(") (binary_expression "puVar3 + -0x30" (identifier "puVar3") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "piVar14 = *(int **)(puVar3 + -0x24);" (assignment_expression "piVar14 = *(int **)(puVar3 + -0x24)" (identifier "piVar14") (= "=") (pointer_expression "*(int **)(puVar3 + -0x24)" (* "*") (cast_expression "(int **)(puVar3 + -0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x24)" (( "(") (binary_expression "puVar3 + -0x24" (identifier "puVar3") (+ "+") (number_literal "-0x24")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((int)piVar14 < (int)piVar15) {\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }\n    else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" (if "if") (parenthesized_expression "((int)piVar14 < (int)piVar15)" (( "(") (binary_expression "(int)piVar14 < (int)piVar15" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (< "<") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) () ")")) (compound_statement "{\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n      if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }\n    }" ({ "{") (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar23 + -0x7f60)" (* "*") (cast_expression "(code **)(puVar23 + -0x7f60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7f60)" (( "(") (binary_expression "puVar23 + -0x7f60" (identifier "puVar23") (+ "+") (number_literal "-0x7f60")) () ")"))))) (; ";")) (if_statement "if (piVar14 != (int *)0x0) {\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" (if "if") (parenthesized_expression "(piVar14 != (int *)0x0)" (( "(") (binary_expression "piVar14 != (int *)0x0" (identifier "piVar14") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar8 = (int)piVar14 + -1;\n        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);\n        iVar2 = *piVar16;\n        piVar9 = param_3;\n        if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }\n        goto LAB_0001a530;\n      }" ({ "{") (expression_statement "iVar8 = (int)piVar14 + -1;" (assignment_expression "iVar8 = (int)piVar14 + -1" (identifier "iVar8") (= "=") (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);" (assignment_expression "piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14)" (identifier "piVar16") (= "=") (binary_expression "unaff_s3 + ((int)piVar15 - (int)piVar14)" (identifier "unaff_s3") (+ "+") (parenthesized_expression "((int)piVar15 - (int)piVar14)" (( "(") (binary_expression "(int)piVar15 - (int)piVar14" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (- "-") (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14"))) () ")")))) (; ";")) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" (identifier "iVar2") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" (identifier "piVar9") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (iVar8 == 0) {\n          *param_3 = iVar2;\n        }\n        else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *param_3 = iVar2;\n        }" ({ "{") (expression_statement "*param_3 = iVar2;" (assignment_expression "*param_3 = iVar2" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar2")) (; ";")) (} "}")) (else_clause "else {\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" (else "else") (compound_statement "{\n          do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);\n          param_3[(int)piVar14 + -1] = iVar2;\n        }" ({ "{") (do_statement "do {\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          } while (iVar8 != 0);" (do "do") (compound_statement "{\n            piVar16 = piVar16 + 1;\n            *piVar9 = iVar2;\n            iVar8 = iVar8 + -1;\n            iVar2 = *piVar16;\n            piVar9 = piVar9 + 1;\n          }" ({ "{") (expression_statement "piVar16 = piVar16 + 1;" (assignment_expression "piVar16 = piVar16 + 1" (identifier "piVar16") (= "=") (binary_expression "piVar16 + 1" (identifier "piVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar2 = *piVar16;" (assignment_expression "iVar2 = *piVar16" (identifier "iVar2") (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_3[(int)piVar14 + -1] = iVar2;" (assignment_expression "param_3[(int)piVar14 + -1] = iVar2" (subscript_expression "param_3[(int)piVar14 + -1]" (identifier "param_3") ([ "[") (binary_expression "(int)piVar14 + -1" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "iVar2")) (; ";")) (} "}")))) (goto_statement "goto LAB_0001a530;" (goto "goto") (statement_identifier "LAB_0001a530") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" (else "else") (compound_statement "{\n      piVar9 = param_3;\n      iVar2 = (int)piVar14 - (int)piVar15;\n      if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }\n      iVar2 = *unaff_s3;\n      iVar8 = (int)piVar15 + -1;\n      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);\n      piVar9 = piVar10;\n      piVar16 = piVar15;\n      piVar14 = unaff_s3;\n      if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }\n      *piVar10 = iVar2;\n      piVar15 = piVar16;\nLAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);\n    }" ({ "{") (expression_statement "piVar9 = param_3;" (assignment_expression "piVar9 = param_3" (identifier "piVar9") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar2 = (int)piVar14 - (int)piVar15;" (assignment_expression "iVar2 = (int)piVar14 - (int)piVar15" (identifier "iVar2") (= "=") (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (- "-") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")))) (; ";")) (if_statement "if (piVar15 != piVar14) {\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" (if "if") (parenthesized_expression "(piVar15 != piVar14)" (( "(") (binary_expression "piVar15 != piVar14" (identifier "piVar15") (!= "!=") (identifier "piVar14")) () ")")) (compound_statement "{\n        do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);\n      }" ({ "{") (do_statement "do {\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        } while (iVar2 != 0);" (do "do") (compound_statement "{\n          iVar2 = iVar2 + -1;\n          *piVar9 = 0;\n          piVar9 = piVar9 + 1;\n        }" ({ "{") (expression_statement "iVar2 = iVar2 + -1;" (assignment_expression "iVar2 = iVar2 + -1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + -1" (identifier "iVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*piVar9 = 0;" (assignment_expression "*piVar9 = 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar2 = *unaff_s3;" (assignment_expression "iVar2 = *unaff_s3" (identifier "iVar2") (= "=") (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3"))) (; ";")) (expression_statement "iVar8 = (int)piVar15 + -1;" (assignment_expression "iVar8 = (int)piVar15 + -1" (identifier "iVar8") (= "=") (binary_expression "(int)piVar15 + -1" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10 = param_3 + ((int)piVar14 - (int)piVar15);" (assignment_expression "piVar10 = param_3 + ((int)piVar14 - (int)piVar15)" (identifier "piVar10") (= "=") (binary_expression "param_3 + ((int)piVar14 - (int)piVar15)" (identifier "param_3") (+ "+") (parenthesized_expression "((int)piVar14 - (int)piVar15)" (( "(") (binary_expression "(int)piVar14 - (int)piVar15" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (- "-") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) () ")")))) (; ";")) (expression_statement "piVar9 = piVar10;" (assignment_expression "piVar9 = piVar10" (identifier "piVar9") (= "=") (identifier "piVar10")) (; ";")) (expression_statement "piVar16 = piVar15;" (assignment_expression "piVar16 = piVar15" (identifier "piVar16") (= "=") (identifier "piVar15")) (; ";")) (expression_statement "piVar14 = unaff_s3;" (assignment_expression "piVar14 = unaff_s3" (identifier "piVar14") (= "=") (identifier "unaff_s3")) (; ";")) (if_statement "if (iVar8 != 0) {\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);\n        piVar16 = (int *)((int)piVar15 * 4 + -4);\n        piVar10 = piVar10 + (int)piVar15 + -1;\n      }" ({ "{") (do_statement "do {\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        } while (iVar8 != 0);" (do "do") (compound_statement "{\n          *piVar9 = iVar2;\n          iVar8 = iVar8 + -1;\n          iVar2 = piVar14[1];\n          piVar9 = piVar9 + 1;\n          piVar14 = piVar14 + 1;\n        }" ({ "{") (expression_statement "*piVar9 = iVar2;" (assignment_expression "*piVar9 = iVar2" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar2 = piVar14[1];" (assignment_expression "iVar2 = piVar14[1]" (identifier "iVar2") (= "=") (subscript_expression "piVar14[1]" (identifier "piVar14") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar14 = piVar14 + 1;" (assignment_expression "piVar14 = piVar14 + 1" (identifier "piVar14") (= "=") (binary_expression "piVar14 + 1" (identifier "piVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar16 = (int *)((int)piVar15 * 4 + -4);" (assignment_expression "piVar16 = (int *)((int)piVar15 * 4 + -4)" (identifier "piVar16") (= "=") (cast_expression "(int *)((int)piVar15 * 4 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 * 4 + -4)" (( "(") (binary_expression "(int)piVar15 * 4 + -4" (binary_expression "(int)piVar15 * 4" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (* "*") (number_literal "4")) (+ "+") (number_literal "-4")) () ")")))) (; ";")) (expression_statement "piVar10 = piVar10 + (int)piVar15 + -1;" (assignment_expression "piVar10 = piVar10 + (int)piVar15 + -1" (identifier "piVar10") (= "=") (binary_expression "piVar10 + (int)piVar15 + -1" (binary_expression "piVar10 + (int)piVar15" (identifier "piVar10") (+ "+") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "*piVar10 = iVar2;" (assignment_expression "*piVar10 = iVar2" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "piVar15 = piVar16;" (assignment_expression "piVar15 = piVar16" (identifier "piVar15") (= "=") (identifier "piVar16")) (; ";")) (labeled_statement "LAB_0001a530:\n      pcVar22 = *(code **)(puVar23 + -0x7f60);" (statement_identifier "LAB_0001a530") (: ":") (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7f60);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7f60)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar23 + -0x7f60)" (* "*") (cast_expression "(code **)(puVar23 + -0x7f60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7f60)" (( "(") (binary_expression "puVar23 + -0x7f60" (identifier "puVar23") (+ "+") (number_literal "-0x7f60")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "piVar14 = (int *)0x0;" (assignment_expression "piVar14 = (int *)0x0" (identifier "piVar14") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*pcVar22)(piVar4[3]);" (call_expression "(*pcVar22)(piVar4[3])" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(piVar4[3])" (( "(") (subscript_expression "piVar4[3]" (identifier "piVar4") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "piVar9 = *(int **)(puVar3 + -0x20);" (assignment_expression "piVar9 = *(int **)(puVar3 + -0x20)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(puVar3 + -0x20)" (* "*") (cast_expression "(int **)(puVar3 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x20)" (( "(") (binary_expression "puVar3 + -0x20" (identifier "puVar3") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar3 + -0x30)" (* "*") (cast_expression "(undefined **)(puVar3 + -0x30)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x30)" (( "(") (binary_expression "puVar3 + -0x30" (identifier "puVar3") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar12 = puVar26;" (assignment_expression "puVar12 = puVar26" (identifier "puVar12") (= "=") (identifier "puVar26")) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (**(code **)(puVar23 + -0x7a2c))();\n      puVar23 = *(undefined **)(puVar3 + -0x30);\n    }" ({ "{") (expression_statement "(**(code **)(puVar23 + -0x7a2c))();" (call_expression "(**(code **)(puVar23 + -0x7a2c))()" (parenthesized_expression "(**(code **)(puVar23 + -0x7a2c))" (( "(") (pointer_expression "**(code **)(puVar23 + -0x7a2c)" (* "*") (pointer_expression "*(code **)(puVar23 + -0x7a2c)" (* "*") (cast_expression "(code **)(puVar23 + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7a2c)" (( "(") (binary_expression "puVar23 + -0x7a2c" (identifier "puVar23") (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar23 = *(undefined **)(puVar3 + -0x30);" (assignment_expression "puVar23 = *(undefined **)(puVar3 + -0x30)" (identifier "puVar23") (= "=") (pointer_expression "*(undefined **)(puVar3 + -0x30)" (* "*") (cast_expression "(undefined **)(puVar3 + -0x30)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + -0x30)" (( "(") (binary_expression "puVar3 + -0x30" (identifier "puVar3") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (*(int *)(puVar3 + -0x1c) == *piVar17) {\n    return *piVar17;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar3 + -0x1c) == *piVar17)" (( "(") (binary_expression "*(int *)(puVar3 + -0x1c) == *piVar17" (pointer_expression "*(int *)(puVar3 + -0x1c)" (* "*") (cast_expression "(int *)(puVar3 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x1c)" (( "(") (binary_expression "puVar3 + -0x1c" (identifier "puVar3") (+ "+") (number_literal "-0x1c")) () ")")))) (== "==") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) () ")")) (compound_statement "{\n    return *piVar17;\n  }" ({ "{") (return_statement "return *piVar17;" (return "return") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (} "}"))) (expression_statement "pcVar22 = *(code **)(puVar23 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(puVar23 + -0x7b70)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(puVar23 + -0x7b70)" (* "*") (cast_expression "(code **)(puVar23 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar23 + -0x7b70)" (( "(") (binary_expression "puVar23 + -0x7b70" (identifier "puVar23") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar27 = puVar12;" (assignment_expression "puVar27 = puVar12" (identifier "puVar27") (= "=") (identifier "puVar12")) (; ";")) (labeled_statement "LAB_0001a630:\n  uVar28 = 0x1a638;" (statement_identifier "LAB_0001a630") (: ":") (expression_statement "uVar28 = 0x1a638;" (assignment_expression "uVar28 = 0x1a638" (identifier "uVar28") (= "=") (number_literal "0x1a638")) (; ";"))) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar24 = pcVar22 + 0x84a00;" (assignment_expression "pcVar24 = pcVar22 + 0x84a00" (identifier "pcVar24") (= "=") (binary_expression "pcVar22 + 0x84a00" (identifier "pcVar22") (+ "+") (number_literal "0x84a00"))) (; ";")) (expression_statement "*(int **)(puVar27 + -0xc) = unaff_s3;" (assignment_expression "*(int **)(puVar27 + -0xc) = unaff_s3" (pointer_expression "*(int **)(puVar27 + -0xc)" (* "*") (cast_expression "(int **)(puVar27 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0xc)" (( "(") (binary_expression "puVar27 + -0xc" (identifier "puVar27") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "piVar16 = *(int **)(pcVar22 + 0x7cf00);" (assignment_expression "piVar16 = *(int **)(pcVar22 + 0x7cf00)" (identifier "piVar16") (= "=") (pointer_expression "*(int **)(pcVar22 + 0x7cf00)" (* "*") (cast_expression "(int **)(pcVar22 + 0x7cf00)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar22 + 0x7cf00)" (( "(") (binary_expression "pcVar22 + 0x7cf00" (identifier "pcVar22") (+ "+") (number_literal "0x7cf00")) () ")"))))) (; ";")) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar24;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar24" (pointer_expression "*(code **)(puVar27 + -0x28)" (* "*") (cast_expression "(code **)(puVar27 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x28)" (( "(") (binary_expression "puVar27 + -0x28" (identifier "puVar27") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "pcVar24")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x14) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x14) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x14)" (* "*") (cast_expression "(int **)(puVar27 + -0x14)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x14)" (( "(") (binary_expression "puVar27 + -0x14" (identifier "puVar27") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "piVar17")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -4)" (( "(") (binary_expression "puVar27 + -4" (identifier "puVar27") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar28")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -8) = unaff_s4;" (assignment_expression "*(undefined4 *)(puVar27 + -8) = unaff_s4" (pointer_expression "*(undefined4 *)(puVar27 + -8)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -8)" (( "(") (binary_expression "puVar27 + -8" (identifier "puVar27") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x10) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x10) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x10)" (* "*") (cast_expression "(int **)(puVar27 + -0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x10)" (( "(") (binary_expression "puVar27 + -0x10" (identifier "puVar27") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x18) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x18) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x18)" (* "*") (cast_expression "(int **)(puVar27 + -0x18)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x18)" (( "(") (binary_expression "puVar27 + -0x18" (identifier "puVar27") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "*(int *)(puVar27 + -0x1c) = *piVar16;" (assignment_expression "*(int *)(puVar27 + -0x1c) = *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" (* "*") (cast_expression "(int *)(puVar27 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x1c)" (( "(") (binary_expression "puVar27 + -0x1c" (identifier "puVar27") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) (; ";")) (expression_statement "piVar17 = param_3;" (assignment_expression "piVar17 = param_3" (identifier "piVar17") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (piVar14 == (int *)0x0) {\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }\n  else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" (if "if") (parenthesized_expression "(piVar14 == (int *)0x0)" (( "(") (binary_expression "piVar14 == (int *)0x0" (identifier "piVar14") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    piVar9[2] = 0;\n    piVar9[1] = 0;\n    puVar12 = (undefined1 *)0x0;\n    piVar10 = piVar9;\n  }" ({ "{") (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12 = (undefined1 *)0x0;" (assignment_expression "puVar12 = (undefined1 *)0x0" (identifier "puVar12") (= "=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar10 = piVar9;" (assignment_expression "piVar10 = piVar9" (identifier "piVar10") (= "=") (identifier "piVar9")) (; ";")) (} "}")) (else_clause "else {\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" (else "else") (compound_statement "{\n    piVar4 = piVar14;\n    if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }\n    if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }\n    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);\n    iVar2 = *(int *)(puVar27 + -0x28);\n    pcVar22 = *(code **)(iVar2 + -0x7a40);\n    if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }\n    puVar12 = puVar27 + -0x20;\n    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);\n    pcVar24 = *(code **)(puVar27 + -0x28);\n    if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    piVar9[1] = (int)piVar4;\n    piVar15 = param_3;\n  }" ({ "{") (expression_statement "piVar4 = piVar14;" (assignment_expression "piVar4 = piVar14" (identifier "piVar4") (= "=") (identifier "piVar14")) (; ";")) (if_statement "if ((int)piVar14 < 0) {\n      piVar4 = (int *)-(int)piVar14;\n    }" (if "if") (parenthesized_expression "((int)piVar14 < 0)" (( "(") (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar4 = (int *)-(int)piVar14;\n    }" ({ "{") (expression_statement "piVar4 = (int *)-(int)piVar14;" (assignment_expression "piVar4 = (int *)-(int)piVar14" (identifier "piVar4") (= "=") (cast_expression "(int *)-(int)piVar14" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar14" (- "-") (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14"))))) (; ";")) (} "}"))) (if_statement "if (*piVar9 + 1 <= (int)piVar4) {\n      piVar4 = (int *)(*piVar9 + 1);\n    }" (if "if") (parenthesized_expression "(*piVar9 + 1 <= (int)piVar4)" (( "(") (binary_expression "*piVar9 + 1 <= (int)piVar4" (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "1")) (<= "<=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) () ")")) (compound_statement "{\n      piVar4 = (int *)(*piVar9 + 1);\n    }" ({ "{") (expression_statement "piVar4 = (int *)(*piVar9 + 1);" (assignment_expression "piVar4 = (int *)(*piVar9 + 1)" (identifier "piVar4") (= "=") (cast_expression "(int *)(*piVar9 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar9 + 1)" (( "(") (binary_expression "*piVar9 + 1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);" (call_expression "(**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4)" (parenthesized_expression "(**(code **)(pcVar22 + 0x7cb14))" (( "(") (pointer_expression "**(code **)(pcVar22 + 0x7cb14)" (* "*") (pointer_expression "*(code **)(pcVar22 + 0x7cb14)" (* "*") (cast_expression "(code **)(pcVar22 + 0x7cb14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar22 + 0x7cb14)" (( "(") (binary_expression "pcVar22 + 0x7cb14" (identifier "pcVar22") (+ "+") (number_literal "0x7cb14")) () ")"))))) () ")")) (argument_list "(piVar9[3],piVar4)" (( "(") (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")) (, ",") (identifier "piVar4") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x28)" (* "*") (cast_expression "(int *)(puVar27 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x28)" (( "(") (binary_expression "puVar27 + -0x28" (identifier "puVar27") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7a40);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7a40)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(iVar2 + -0x7a40)" (* "*") (cast_expression "(code **)(iVar2 + -0x7a40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7a40)" (( "(") (binary_expression "iVar2 + -0x7a40" (identifier "iVar2") (+ "+") (number_literal "-0x7a40")) () ")"))))) (; ";")) (if_statement "if (**(char **)(iVar2 + -0x7eb8) == '\0') {\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" (if "if") (parenthesized_expression "(**(char **)(iVar2 + -0x7eb8) == '\0')" (( "(") (binary_expression "**(char **)(iVar2 + -0x7eb8) == '\0'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" (* "*") (pointer_expression "*(char **)(iVar2 + -0x7eb8)" (* "*") (cast_expression "(char **)(iVar2 + -0x7eb8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7eb8)" (( "(") (binary_expression "iVar2 + -0x7eb8" (identifier "iVar2") (+ "+") (number_literal "-0x7eb8")) () ")"))))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);\n      **(char **)(iVar2 + -0x7eb8) = '\x01';\n      (*pcVar22)(uVar28);\n      iVar2 = *(int *)(puVar27 + -0x28);\n    }" ({ "{") (expression_statement "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);" (assignment_expression "uVar28 = *(undefined4 *)(iVar2 + -0x7dc4)" (identifier "uVar28") (= "=") (pointer_expression "*(undefined4 *)(iVar2 + -0x7dc4)" (* "*") (cast_expression "(undefined4 *)(iVar2 + -0x7dc4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0x7dc4)" (( "(") (binary_expression "iVar2 + -0x7dc4" (identifier "iVar2") (+ "+") (number_literal "-0x7dc4")) () ")"))))) (; ";")) (expression_statement "**(char **)(iVar2 + -0x7eb8) = '\x01';" (assignment_expression "**(char **)(iVar2 + -0x7eb8) = '\x01'" (pointer_expression "**(char **)(iVar2 + -0x7eb8)" (* "*") (pointer_expression "*(char **)(iVar2 + -0x7eb8)" (* "*") (cast_expression "(char **)(iVar2 + -0x7eb8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7eb8)" (( "(") (binary_expression "iVar2 + -0x7eb8" (identifier "iVar2") (+ "+") (number_literal "-0x7eb8")) () ")"))))) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "(*pcVar22)(uVar28);" (call_expression "(*pcVar22)(uVar28)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(uVar28)" (( "(") (identifier "uVar28") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x28);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x28)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x28)" (* "*") (cast_expression "(int *)(puVar27 + -0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x28)" (( "(") (binary_expression "puVar27 + -0x28" (identifier "puVar27") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar12 = puVar27 + -0x20;" (assignment_expression "puVar12 = puVar27 + -0x20" (identifier "puVar12") (= "=") (binary_expression "puVar27 + -0x20" (identifier "puVar27") (+ "+") (number_literal "-0x20"))) (; ";")) (expression_statement "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);" (call_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))\n              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" (parenthesized_expression "(**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))" (( "(") (pointer_expression "**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" (* "*") (pointer_expression "*(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" (* "*") (cast_expression "(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4)" (( "(") (binary_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4" (pointer_expression "*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" (* "*") (cast_expression "(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + -0x7dc4) + 0x10)" (( "(") (binary_expression "*(int *)(iVar2 + -0x7dc4) + 0x10" (pointer_expression "*(int *)(iVar2 + -0x7dc4)" (* "*") (cast_expression "(int *)(iVar2 + -0x7dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0x7dc4)" (( "(") (binary_expression "iVar2 + -0x7dc4" (identifier "iVar2") (+ "+") (number_literal "-0x7dc4")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar2 + -0x7dc4),puVar12,0x20)" (( "(") (pointer_expression "*(int *)(iVar2 + -0x7dc4)" (* "*") (cast_expression "(int *)(iVar2 + -0x7dc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + -0x7dc4)" (( "(") (binary_expression "iVar2 + -0x7dc4" (identifier "iVar2") (+ "+") (number_literal "-0x7dc4")) () ")")))) (, ",") (identifier "puVar12") (, ",") (number_literal "0x20") () ")"))) (; ";")) (expression_statement "pcVar24 = *(code **)(puVar27 + -0x28);" (assignment_expression "pcVar24 = *(code **)(puVar27 + -0x28)" (identifier "pcVar24") (= "=") (pointer_expression "*(code **)(puVar27 + -0x28)" (* "*") (cast_expression "(code **)(puVar27 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x28)" (( "(") (binary_expression "puVar27 + -0x28" (identifier "puVar27") (+ "+") (number_literal "-0x28")) () ")"))))) (; ";")) (if_statement "if ((int)param_3 < 0) {\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }\n    else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar17 = (int *)-(int)param_3;\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * -2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" ({ "{") (expression_statement "piVar17 = (int *)-(int)param_3;" (assignment_expression "piVar17 = (int *)-(int)param_3" (identifier "piVar17") (= "=") (cast_expression "(int *)-(int)param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)param_3" (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))))) (; ";")) (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(puVar27 + -0x20)" (* "*") (cast_expression "(int **)(puVar27 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x20)" (( "(") (binary_expression "puVar27 + -0x20" (identifier "puVar27") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "uVar11 = (int)param_3 * -2 + 1;" (assignment_expression "uVar11 = (int)param_3 * -2 + 1" (identifier "uVar11") (= "=") (binary_expression "(int)param_3 * -2 + 1" (binary_expression "(int)param_3 * -2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "-2")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(uint)piVar10 % uVar11 + (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar10")) (% "%") (identifier "uVar11")) (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" (if "if") (parenthesized_expression "((int)piVar14 < 0)" (( "(") (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" ({ "{") (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" (identifier "piVar4") (= "=") (cast_expression "(int *)-(int)piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar4" (- "-") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" (else "else") (compound_statement "{\n      piVar10 = *(int **)(puVar27 + -0x20);\n      uVar11 = (int)param_3 * 2 + 1;\n      if (uVar11 == 0) {\n        trap(7);\n      }\n      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;\n      if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }\n    }" ({ "{") (expression_statement "piVar10 = *(int **)(puVar27 + -0x20);" (assignment_expression "piVar10 = *(int **)(puVar27 + -0x20)" (identifier "piVar10") (= "=") (pointer_expression "*(int **)(puVar27 + -0x20)" (* "*") (cast_expression "(int **)(puVar27 + -0x20)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x20)" (( "(") (binary_expression "puVar27 + -0x20" (identifier "puVar27") (+ "+") (number_literal "-0x20")) () ")"))))) (; ";")) (expression_statement "uVar11 = (int)param_3 * 2 + 1;" (assignment_expression "uVar11 = (int)param_3 * 2 + 1" (identifier "uVar11") (= "=") (binary_expression "(int)param_3 * 2 + 1" (binary_expression "(int)param_3 * 2" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar11 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;" (assignment_expression "piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(uint)piVar10 % uVar11 - (int)param_3" (binary_expression "(uint)piVar10 % uVar11" (cast_expression "(uint)piVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar10")) (% "%") (identifier "uVar11")) (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if ((int)piVar14 < 0) {\n        piVar4 = (int *)-(int)piVar4;\n      }" (if "if") (parenthesized_expression "((int)piVar14 < 0)" (( "(") (binary_expression "(int)piVar14 < 0" (cast_expression "(int)piVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar14")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        piVar4 = (int *)-(int)piVar4;\n      }" ({ "{") (expression_statement "piVar4 = (int *)-(int)piVar4;" (assignment_expression "piVar4 = (int *)-(int)piVar4" (identifier "piVar4") (= "=") (cast_expression "(int *)-(int)piVar4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "-(int)piVar4" (- "-") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))))) (; ";")) (} "}"))) (} "}")))) (expression_statement "piVar9[1] = (int)piVar4;" (assignment_expression "piVar9[1] = (int)piVar4" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar4"))) (; ";")) (expression_statement "piVar15 = param_3;" (assignment_expression "piVar15 = param_3" (identifier "piVar15") (= "=") (identifier "param_3")) (; ";")) (} "}")))) (if_statement "if (*(int *)(puVar27 + -0x1c) == *piVar16) {\n    return *piVar16;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar27 + -0x1c) == *piVar16)" (( "(") (binary_expression "*(int *)(puVar27 + -0x1c) == *piVar16" (pointer_expression "*(int *)(puVar27 + -0x1c)" (* "*") (cast_expression "(int *)(puVar27 + -0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x1c)" (( "(") (binary_expression "puVar27 + -0x1c" (identifier "puVar27") (+ "+") (number_literal "-0x1c")) () ")")))) (== "==") (pointer_expression "*piVar16" (* "*") (identifier "piVar16"))) () ")")) (compound_statement "{\n    return *piVar16;\n  }" ({ "{") (return_statement "return *piVar16;" (return "return") (pointer_expression "*piVar16" (* "*") (identifier "piVar16")) (; ";")) (} "}"))) (expression_statement "pcVar22 = *(code **)(pcVar24 + -0x7b70);" (assignment_expression "pcVar22 = *(code **)(pcVar24 + -0x7b70)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(pcVar24 + -0x7b70)" (* "*") (cast_expression "(code **)(pcVar24 + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar24 + -0x7b70)" (( "(") (binary_expression "pcVar24 + -0x7b70" (identifier "pcVar24") (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar28 = 0x1a7b4;" (assignment_expression "uVar28 = 0x1a7b4" (identifier "uVar28") (= "=") (number_literal "0x1a7b4")) (; ";")) (expression_statement "(*pcVar22)();" (call_expression "(*pcVar22)()" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;" (assignment_expression "*(code **)(puVar27 + -0x70) = pcVar22 + 0x84880" (pointer_expression "*(code **)(puVar27 + -0x70)" (* "*") (cast_expression "(code **)(puVar27 + -0x70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (binary_expression "pcVar22 + 0x84880" (identifier "pcVar22") (+ "+") (number_literal "0x84880"))) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -0x3c) = uVar28;" (assignment_expression "*(undefined4 *)(puVar27 + -0x3c) = uVar28" (pointer_expression "*(undefined4 *)(puVar27 + -0x3c)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x3c)" (( "(") (binary_expression "puVar27 + -0x3c" (identifier "puVar27") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "uVar28")) (; ";")) (expression_statement "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;" (assignment_expression "*(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40" (pointer_expression "*(undefined1 **)(puVar27 + -0x40)" (* "*") (cast_expression "(undefined1 **)(puVar27 + -0x40)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x40)" (( "(") (binary_expression "puVar27 + -0x40" (identifier "puVar27") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (binary_expression "puVar3 + -0x40" (identifier "puVar3") (+ "+") (number_literal "-0x40"))) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -0x44) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar27 + -0x44) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar27 + -0x44)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x44)" (( "(") (binary_expression "puVar27 + -0x44" (identifier "puVar27") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -0x48) = unaff_s6;" (assignment_expression "*(undefined4 *)(puVar27 + -0x48) = unaff_s6" (pointer_expression "*(undefined4 *)(puVar27 + -0x48)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x48)" (( "(") (binary_expression "puVar27 + -0x48" (identifier "puVar27") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5;" (assignment_expression "*(undefined4 *)(puVar27 + -0x4c) = unaff_s5" (pointer_expression "*(undefined4 *)(puVar27 + -0x4c)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x4c)" (( "(") (binary_expression "puVar27 + -0x4c" (identifier "puVar27") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x50) = piVar14;" (assignment_expression "*(int **)(puVar27 + -0x50) = piVar14" (pointer_expression "*(int **)(puVar27 + -0x50)" (* "*") (cast_expression "(int **)(puVar27 + -0x50)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x50)" (( "(") (binary_expression "puVar27 + -0x50" (identifier "puVar27") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "piVar14")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x54) = piVar16;" (assignment_expression "*(int **)(puVar27 + -0x54) = piVar16" (pointer_expression "*(int **)(puVar27 + -0x54)" (* "*") (cast_expression "(int **)(puVar27 + -0x54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x54)" (( "(") (binary_expression "puVar27 + -0x54" (identifier "puVar27") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "piVar16")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x58) = piVar4;" (assignment_expression "*(int **)(puVar27 + -0x58) = piVar4" (pointer_expression "*(int **)(puVar27 + -0x58)" (* "*") (cast_expression "(int **)(puVar27 + -0x58)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x58)" (( "(") (binary_expression "puVar27 + -0x58" (identifier "puVar27") (+ "+") (number_literal "-0x58")) () ")")))) (= "=") (identifier "piVar4")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x5c) = piVar9;" (assignment_expression "*(int **)(puVar27 + -0x5c) = piVar9" (pointer_expression "*(int **)(puVar27 + -0x5c)" (* "*") (cast_expression "(int **)(puVar27 + -0x5c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x5c)" (( "(") (binary_expression "puVar27 + -0x5c" (identifier "puVar27") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (identifier "piVar9")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x60) = piVar15;" (assignment_expression "*(int **)(puVar27 + -0x60) = piVar15" (pointer_expression "*(int **)(puVar27 + -0x60)" (* "*") (cast_expression "(int **)(puVar27 + -0x60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x60)" (( "(") (binary_expression "puVar27 + -0x60" (identifier "puVar27") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (identifier "piVar15")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x38) = piVar10;" (assignment_expression "*(int **)(puVar27 + -0x38) = piVar10" (pointer_expression "*(int **)(puVar27 + -0x38)" (* "*") (cast_expression "(int **)(puVar27 + -0x38)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x38)" (( "(") (binary_expression "puVar27 + -0x38" (identifier "puVar27") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "piVar10")) (; ";")) (expression_statement "*(int **)(puVar27 + -0x30) = piVar17;" (assignment_expression "*(int **)(puVar27 + -0x30) = piVar17" (pointer_expression "*(int **)(puVar27 + -0x30)" (* "*") (cast_expression "(int **)(puVar27 + -0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x30)" (( "(") (binary_expression "puVar27 + -0x30" (identifier "puVar27") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "piVar17")) (; ";")) (if_statement "if (puVar12 == (undefined1 *)0x0) {\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" (if "if") (parenthesized_expression "(puVar12 == (undefined1 *)0x0)" (( "(") (binary_expression "puVar12 == (undefined1 *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);\n  }" ({ "{") (expression_statement "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);" (assignment_expression "puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54)" (identifier "puVar12") (= "=") (cast_expression "(undefined1 *)**(int **)(pcVar22 + 0x7cb54)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(int **)(pcVar22 + 0x7cb54)" (* "*") (pointer_expression "*(int **)(pcVar22 + 0x7cb54)" (* "*") (cast_expression "(int **)(pcVar22 + 0x7cb54)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar22 + 0x7cb54)" (( "(") (binary_expression "pcVar22 + 0x7cb54" (identifier "pcVar22") (+ "+") (number_literal "0x7cb54")) () ")"))))))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" (identifier "puVar3") (= "=") (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100)" (parenthesized_expression "(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" (* "*") (cast_expression "(code *)**(undefined4 **)(pcVar22 + 0x7cd4c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(pcVar22 + 0x7cd4c)" (* "*") (pointer_expression "*(undefined4 **)(pcVar22 + 0x7cd4c)" (* "*") (cast_expression "(undefined4 **)(pcVar22 + 0x7cd4c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar22 + 0x7cd4c)" (( "(") (binary_expression "pcVar22 + 0x7cd4c" (identifier "pcVar22") (+ "+") (number_literal "0x7cd4c")) () ")"))))))) () ")")) (argument_list "(100)" (( "(") (number_literal "100") () ")"))))) (; ";")) (expression_statement "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();" (assignment_expression "piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" (identifier "piVar4") (= "=") (cast_expression "(int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))()" (parenthesized_expression "(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))" (( "(") (pointer_expression "**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" (* "*") (pointer_expression "*(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" (* "*") (cast_expression "(code **)(*(int *)(puVar27 + -0x70) + -0x7f94)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7f94)" (( "(") (binary_expression "*(int *)(puVar27 + -0x70) + -0x7f94" (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7f94")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);" (do "do") (compound_statement "{\n    iVar19 = iVar8;\n    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    iVar8 = iVar19 + 1;\n  }" ({ "{") (expression_statement "iVar19 = iVar8;" (assignment_expression "iVar19 = iVar8" (identifier "iVar19") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);" (assignment_expression "iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12)" (identifier "iVar5") (= "=") (call_expression "(**(code **)(iVar2 + -0x7f3c))(puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7f3c))" (( "(") (pointer_expression "**(code **)(iVar2 + -0x7f3c)" (* "*") (pointer_expression "*(code **)(iVar2 + -0x7f3c)" (* "*") (cast_expression "(code **)(iVar2 + -0x7f3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7f3c)" (( "(") (binary_expression "iVar2 + -0x7f3c" (identifier "iVar2") (+ "+") (number_literal "-0x7f3c")) () ")"))))) () ")")) (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")")))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar19 + 1;" (assignment_expression "iVar8 = iVar19 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar19 + 1" (identifier "iVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0)" (( "(") (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" (( "(") (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" (* "*") (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar4 + iVar5 * 2)" (( "(") (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (binary_expression "iVar5 * 2" (identifier "iVar5") (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);" (assignment_expression "puVar20 = *(undefined4 **)(iVar2 + -0x7aa0)" (identifier "puVar20") (= "=") (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" (* "*") (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7aa0)" (( "(") (binary_expression "iVar2 + -0x7aa0" (identifier "iVar2") (+ "+") (number_literal "-0x7aa0")) () ")"))))) (; ";")) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(iVar2 + -0x7f3c)" (* "*") (cast_expression "(code **)(iVar2 + -0x7f3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7f3c)" (( "(") (binary_expression "iVar2 + -0x7f3c" (identifier "iVar2") (+ "+") (number_literal "-0x7f3c")) () ")"))))) (; ";")) (expression_statement "uVar7 = 100;" (assignment_expression "uVar7 = 100" (identifier "uVar7") (= "=") (number_literal "100")) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar6 = puVar3;" (assignment_expression "puVar6 = puVar3" (identifier "puVar6") (= "=") (identifier "puVar3")) (; ";")) (while_statement "while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" (while "while") (parenthesized_expression "((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)))" (( "(") (parenthesized_expression "(iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))" (( "(") (binary_expression "iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" (binary_expression "iVar5 != -1" (identifier "iVar5") (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0)" (( "(") (comma_expression "uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (assignment_expression "uVar18 = uVar11 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (, ",") (binary_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0" (parenthesized_expression "(*(ushort *)(*piVar4 + iVar5 * 2) & 0x20)" (( "(") (binary_expression "*(ushort *)(*piVar4 + iVar5 * 2) & 0x20" (pointer_expression "*(ushort *)(*piVar4 + iVar5 * 2)" (* "*") (cast_expression "(ushort *)(*piVar4 + iVar5 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar4 + iVar5 * 2)" (( "(") (binary_expression "*piVar4 + iVar5 * 2" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (binary_expression "iVar5 * 2" (identifier "iVar5") (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n    *puVar3 = (char)iVar5;\n    iVar5 = (*pcVar22)(puVar12);\n    iVar2 = *(int *)(puVar27 + -0x70);\n    uVar11 = uVar7 * 3 >> 1;\n    if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }\n    pcVar22 = *(code **)(iVar2 + -0x7f3c);\n    puVar3 = puVar6 + uVar18;\n    uVar11 = uVar18;\n  }" ({ "{") (expression_statement "*puVar3 = (char)iVar5;" (assignment_expression "*puVar3 = (char)iVar5" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (cast_expression "(char)iVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar5"))) (; ";")) (expression_statement "iVar5 = (*pcVar22)(puVar12);" (assignment_expression "iVar5 = (*pcVar22)(puVar12)" (identifier "iVar5") (= "=") (call_expression "(*pcVar22)(puVar12)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")")))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar7 * 3 >> 1;" (assignment_expression "uVar11 = uVar7 * 3 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (uVar7 <= uVar18) {\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" (if "if") (parenthesized_expression "(uVar7 <= uVar18)" (( "(") (binary_expression "uVar7 <= uVar18" (identifier "uVar7") (<= "<=") (identifier "uVar18")) () ")")) (compound_statement "{\n      pcVar22 = (code *)*puVar20;\n      *(int *)(puVar27 + -100) = iVar5;\n      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);\n      iVar2 = *(int *)(puVar27 + -0x70);\n      iVar5 = *(int *)(puVar27 + -100);\n      uVar7 = uVar11;\n    }" ({ "{") (expression_statement "pcVar22 = (code *)*puVar20;" (assignment_expression "pcVar22 = (code *)*puVar20" (identifier "pcVar22") (= "=") (cast_expression "(code *)*puVar20" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar20" (* "*") (identifier "puVar20")))) (; ";")) (expression_statement "*(int *)(puVar27 + -100) = iVar5;" (assignment_expression "*(int *)(puVar27 + -100) = iVar5" (pointer_expression "*(int *)(puVar27 + -100)" (* "*") (cast_expression "(int *)(puVar27 + -100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -100)" (( "(") (binary_expression "puVar27 + -100" (identifier "puVar27") (+ "+") (number_literal "-100")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);" (assignment_expression "puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar22)(puVar6,uVar7,uVar11)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(puVar6,uVar7,uVar11)" (( "(") (identifier "puVar6") (, ",") (identifier "uVar7") (, ",") (identifier "uVar11") () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(puVar27 + -100);" (assignment_expression "iVar5 = *(int *)(puVar27 + -100)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(puVar27 + -100)" (* "*") (cast_expression "(int *)(puVar27 + -100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -100)" (( "(") (binary_expression "puVar27 + -100" (identifier "puVar27") (+ "+") (number_literal "-100")) () ")"))))) (; ";")) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" (identifier "uVar7") (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7f3c);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7f3c)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(iVar2 + -0x7f3c)" (* "*") (cast_expression "(code **)(iVar2 + -0x7f3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7f3c)" (( "(") (binary_expression "iVar2 + -0x7f3c" (identifier "iVar2") (+ "+") (number_literal "-0x7f3c")) () ")"))))) (; ";")) (expression_statement "puVar3 = puVar6 + uVar18;" (assignment_expression "puVar3 = puVar6 + uVar18" (identifier "puVar3") (= "=") (binary_expression "puVar6 + uVar18" (identifier "puVar6") (+ "+") (identifier "uVar18"))) (; ";")) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" (identifier "uVar11") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);" (call_expression "(**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12)" (parenthesized_expression "(**(code **)(iVar2 + -0x7d5c))" (( "(") (pointer_expression "**(code **)(iVar2 + -0x7d5c)" (* "*") (pointer_expression "*(code **)(iVar2 + -0x7d5c)" (* "*") (cast_expression "(code **)(iVar2 + -0x7d5c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7d5c)" (( "(") (binary_expression "iVar2 + -0x7d5c" (identifier "iVar2") (+ "+") (number_literal "-0x7d5c")) () ")"))))) () ")")) (argument_list "(iVar5,puVar12)" (( "(") (identifier "iVar5") (, ",") (identifier "puVar12") () ")"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (expression_statement "uVar18 = uVar7;" (assignment_expression "uVar18 = uVar7" (identifier "uVar18") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar7 <= uVar11) {\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" (if "if") (parenthesized_expression "(uVar7 <= uVar11)" (( "(") (binary_expression "uVar7 <= uVar11" (identifier "uVar7") (<= "<=") (identifier "uVar11")) () ")")) (compound_statement "{\n    uVar18 = uVar7 * 3 >> 1;\n    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);\n    iVar2 = *(int *)(puVar27 + -0x70);\n  }" ({ "{") (expression_statement "uVar18 = uVar7 * 3 >> 1;" (assignment_expression "uVar18 = uVar7 * 3 >> 1" (identifier "uVar18") (= "=") (binary_expression "uVar7 * 3 >> 1" (binary_expression "uVar7 * 3" (identifier "uVar7") (* "*") (number_literal "3")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);" (assignment_expression "puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(iVar2 + -0x7aa0)" (* "*") (cast_expression "(code *)**(undefined4 **)(iVar2 + -0x7aa0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(iVar2 + -0x7aa0)" (* "*") (pointer_expression "*(undefined4 **)(iVar2 + -0x7aa0)" (* "*") (cast_expression "(undefined4 **)(iVar2 + -0x7aa0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7aa0)" (( "(") (binary_expression "iVar2 + -0x7aa0" (identifier "iVar2") (+ "+") (number_literal "-0x7aa0")) () ")"))))))) () ")")) (argument_list "(puVar6,uVar7,uVar18)" (( "(") (identifier "puVar6") (, ",") (identifier "uVar7") (, ",") (identifier "uVar18") () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar27 + -0x70);" (assignment_expression "iVar2 = *(int *)(puVar27 + -0x70)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar22 = *(code **)(iVar2 + -0x7ae8);" (assignment_expression "pcVar22 = *(code **)(iVar2 + -0x7ae8)" (identifier "pcVar22") (= "=") (pointer_expression "*(code **)(iVar2 + -0x7ae8)" (* "*") (cast_expression "(code **)(iVar2 + -0x7ae8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + -0x7ae8)" (( "(") (binary_expression "iVar2 + -0x7ae8" (identifier "iVar2") (+ "+") (number_literal "-0x7ae8")) () ")"))))) (; ";")) (expression_statement "uVar28 = *(undefined4 *)(puVar27 + -0x38);" (assignment_expression "uVar28 = *(undefined4 *)(puVar27 + -0x38)" (identifier "uVar28") (= "=") (pointer_expression "*(undefined4 *)(puVar27 + -0x38)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x38)" (( "(") (binary_expression "puVar27 + -0x38" (identifier "puVar27") (+ "+") (number_literal "-0x38")) () ")"))))) (; ";")) (expression_statement "uVar13 = *(undefined4 *)(puVar27 + -0x30);" (assignment_expression "uVar13 = *(undefined4 *)(puVar27 + -0x30)" (identifier "uVar13") (= "=") (pointer_expression "*(undefined4 *)(puVar27 + -0x30)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x30)" (( "(") (binary_expression "puVar27 + -0x30" (identifier "puVar27") (+ "+") (number_literal "-0x30")) () ")"))))) (; ";")) (expression_statement "puVar6[uVar11] = 0;" (assignment_expression "puVar6[uVar11] = 0" (subscript_expression "puVar6[uVar11]" (identifier "puVar6") ([ "[") (identifier "uVar11") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);" (assignment_expression "iVar2 = (*pcVar22)(uVar28,puVar6,uVar13)" (identifier "iVar2") (= "=") (call_expression "(*pcVar22)(uVar28,puVar6,uVar13)" (parenthesized_expression "(*pcVar22)" (( "(") (pointer_expression "*pcVar22" (* "*") (identifier "pcVar22")) () ")")) (argument_list "(uVar28,puVar6,uVar13)" (( "(") (identifier "uVar28") (, ",") (identifier "puVar6") (, ",") (identifier "uVar13") () ")")))) (; ";")) (expression_statement "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);" (call_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18)" (parenthesized_expression "(*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))" (( "(") (pointer_expression "*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" (* "*") (cast_expression "(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" (* "*") (pointer_expression "*(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" (* "*") (cast_expression "(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar27 + -0x70) + -0x7e70)" (( "(") (binary_expression "*(int *)(puVar27 + -0x70) + -0x7e70" (pointer_expression "*(int *)(puVar27 + -0x70)" (* "*") (cast_expression "(int *)(puVar27 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x70)" (( "(") (binary_expression "puVar27 + -0x70" (identifier "puVar27") (+ "+") (number_literal "-0x70")) () ")")))) (+ "+") (number_literal "-0x7e70")) () ")"))))))) () ")")) (argument_list "(puVar6,uVar18)" (( "(") (identifier "puVar6") (, ",") (identifier "uVar18") () ")"))) (; ";")) (if_statement "if (iVar2 != -1) {\n    return iVar19 + uVar11;\n  }" (if "if") (parenthesized_expression "(iVar2 != -1)" (( "(") (binary_expression "iVar2 != -1" (identifier "iVar2") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n    return iVar19 + uVar11;\n  }" ({ "{") (return_statement "return iVar19 + uVar11;" (return "return") (binary_expression "iVar19 + uVar11" (identifier "iVar19") (+ "+") (identifier "uVar11")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

void function_1(type_1 *rdiff,type_2 x,type_2 y)

{
  type_3 *puVar1;
  int var_1;
  type_4 mVar3;
  type_1 *p_Var4;
  type_5 *var_7;
  type_5 *var_22;
  int var_5;
  type_2 p_Var8;
  type_4 *var_13;
  type_1 *p_Var10;
  type_6 var_9;
  type_5 *var_12;
  type_1 *var_15;
  type_6 var_2;
  type_1 *var_18;
  type_7 uVar16;
  type_2 var_11;
  type_4 *var_14;
  type_2 var_8;
  int *piVar20;
  type_6 var_21;
  type_1 *unaff_s2;
  type_1 *unaff_s3;
  int *piVar22;
  type_7 unaff_s4;
  type_7 unaff_s5;
  type_7 unaff_s6;
  type_7 *puVar23;
  type_7 unaff_s7;
  type_3 *var_6;
  type_8 *var_16;
  type_3 *var_10;
  type_8 *var_20;
  type_5 *puVar28;
  type_5 *puVar29;
  type_5 *var_17;
  type_7 uVar31;
  type_5 var_3 [16];
  type_9 *var_4;
  type_10 d;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  var_7 = var_3;
  puVar28 = var_3;
  var_1 = x->_mp_size;
  var_5 = *(int *)PTR___stack_chk_guard_00097540;
  if (var_1 == 0) {
    var_18 = (type_1 *)(type_6)(y->_mp_size != 0);
    (*(type_8 *)PTR___gmpf_set_ui_00097428)();
    p_Var10 = rdiff;
  }
  else {
    var_4 = (type_9 *)0x0;
    if (var_1 < 0) {
      var_1 = -var_1;
    }
    d[0]._mp_prec = var_1 + rdiff->_mp_prec;
    var_2 = (d[0]._mp_prec + 1) * 4;
    if (var_2 < 0x7f01) {
      var_1 = -(var_2 + 7 & 0xfffffff8);
      puVar28 = var_3 + var_1;
      d[0]._mp_d = (type_4 *)((int)d + var_1 + -0x14);
    }
    else {
      d[0]._mp_d = (type_4 *)(*(type_8 *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&var_4);
    }
    unaff_s3 = d;
    (*(type_8 *)PTR___gmpf_sub_0009725c)(unaff_s3,x,y);
    if (d[0]._mp_size < 0) {
      d[0]._mp_size = -d[0]._mp_size;
    }
    var_18 = unaff_s3;
    y = x;
    (*(type_8 *)PTR___gmpf_div_00097230)(rdiff);
    p_Var10 = (type_1 *)var_4;
    unaff_s2 = rdiff;
    var_7 = puVar28;
    if (var_4 != (type_9 *)0x0) {
      (*(type_8 *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  if (var_5 == *(int *)puVar1) {
    return;
  }
  uVar31 = 0x1a418;
  var_6 = PTR___stack_chk_fail_000974d0;
  (*(type_8 *)PTR___stack_chk_fail_000974d0)();
  var_10 = var_6 + 0x84c20;
  var_17 = var_7 + -0x40;
  var_12 = var_7 + -0x40;
  puVar29 = var_7 + -0x40;
  *(type_2 *)(var_7 + -0x14) = x;
  *(type_3 **)(var_7 + -0x18) = puVar1;
  piVar20 = *(int **)(var_6 + 0x7d120);
  var_8 = (type_2)var_18->_mp_size;
  *(type_5 **)(var_7 + -8) = var_3;
  *(type_1 **)(var_7 + -0x10) = unaff_s2;
  *(type_7 *)(var_7 + -4) = uVar31;
  *(type_1 **)(var_7 + -0xc) = unaff_s3;
  *(type_3 **)(var_7 + -0x30) = var_10;
  *(int *)(var_7 + -0x1c) = *piVar20;
  if ((int)var_8 < 1) {
    var_16 = *(type_8 **)(var_6 + 0x7cdac);
    var_15 = p_Var10;
    if (var_8 != (type_2)0x0) goto LAB_0001a630;
    p_Var10->_mp_size = 0;
    p_Var10->_mp_exp = 0;
  }
  else {
    var_2 = var_18->_mp_exp;
    var_1 = p_Var10->_mp_prec;
    unaff_s3 = (type_1 *)var_18->_mp_d;
    var_9 = var_2 & 1;
    *(type_7 *)(var_7 + -0x20) = 0;
    p_Var10->_mp_size = var_1;
    var_11 = (type_2)(var_1 * 2 - var_9);
    p_Var10->_mp_exp = (int)(var_2 + var_9) / 2;
    if ((type_6)((int)var_11 * 4) < 0x7f01) {
      var_1 = -((int)var_11 * 4 + 7U & 0xfffffff8);
      puVar29 = var_7 + var_1 + -0x40;
      y = (type_2)(var_7 + var_1 + -0x30);
    }
    else {
      var_16 = *(type_8 **)(var_6 + 0x7ced0);
      *(type_2 *)(var_7 + -0x24) = var_11;
      y = (type_2)(*var_16)(var_7 + -0x20);
      var_10 = *(type_3 **)(var_7 + -0x30);
      var_11 = *(type_2 *)(var_7 + -0x24);
    }
    if ((int)var_11 < (int)var_8) {
      var_16 = *(type_8 **)(var_10 + -0x7f60);
      if (var_11 != (type_2)0x0) {
        var_12 = (type_5 *)((int)&var_11[-1]._mp_d + 3);
        var_13 = (type_4 *)((int)unaff_s3 + ((int)var_8 - (int)var_11) * 4);
        mVar3 = *var_13;
        p_Var8 = y;
        if (var_12 == (type_5 *)0x0) {
          y->_mp_prec = mVar3;
        }
        else {
          do {
            var_13 = var_13 + 1;
            p_Var8->_mp_prec = mVar3;
            var_12 = var_12 + -1;
            mVar3 = *var_13;
            p_Var8 = (type_2)&p_Var8->_mp_size;
          } while (var_12 != (type_5 *)0x0);
          *(type_4 *)((int)y + (int)var_11 * 4 + -4) = mVar3;
        }
        goto LAB_0001a530;
      }
    }
    else {
      p_Var8 = y;
      var_1 = (int)var_11 - (int)var_8;
      if (var_8 != var_11) {
        do {
          var_1 = var_1 + -1;
          p_Var8->_mp_prec = 0;
          p_Var8 = (type_2)&p_Var8->_mp_size;
        } while (var_1 != 0);
      }
      mVar3 = unaff_s3->_mp_prec;
      var_12 = (type_5 *)((int)&var_8[-1]._mp_d + 3);
      var_14 = (type_4 *)((int)y + ((int)var_11 - (int)var_8) * 4);
      var_13 = var_14;
      var_11 = var_8;
      var_18 = unaff_s3;
      if (var_12 != (type_5 *)0x0) {
        do {
          *var_13 = mVar3;
          var_12 = var_12 + -1;
          mVar3 = var_18->_mp_size;
          var_13 = var_13 + 1;
          var_18 = (type_1 *)&var_18->_mp_size;
        } while (var_12 != (type_5 *)0x0);
        var_11 = (type_2)((int)var_8 * 4 + -4);
        var_14 = var_14 + (int)((int)&var_8[-1]._mp_d + 3);
      }
      *var_14 = mVar3;
      var_8 = var_11;
LAB_0001a530:
      var_16 = *(type_8 **)(var_10 + -0x7f60);
    }
    var_18 = (type_1 *)0x0;
    (*var_16)(p_Var10->_mp_d);
    var_15 = *(type_1 **)(var_7 + -0x20);
    var_10 = *(type_3 **)(var_7 + -0x30);
    var_12 = puVar29;
    if (var_15 != (type_1 *)0x0) {
      (**(type_8 **)(var_10 + -0x7a2c))();
      var_10 = *(type_3 **)(var_7 + -0x30);
    }
  }
  if (*(int *)(var_7 + -0x1c) == *piVar20) {
    return;
  }
  var_16 = *(type_8 **)(var_10 + -0x7b70);
  (*var_16)();
  var_17 = var_12;
LAB_0001a630:
  uVar31 = 0x1a638;
  (*var_16)();
  var_20 = var_16 + 0x84a00;
  *(type_1 **)(var_17 + -0xc) = unaff_s3;
  piVar22 = *(int **)(var_16 + 0x7cf00);
  *(type_8 **)(var_17 + -0x28) = var_20;
  *(int **)(var_17 + -0x14) = piVar20;
  *(type_7 *)(var_17 + -4) = uVar31;
  *(type_7 *)(var_17 + -8) = unaff_s4;
  *(type_1 **)(var_17 + -0x10) = p_Var10;
  *(type_2 *)(var_17 + -0x18) = var_8;
  *(int *)(var_17 + -0x1c) = *piVar22;
  var_11 = y;
  if (var_18 == (type_1 *)0x0) {
    var_15->_mp_exp = 0;
    var_15->_mp_size = 0;
    var_12 = (type_5 *)0x0;
    p_Var4 = var_15;
  }
  else {
    p_Var10 = var_18;
    if ((int)var_18 < 0) {
      p_Var10 = (type_1 *)-(int)var_18;
    }
    p_Var4 = (type_1 *)(var_15->_mp_prec + 1);
    if ((int)p_Var4 <= (int)p_Var10) {
      p_Var10 = p_Var4;
    }
    (**(type_8 **)(var_16 + 0x7cb14))(var_15->_mp_d,p_Var10);
    var_1 = *(int *)(var_17 + -0x28);
    var_16 = *(type_8 **)(var_1 + -0x7a40);
    if (**(char **)(var_1 + -0x7eb8) == '\0') {
      uVar31 = *(type_7 *)(var_1 + -0x7dc4);
      **(char **)(var_1 + -0x7eb8) = '\x01';
      (*var_16)(uVar31);
      var_1 = *(int *)(var_17 + -0x28);
    }
    var_12 = var_17 + -0x20;
    (**(type_8 **)(*(int *)(*(int *)(var_1 + -0x7dc4) + 0x10) + 4))
              (*(int *)(var_1 + -0x7dc4),var_12,0x20);
    var_20 = *(type_8 **)(var_17 + -0x28);
    if ((int)y < 0) {
      var_11 = (type_2)-(int)y;
      p_Var4 = *(type_1 **)(var_17 + -0x20);
      var_2 = (int)y * -2 + 1;
      if (var_2 == 0) {
        var_19(7);
      }
      var_15->_mp_exp = (int)&y->_mp_prec + (type_6)p_Var4 % var_2;
      if ((int)var_18 < 0) {
        p_Var10 = (type_1 *)-(int)p_Var10;
      }
    }
    else {
      p_Var4 = *(type_1 **)(var_17 + -0x20);
      var_2 = (int)y * 2 + 1;
      if (var_2 == 0) {
        var_19(7);
      }
      var_15->_mp_exp = (type_6)p_Var4 % var_2 - (int)y;
      if ((int)var_18 < 0) {
        p_Var10 = (type_1 *)-(int)p_Var10;
      }
    }
    var_15->_mp_size = (int)p_Var10;
    var_8 = y;
  }
  if (*(int *)(var_17 + -0x1c) == *piVar22) {
    return;
  }
  var_16 = *(type_8 **)(var_20 + -0x7b70);
  uVar31 = 0x1a7b4;
  (*var_16)();
  *(type_8 **)(var_17 + -0x70) = var_16 + 0x84880;
  *(type_7 *)(var_17 + -0x3c) = uVar31;
  *(type_5 **)(var_17 + -0x40) = var_7 + -0x40;
  *(type_7 *)(var_17 + -0x44) = unaff_s7;
  *(type_7 *)(var_17 + -0x48) = unaff_s6;
  *(type_7 *)(var_17 + -0x4c) = unaff_s5;
  *(type_1 **)(var_17 + -0x50) = var_18;
  *(int **)(var_17 + -0x54) = piVar22;
  *(type_1 **)(var_17 + -0x58) = p_Var10;
  *(type_1 **)(var_17 + -0x5c) = var_15;
  *(type_2 *)(var_17 + -0x60) = var_8;
  *(type_1 **)(var_17 + -0x38) = p_Var4;
  *(type_2 *)(var_17 + -0x30) = var_11;
  if (var_12 == (type_5 *)0x0) {
    var_12 = (type_5 *)**(int **)(var_16 + 0x7cb54);
  }
  var_7 = (type_5 *)(*(type_8 *)**(type_7 **)(var_16 + 0x7cd4c))(100);
  piVar20 = (int *)(**(type_8 **)(*(int *)(var_17 + -0x70) + -0x7f94))();
  var_1 = *(int *)(var_17 + -0x70);
  do {
    var_5 = (**(type_8 **)(var_1 + -0x7f3c))(var_12);
    var_1 = *(int *)(var_17 + -0x70);
  } while ((*(type_11 *)(*piVar20 + var_5 * 2) & 0x20) != 0);
  puVar23 = *(type_7 **)(var_1 + -0x7aa0);
  var_16 = *(type_8 **)(var_1 + -0x7f3c);
  var_9 = 100;
  var_2 = 0;
  var_22 = var_7;
  while ((var_5 != -1 && (var_21 = var_2 + 1, (*(type_11 *)(*piVar20 + var_5 * 2) & 0x20) == 0))) {
    *var_7 = (char)var_5;
    var_5 = (*var_16)(var_12);
    var_1 = *(int *)(var_17 + -0x70);
    var_2 = var_9 * 3 >> 1;
    if (var_9 <= var_21) {
      var_16 = (type_8 *)*puVar23;
      *(int *)(var_17 + -100) = var_5;
      var_22 = (type_5 *)(*var_16)(var_22,var_9,var_2);
      var_1 = *(int *)(var_17 + -0x70);
      var_5 = *(int *)(var_17 + -100);
      var_9 = var_2;
    }
    var_16 = *(type_8 **)(var_1 + -0x7f3c);
    var_7 = var_22 + var_21;
    var_2 = var_21;
  }
  (**(type_8 **)(var_1 + -0x7d5c))(var_5,var_12);
  var_1 = *(int *)(var_17 + -0x70);
  var_21 = var_9;
  if (var_9 <= var_2) {
    var_21 = var_9 * 3 >> 1;
    var_22 = (type_5 *)(*(type_8 *)**(type_7 **)(var_1 + -0x7aa0))(var_22,var_9,var_21);
    var_1 = *(int *)(var_17 + -0x70);
  }
  var_16 = *(type_8 **)(var_1 + -0x7ae8);
  uVar31 = *(type_7 *)(var_17 + -0x38);
  uVar16 = *(type_7 *)(var_17 + -0x30);
  var_22[var_2] = 0;
  var_1 = (*var_16)(uVar31,var_22,uVar16);
  (*(type_8 *)**(type_7 **)(*(int *)(var_17 + -0x70) + -0x7e70))(var_22,var_21);
  if (var_1 != -1) {
    return;
  }
  return;
}


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

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

{
  undefined *puVar1;
  int iVar2;
  undefined1 *puVar3;
  int *piVar4;
  int iVar5;
  undefined1 *puVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  int *piVar10;
  uint uVar11;
  undefined1 *puVar12;
  undefined4 uVar13;
  int *piVar14;
  int *piVar15;
  int *piVar16;
  int *piVar17;
  uint uVar18;
  int *unaff_s2;
  int *unaff_s3;
  int iVar19;
  undefined4 unaff_s4;
  undefined4 unaff_s5;
  undefined4 unaff_s6;
  undefined4 *puVar20;
  undefined4 unaff_s7;
  undefined *puVar21;
  code *pcVar22;
  undefined *puVar23;
  code *pcVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined1 *puVar27;
  undefined4 uVar28;
  undefined1 auStack_50 [16];
  int *local_30;
  int local_2c;
  int local_28;
  undefined1 *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_00097540;
  puVar3 = auStack_50;
  puVar25 = auStack_50;
  iVar2 = param_2[1];
  local_1c = *(int *)PTR___stack_chk_guard_00097540;
  if (iVar2 == 0) {
    piVar14 = (int *)(uint)(param_3[1] != 0);
    (*(code *)PTR___gmpf_set_ui_00097428)();
    piVar4 = param_1;
  }
  else {
    local_30 = (int *)0x0;
    if (iVar2 < 0) {
      iVar2 = -iVar2;
    }
    local_2c = iVar2 + *param_1;
    uVar11 = (local_2c + 1) * 4;
    if (uVar11 < 0x7f01) {
      iVar2 = -(uVar11 + 7 & 0xfffffff8);
      puVar25 = auStack_50 + iVar2;
      local_20 = &stack0xffffffc0 + iVar2;
    }
    else {
      local_20 = (undefined1 *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30);
    }
    unaff_s3 = &local_2c;
    (*(code *)PTR___gmpf_sub_0009725c)(unaff_s3,param_2,param_3);
    if (local_28 < 0) {
      local_28 = -local_28;
    }
    piVar14 = unaff_s3;
    param_3 = param_2;
    (*(code *)PTR___gmpf_div_00097230)(param_1);
    piVar4 = local_30;
    unaff_s2 = param_1;
    puVar3 = puVar25;
    if (local_30 != (int *)0x0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
  }
  iVar2 = *(int *)puVar1;
  if (local_1c == iVar2) {
    return iVar2;
  }
  uVar28 = 0x1a418;
  puVar21 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puVar23 = puVar21 + 0x84c20;
  puVar27 = puVar3 + -0x40;
  puVar12 = puVar3 + -0x40;
  puVar26 = puVar3 + -0x40;
  *(int **)(puVar3 + -0x14) = param_2;
  *(undefined **)(puVar3 + -0x18) = puVar1;
  piVar17 = *(int **)(puVar21 + 0x7d120);
  piVar15 = (int *)piVar14[1];
  *(undefined1 **)(puVar3 + -8) = auStack_50;
  *(int **)(puVar3 + -0x10) = unaff_s2;
  *(undefined4 *)(puVar3 + -4) = uVar28;
  *(int **)(puVar3 + -0xc) = unaff_s3;
  *(undefined **)(puVar3 + -0x30) = puVar23;
  *(int *)(puVar3 + -0x1c) = *piVar17;
  if ((int)piVar15 < 1) {
    pcVar22 = *(code **)(puVar21 + 0x7cdac);
    piVar9 = piVar4;
    if (piVar15 != (int *)0x0) goto LAB_0001a630;
    piVar4[1] = 0;
    piVar4[2] = 0;
  }
  else {
    uVar11 = piVar14[2];
    iVar2 = *piVar4;
    unaff_s3 = (int *)piVar14[3];
    uVar7 = uVar11 & 1;
    *(undefined4 *)(puVar3 + -0x20) = 0;
    piVar4[1] = iVar2;
    piVar14 = (int *)(iVar2 * 2 - uVar7);
    piVar4[2] = (int)(uVar11 + uVar7) / 2;
    if ((uint)((int)piVar14 * 4) < 0x7f01) {
      iVar2 = -((int)piVar14 * 4 + 7U & 0xfffffff8);
      puVar26 = puVar3 + iVar2 + -0x40;
      param_3 = (int *)(puVar3 + iVar2 + -0x30);
    }
    else {
      pcVar22 = *(code **)(puVar21 + 0x7ced0);
      *(int **)(puVar3 + -0x24) = piVar14;
      param_3 = (int *)(*pcVar22)(puVar3 + -0x20);
      puVar23 = *(undefined **)(puVar3 + -0x30);
      piVar14 = *(int **)(puVar3 + -0x24);
    }
    if ((int)piVar14 < (int)piVar15) {
      pcVar22 = *(code **)(puVar23 + -0x7f60);
      if (piVar14 != (int *)0x0) {
        iVar8 = (int)piVar14 + -1;
        piVar16 = unaff_s3 + ((int)piVar15 - (int)piVar14);
        iVar2 = *piVar16;
        piVar9 = param_3;
        if (iVar8 == 0) {
          *param_3 = iVar2;
        }
        else {
          do {
            piVar16 = piVar16 + 1;
            *piVar9 = iVar2;
            iVar8 = iVar8 + -1;
            iVar2 = *piVar16;
            piVar9 = piVar9 + 1;
          } while (iVar8 != 0);
          param_3[(int)piVar14 + -1] = iVar2;
        }
        goto LAB_0001a530;
      }
    }
    else {
      piVar9 = param_3;
      iVar2 = (int)piVar14 - (int)piVar15;
      if (piVar15 != piVar14) {
        do {
          iVar2 = iVar2 + -1;
          *piVar9 = 0;
          piVar9 = piVar9 + 1;
        } while (iVar2 != 0);
      }
      iVar2 = *unaff_s3;
      iVar8 = (int)piVar15 + -1;
      piVar10 = param_3 + ((int)piVar14 - (int)piVar15);
      piVar9 = piVar10;
      piVar16 = piVar15;
      piVar14 = unaff_s3;
      if (iVar8 != 0) {
        do {
          *piVar9 = iVar2;
          iVar8 = iVar8 + -1;
          iVar2 = piVar14[1];
          piVar9 = piVar9 + 1;
          piVar14 = piVar14 + 1;
        } while (iVar8 != 0);
        piVar16 = (int *)((int)piVar15 * 4 + -4);
        piVar10 = piVar10 + (int)piVar15 + -1;
      }
      *piVar10 = iVar2;
      piVar15 = piVar16;
LAB_0001a530:
      pcVar22 = *(code **)(puVar23 + -0x7f60);
    }
    piVar14 = (int *)0x0;
    (*pcVar22)(piVar4[3]);
    piVar9 = *(int **)(puVar3 + -0x20);
    puVar23 = *(undefined **)(puVar3 + -0x30);
    puVar12 = puVar26;
    if (piVar9 != (int *)0x0) {
      (**(code **)(puVar23 + -0x7a2c))();
      puVar23 = *(undefined **)(puVar3 + -0x30);
    }
  }
  if (*(int *)(puVar3 + -0x1c) == *piVar17) {
    return *piVar17;
  }
  pcVar22 = *(code **)(puVar23 + -0x7b70);
  (*pcVar22)();
  puVar27 = puVar12;
LAB_0001a630:
  uVar28 = 0x1a638;
  (*pcVar22)();
  pcVar24 = pcVar22 + 0x84a00;
  *(int **)(puVar27 + -0xc) = unaff_s3;
  piVar16 = *(int **)(pcVar22 + 0x7cf00);
  *(code **)(puVar27 + -0x28) = pcVar24;
  *(int **)(puVar27 + -0x14) = piVar17;
  *(undefined4 *)(puVar27 + -4) = uVar28;
  *(undefined4 *)(puVar27 + -8) = unaff_s4;
  *(int **)(puVar27 + -0x10) = piVar4;
  *(int **)(puVar27 + -0x18) = piVar15;
  *(int *)(puVar27 + -0x1c) = *piVar16;
  piVar17 = param_3;
  if (piVar14 == (int *)0x0) {
    piVar9[2] = 0;
    piVar9[1] = 0;
    puVar12 = (undefined1 *)0x0;
    piVar10 = piVar9;
  }
  else {
    piVar4 = piVar14;
    if ((int)piVar14 < 0) {
      piVar4 = (int *)-(int)piVar14;
    }
    if (*piVar9 + 1 <= (int)piVar4) {
      piVar4 = (int *)(*piVar9 + 1);
    }
    (**(code **)(pcVar22 + 0x7cb14))(piVar9[3],piVar4);
    iVar2 = *(int *)(puVar27 + -0x28);
    pcVar22 = *(code **)(iVar2 + -0x7a40);
    if (**(char **)(iVar2 + -0x7eb8) == '\0') {
      uVar28 = *(undefined4 *)(iVar2 + -0x7dc4);
      **(char **)(iVar2 + -0x7eb8) = '\x01';
      (*pcVar22)(uVar28);
      iVar2 = *(int *)(puVar27 + -0x28);
    }
    puVar12 = puVar27 + -0x20;
    (**(code **)(*(int *)(*(int *)(iVar2 + -0x7dc4) + 0x10) + 4))
              (*(int *)(iVar2 + -0x7dc4),puVar12,0x20);
    pcVar24 = *(code **)(puVar27 + -0x28);
    if ((int)param_3 < 0) {
      piVar17 = (int *)-(int)param_3;
      piVar10 = *(int **)(puVar27 + -0x20);
      uVar11 = (int)param_3 * -2 + 1;
      if (uVar11 == 0) {
        trap(7);
      }
      piVar9[2] = (uint)piVar10 % uVar11 + (int)param_3;
      if ((int)piVar14 < 0) {
        piVar4 = (int *)-(int)piVar4;
      }
    }
    else {
      piVar10 = *(int **)(puVar27 + -0x20);
      uVar11 = (int)param_3 * 2 + 1;
      if (uVar11 == 0) {
        trap(7);
      }
      piVar9[2] = (uint)piVar10 % uVar11 - (int)param_3;
      if ((int)piVar14 < 0) {
        piVar4 = (int *)-(int)piVar4;
      }
    }
    piVar9[1] = (int)piVar4;
    piVar15 = param_3;
  }
  if (*(int *)(puVar27 + -0x1c) == *piVar16) {
    return *piVar16;
  }
  pcVar22 = *(code **)(pcVar24 + -0x7b70);
  uVar28 = 0x1a7b4;
  (*pcVar22)();
  *(code **)(puVar27 + -0x70) = pcVar22 + 0x84880;
  *(undefined4 *)(puVar27 + -0x3c) = uVar28;
  *(undefined1 **)(puVar27 + -0x40) = puVar3 + -0x40;
  *(undefined4 *)(puVar27 + -0x44) = unaff_s7;
  *(undefined4 *)(puVar27 + -0x48) = unaff_s6;
  *(undefined4 *)(puVar27 + -0x4c) = unaff_s5;
  *(int **)(puVar27 + -0x50) = piVar14;
  *(int **)(puVar27 + -0x54) = piVar16;
  *(int **)(puVar27 + -0x58) = piVar4;
  *(int **)(puVar27 + -0x5c) = piVar9;
  *(int **)(puVar27 + -0x60) = piVar15;
  *(int **)(puVar27 + -0x38) = piVar10;
  *(int **)(puVar27 + -0x30) = piVar17;
  if (puVar12 == (undefined1 *)0x0) {
    puVar12 = (undefined1 *)**(int **)(pcVar22 + 0x7cb54);
  }
  puVar3 = (undefined1 *)(*(code *)**(undefined4 **)(pcVar22 + 0x7cd4c))(100);
  piVar4 = (int *)(**(code **)(*(int *)(puVar27 + -0x70) + -0x7f94))();
  iVar2 = *(int *)(puVar27 + -0x70);
  iVar8 = 0;
  do {
    iVar19 = iVar8;
    iVar5 = (**(code **)(iVar2 + -0x7f3c))(puVar12);
    iVar2 = *(int *)(puVar27 + -0x70);
    iVar8 = iVar19 + 1;
  } while ((*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) != 0);
  puVar20 = *(undefined4 **)(iVar2 + -0x7aa0);
  pcVar22 = *(code **)(iVar2 + -0x7f3c);
  uVar7 = 100;
  uVar11 = 0;
  puVar6 = puVar3;
  while ((iVar5 != -1 && (uVar18 = uVar11 + 1, (*(ushort *)(*piVar4 + iVar5 * 2) & 0x20) == 0))) {
    *puVar3 = (char)iVar5;
    iVar5 = (*pcVar22)(puVar12);
    iVar2 = *(int *)(puVar27 + -0x70);
    uVar11 = uVar7 * 3 >> 1;
    if (uVar7 <= uVar18) {
      pcVar22 = (code *)*puVar20;
      *(int *)(puVar27 + -100) = iVar5;
      puVar6 = (undefined1 *)(*pcVar22)(puVar6,uVar7,uVar11);
      iVar2 = *(int *)(puVar27 + -0x70);
      iVar5 = *(int *)(puVar27 + -100);
      uVar7 = uVar11;
    }
    pcVar22 = *(code **)(iVar2 + -0x7f3c);
    puVar3 = puVar6 + uVar18;
    uVar11 = uVar18;
  }
  (**(code **)(iVar2 + -0x7d5c))(iVar5,puVar12);
  iVar2 = *(int *)(puVar27 + -0x70);
  uVar18 = uVar7;
  if (uVar7 <= uVar11) {
    uVar18 = uVar7 * 3 >> 1;
    puVar6 = (undefined1 *)(*(code *)**(undefined4 **)(iVar2 + -0x7aa0))(puVar6,uVar7,uVar18);
    iVar2 = *(int *)(puVar27 + -0x70);
  }
  pcVar22 = *(code **)(iVar2 + -0x7ae8);
  uVar28 = *(undefined4 *)(puVar27 + -0x38);
  uVar13 = *(undefined4 *)(puVar27 + -0x30);
  puVar6[uVar11] = 0;
  iVar2 = (*pcVar22)(uVar28,puVar6,uVar13);
  (*(code *)**(undefined4 **)(*(int *)(puVar27 + -0x70) + -0x7e70))(puVar6,uVar18);
  if (iVar2 != -1) {
    return iVar19 + uVar11;
  }
  return 0;
}

