
void __gmpf_ui_sub(mpf_ptr r,ulong u,mpf_srcptr v)

{
  longlong lVar1;
  undefined *puVar2;
  int iVar3;
  mp_limb_t *pmVar4;
  uint uVar5;
  mp_limb_t *pmVar6;
  int iVar7;
  mpf_srcptr p_Var8;
  uint uVar9;
  uint *puVar10;
  mp_limb_t mVar11;
  mpf_srcptr p_Var12;
  mp_limb_t *pmVar13;
  mpf_srcptr p_Var14;
  uint uVar15;
  mp_limb_t mVar16;
  uint uVar17;
  mp_limb_t mVar18;
  uint uVar19;
  uint *puVar20;
  uint uVar21;
  int *piVar22;
  undefined *puVar23;
  code *pcVar24;
  code *pcVar25;
  undefined1 *puVar26;
  undefined4 uVar27;
  undefined1 auStack_98 [24];
  undefined *apuStack_80 [2];
  int iStack_78;
  uint uStack_74;
  mpf_srcptr p_Stack_70;
  mpf_srcptr p_Stack_6c;
  mp_limb_t *pmStack_68;
  int iStack_64;
  undefined *puStack_60;
  mp_limb_t ul;
  __mpf_struct uu;
  
  puVar2 = PTR___stack_chk_guard_0009d540;
  iVar3 = *(int *)PTR___stack_chk_guard_0009d540;
  p_Var8 = v;
  if (u == 0) {
    (*(code *)PTR___gmpf_neg_0009d2e0)();
  }
  else {
    uu._mp_d = &ul;
    p_Var14 = &uu;
    uu._mp_size = 1;
    uu._mp_exp = 1;
    ul = u;
    (*(code *)PTR___gmpf_sub_0009d25c)();
    v = p_Var14;
  }
  if (iVar3 == *(int *)puVar2) {
    return;
  }
  puVar23 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  apuStack_80[0] = puVar23 + 0x88530;
  puVar26 = auStack_98;
  piVar22 = *(int **)(puVar23 + 0x80a30);
  uVar17 = v->_mp_size;
  puStack_60 = puVar2;
  iStack_64 = *piVar22;
  uVar15 = r->_mp_prec;
  uVar19 = p_Var8->_mp_size;
  uVar5 = -uVar17;
  if (-1 < (int)uVar17) {
    uVar5 = uVar17;
  }
  uVar9 = uVar19;
  if ((int)uVar19 < 0) {
    uVar9 = -uVar19;
  }
  p_Var14 = (mpf_srcptr)v->_mp_d;
  p_Var12 = (mpf_srcptr)p_Var8->_mp_d;
  uVar21 = uVar5;
  if ((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0) {
    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);
    uVar21 = uVar15;
  }
  if ((int)uVar15 < (int)uVar9) {
    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);
    uVar9 = uVar15;
  }
  if ((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)) {
    r->_mp_size = 0;
    r->_mp_exp = 0;
    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);
    p_Var14 = v;
    puVar26 = auStack_98;
  }
  else {
    pmStack_68 = (mp_limb_t *)0x0;
    if ((uint)(iVar3 * 4) < 0x7f01) {
      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);
      puVar26 = auStack_98 + iVar7;
      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);
      p_Stack_70 = (mpf_srcptr)iVar3;
    }
    else {
      iStack_78 = iVar3;
      uStack_74 = uVar9;
      p_Stack_70 = p_Var12;
      p_Stack_6c = p_Var14;
      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);
      uVar9 = uStack_74;
      p_Var12 = p_Stack_70;
      p_Var14 = p_Stack_6c;
      p_Stack_70 = (mpf_srcptr)iStack_78;
    }
    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);
    p_Stack_6c = (mpf_srcptr)pmVar4;
    if ((int)uVar21 < (int)uVar9) {
      *(uint *)(puVar26 + 0x10) = uVar21;
      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);
      p_Var14 = p_Var12;
    }
    else {
      *(uint *)(puVar26 + 0x10) = uVar9;
      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);
    }
    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);
    uVar15 = uVar15 + 1;
    p_Var12 = p_Stack_6c;
    if ((int)uVar15 < (int)uVar9) {
      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);
      uVar9 = uVar15;
    }
    iVar7 = uVar9 - 1;
    if (uVar9 != 0) {
      pmVar6 = r->_mp_d;
      mVar18 = *(mp_limb_t *)p_Var12;
      pmVar4 = pmVar6;
      if (iVar7 != 0) {
        do {
          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);
          p_Var14 = (mpf_srcptr)(pmVar4 + 1);
          *pmVar4 = mVar18;
          iVar7 = iVar7 + -1;
          mVar18 = *(mp_limb_t *)p_Var12;
          pmVar4 = (mp_limb_t *)p_Var14;
        } while (iVar7 != 0);
        pmVar6 = pmVar6 + (uVar9 - 1);
      }
      *pmVar6 = mVar18;
    }
    uVar17 = uVar17 ^ uVar19;
    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);
    if ((int)uVar17 < 0) {
      uVar9 = -uVar9;
    }
    r->_mp_size = uVar9;
    pmVar4 = pmStack_68;
    if (pmStack_68 != (mp_limb_t *)0x0) {
      (**(code **)(apuStack_80[0] + -0x7a28))();
    }
  }
  if (iStack_64 == *piVar22) {
    return;
  }
  pcVar24 = *(code **)(apuStack_80[0] + -0x7b70);
  uVar27 = 0x1cd94;
  (*pcVar24)();
  *(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0;
  *(mpf_ptr *)(puVar26 + -0x14) = r;
  *(undefined4 *)(puVar26 + -4) = uVar27;
  *(mpf_srcptr *)(puVar26 + -8) = v;
  *(mpf_srcptr *)(puVar26 + -0xc) = p_Var8;
  *(uint *)(puVar26 + -0x10) = uVar19;
  *(uint *)(puVar26 + -0x18) = uVar17;
  *(uint *)(puVar26 + -0x1c) = uVar15;
  mVar18 = p_Var14->_mp_size;
  if ((uVar9 == 0) || (mVar18 == 0)) {
    pmVar4[1] = 0;
    pmVar4[2] = 0;
    return;
  }
  if ((int)mVar18 < 0) {
    mVar16 = *pmVar4;
    pmVar6 = p_Var14->_mp_d;
    puVar20 = (uint *)pmVar4[3];
    iVar3 = -mVar18 - mVar16;
    mVar11 = -mVar18;
    if (iVar3 < 1) goto LAB_0001cf64;
LAB_0001ce08:
    iVar7 = iVar3 + -1;
    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];
    pmVar13 = pmVar6 + iVar3;
    while( true ) {
      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar7 = iVar7 + -1;
      pcVar25 = *(code **)(pcVar24 + 0x80304);
      if (iVar7 == -1) break;
      puVar10 = pmVar13 + -2;
      pmVar13 = pmVar13 + -1;
      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);
      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar25 = *(code **)(pcVar24 + 0x80304);
        break;
      }
      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));
    }
    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);
    uVar17 = *puVar20;
    *puVar20 = uVar15 + uVar17;
    if (uVar15 + uVar17 < uVar15) {
      if ((int)mVar16 < 2) {
LAB_0001cef0:
        uVar15 = (uint)(uVar5 + 1 != 0);
        mVar11 = mVar16 + uVar15;
        puVar20[mVar16] = uVar5 + 1;
        pmVar4[2] = p_Var14->_mp_exp + uVar15;
        goto joined_r0x0001cf98;
      }
      uVar15 = puVar20[1];
      puVar20[1] = uVar15 + 1;
      if (uVar15 + 1 == 0) {
        if (mVar16 == 2) goto LAB_0001cef0;
        uVar15 = puVar20[2];
        puVar20[2] = uVar15 + 1;
        if (uVar15 + 1 == 0) {
          mVar11 = 3;
          puVar10 = puVar20 + 3;
          do {
            if (mVar16 == mVar11) goto LAB_0001cef0;
            uVar15 = *puVar10;
            mVar11 = mVar11 + 1;
            *puVar10 = uVar15 + 1;
            puVar10 = puVar10 + 1;
          } while (uVar15 + 1 == 0);
        }
      }
    }
  }
  else {
    mVar16 = *pmVar4;
    pmVar6 = p_Var14->_mp_d;
    iVar3 = mVar18 - mVar16;
    puVar20 = (uint *)pmVar4[3];
    mVar11 = mVar18;
    if (0 < iVar3) goto LAB_0001ce08;
LAB_0001cf64:
    mVar16 = mVar11;
    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);
  }
  mVar11 = mVar16 + (uVar5 != 0);
  puVar20[mVar16] = uVar5;
  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);
joined_r0x0001cf98:
  if ((int)mVar18 < 0) {
    mVar11 = -mVar11;
  }
  pmVar4[1] = mVar11;
  return;
}



void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)

{
  longlong lVar1;
  ulonglong uVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined4 *puVar11;
  uint uVar12;
  uint *puVar13;
  undefined4 *puVar14;
  int iVar15;
  undefined4 *puVar16;
  int iVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int *piVar24;
  undefined *puVar25;
  code *pcVar26;
  code *pcVar27;
  undefined1 *puVar28;
  undefined4 uVar29;
  undefined1 auStack_98 [24];
  undefined *apuStack_80 [2];
  int iStack_78;
  uint uStack_74;
  undefined4 *puStack_70;
  undefined4 *puStack_6c;
  int *piStack_68;
  int iStack_64;
  undefined *puStack_60;
  int local_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  int *local_10;
  int local_c;
  
  puVar3 = PTR___stack_chk_guard_0009d540;
  local_c = *(int *)PTR___stack_chk_guard_0009d540;
  puVar11 = param_3;
  if (param_2 == 0) {
    (*(code *)PTR___gmpf_neg_0009d2e0)();
  }
  else {
    local_10 = &local_20;
    param_3 = &uStack_1c;
    local_18 = 1;
    local_14 = 1;
    local_20 = param_2;
    (*(code *)PTR___gmpf_sub_0009d25c)();
  }
  if (local_c == *(int *)puVar3) {
    return;
  }
  puVar25 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  apuStack_80[0] = puVar25 + 0x88530;
  puVar28 = auStack_98;
  piVar24 = *(int **)(puVar25 + 0x80a30);
  uVar20 = param_3[1];
  puStack_60 = puVar3;
  iStack_64 = *piVar24;
  uVar18 = *param_1;
  uVar21 = puVar11[1];
  uVar7 = -uVar20;
  if (-1 < (int)uVar20) {
    uVar7 = uVar20;
  }
  uVar12 = uVar21;
  if ((int)uVar21 < 0) {
    uVar12 = -uVar21;
  }
  puVar16 = (undefined4 *)param_3[3];
  puVar14 = (undefined4 *)puVar11[3];
  uVar23 = uVar7;
  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {
    puVar16 = puVar16 + (uVar7 - uVar18);
    uVar23 = uVar18;
  }
  if ((int)uVar18 < (int)uVar12) {
    puVar14 = puVar14 + (uVar12 - uVar18);
    uVar12 = uVar18;
  }
  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {
    param_1[1] = 0;
    param_1[2] = 0;
    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);
    puVar16 = param_3;
    puVar28 = auStack_98;
  }
  else {
    piStack_68 = (int *)0x0;
    if ((uint)(iVar17 * 4) < 0x7f01) {
      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);
      puVar28 = auStack_98 + iVar15;
      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);
      puStack_70 = (undefined4 *)iVar17;
    }
    else {
      iStack_78 = iVar17;
      uStack_74 = uVar12;
      puStack_70 = puVar14;
      puStack_6c = puVar16;
      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);
      uVar12 = uStack_74;
      puVar14 = puStack_70;
      puVar16 = puStack_6c;
      puStack_70 = (undefined4 *)iStack_78;
    }
    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);
    puStack_6c = puVar5;
    if ((int)uVar23 < (int)uVar12) {
      *(uint *)(puVar28 + 0x10) = uVar23;
      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);
      puVar16 = puVar14;
    }
    else {
      *(uint *)(puVar28 + 0x10) = uVar12;
      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);
    }
    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);
    uVar18 = uVar18 + 1;
    puVar14 = puStack_6c;
    if ((int)uVar18 < (int)uVar12) {
      puVar14 = puStack_6c + (uVar12 - uVar18);
      uVar12 = uVar18;
    }
    iVar15 = uVar12 - 1;
    if (uVar12 != 0) {
      puVar4 = (undefined4 *)param_1[3];
      uVar29 = *puVar14;
      puVar5 = puVar4;
      if (iVar15 != 0) {
        do {
          puVar14 = puVar14 + 1;
          puVar16 = puVar5 + 1;
          *puVar5 = uVar29;
          iVar15 = iVar15 + -1;
          uVar29 = *puVar14;
          puVar5 = puVar16;
        } while (iVar15 != 0);
        puVar4 = puVar4 + (uVar12 - 1);
      }
      *puVar4 = uVar29;
    }
    uVar20 = uVar20 ^ uVar21;
    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);
    if ((int)uVar20 < 0) {
      uVar12 = -uVar12;
    }
    param_1[1] = uVar12;
    piVar9 = piStack_68;
    if (piStack_68 != (int *)0x0) {
      (**(code **)(apuStack_80[0] + -0x7a28))();
    }
  }
  if (iStack_64 == *piVar24) {
    return;
  }
  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);
  uVar29 = 0x1cd94;
  (*pcVar26)();
  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;
  *(uint **)(puVar28 + -0x14) = param_1;
  *(undefined4 *)(puVar28 + -4) = uVar29;
  *(undefined4 **)(puVar28 + -8) = param_3;
  *(undefined4 **)(puVar28 + -0xc) = puVar11;
  *(uint *)(puVar28 + -0x10) = uVar21;
  *(uint *)(puVar28 + -0x18) = uVar20;
  *(uint *)(puVar28 + -0x1c) = uVar18;
  iVar17 = puVar16[1];
  if ((uVar12 == 0) || (iVar17 == 0)) {
    piVar9[1] = 0;
    piVar9[2] = 0;
    return;
  }
  if (iVar17 < 0) {
    iVar19 = *piVar9;
    iVar8 = puVar16[3];
    puVar22 = (uint *)piVar9[3];
    iVar6 = -iVar17 - iVar19;
    iVar15 = -iVar17;
    if (iVar6 < 1) goto LAB_0001cf64;
LAB_0001ce08:
    iVar10 = iVar6 + -1;
    iVar6 = iVar8 + iVar6 * 4;
    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);
    iVar15 = iVar6;
    while( true ) {
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar10 = iVar10 + -1;
      pcVar27 = *(code **)(pcVar26 + 0x80304);
      if (iVar10 == -1) break;
      puVar13 = (uint *)(iVar15 + -8);
      iVar15 = iVar15 + -4;
      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;
      lVar1 = lVar1 + (uVar2 >> 0x20);
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar27 = *(code **)(pcVar26 + 0x80304);
        break;
      }
      lVar1 = CONCAT44(uVar18,(int)uVar2);
    }
    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);
    uVar20 = *puVar22;
    *puVar22 = uVar18 + uVar20;
    if (uVar18 + uVar20 < uVar18) {
      if (iVar19 < 2) {
LAB_0001cef0:
        uVar18 = (uint)(uVar7 + 1 != 0);
        iVar15 = iVar19 + uVar18;
        puVar22[iVar19] = uVar7 + 1;
        piVar9[2] = puVar16[2] + uVar18;
        goto joined_r0x0001cf98;
      }
      uVar18 = puVar22[1];
      puVar22[1] = uVar18 + 1;
      if (uVar18 + 1 == 0) {
        if (iVar19 == 2) goto LAB_0001cef0;
        uVar18 = puVar22[2];
        puVar22[2] = uVar18 + 1;
        if (uVar18 + 1 == 0) {
          iVar15 = 3;
          puVar13 = puVar22 + 3;
          do {
            if (iVar19 == iVar15) goto LAB_0001cef0;
            uVar18 = *puVar13;
            iVar15 = iVar15 + 1;
            *puVar13 = uVar18 + 1;
            puVar13 = puVar13 + 1;
          } while (uVar18 + 1 == 0);
        }
      }
    }
  }
  else {
    iVar19 = *piVar9;
    iVar8 = puVar16[3];
    iVar6 = iVar17 - iVar19;
    puVar22 = (uint *)piVar9[3];
    iVar15 = iVar17;
    if (0 < iVar6) goto LAB_0001ce08;
LAB_0001cf64:
    iVar19 = iVar15;
    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);
  }
  iVar15 = iVar19 + (uint)(uVar7 != 0);
  puVar22[iVar19] = uVar7;
  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);
joined_r0x0001cf98:
  if (iVar17 < 0) {
    iVar15 = -iVar15;
  }
  piVar9[1] = iVar15;
  return;
}


lui gp,0x9
addiu gp,gp,-0x7a40
addu gp,gp,t9
addiu sp,sp,-0x38
sw s0,0x30(sp)
lw s0,-0x7b00(gp)
sw gp,0x10(sp)
sw ra,0x34(sp)
lw v0,0x0(s0)
sw v0,0x2c(sp)
beq a1,zero,0x0001caf0
_lw t9,-0x7de4(gp)
li v0,0x1
addiu v1,sp,0x18
sw a1,0x18(sp)
addiu a1,sp,0x1c
sw v0,0x20(sp)
sw v1,0x28(sp)
jalr t9
_sw v0,0x24(sp)
lw gp,0x10(sp)
lw v1,0x2c(sp)
lw v0,0x0(s0)
bne v1,v0,0x0001cb04
_lw ra,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x7d60(gp)
jalr t9
_or a1,a2,zero
b 0x0001cad4
_lw gp,0x10(sp)
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)\n\n{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}\n\n" (function_definition "void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)\n\n{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" primitive_type (function_declarator "__gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(uint *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "code *pcVar26;" type_identifier (pointer_declarator "*pcVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_80 [2];" type_identifier (pointer_declarator "*apuStack_80 [2]" * (array_declarator "apuStack_80 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint uStack_74;" type_identifier identifier ;) (declaration "undefined4 *puStack_70;" type_identifier (pointer_declarator "*puStack_70" * identifier) ;) (declaration "undefined4 *puStack_6c;" type_identifier (pointer_declarator "*puStack_6c" * identifier) ;) (declaration "int *piStack_68;" primitive_type (pointer_declarator "*piStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "undefined *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "int *local_10;" primitive_type (pointer_declarator "*local_10" * identifier) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_neg_0009d2e0)();" (call_expression "(*(code *)PTR___gmpf_neg_0009d2e0)()" (parenthesized_expression "(*(code *)PTR___gmpf_neg_0009d2e0)" ( (pointer_expression "*(code *)PTR___gmpf_neg_0009d2e0" * (cast_expression "(code *)PTR___gmpf_neg_0009d2e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" else (compound_statement "{\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" { (expression_statement "local_10 = &local_20;" (assignment_expression "local_10 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "param_3 = &uStack_1c;" (assignment_expression "param_3 = &uStack_1c" identifier = (pointer_expression "&uStack_1c" & identifier)) ;) (expression_statement "local_18 = 1;" (assignment_expression "local_18 = 1" identifier = number_literal) ;) (expression_statement "local_14 = 1;" (assignment_expression "local_14 = 1" identifier = number_literal) ;) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009d25c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009d25c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009d25c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009d25c" * (cast_expression "(code *)PTR___gmpf_sub_0009d25c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (local_c == *(int *)puVar3) {\n    return;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar3)" ( (binary_expression "local_c == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar25 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "apuStack_80[0] = puVar25 + 0x88530;" (assignment_expression "apuStack_80[0] = puVar25 + 0x88530" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) = (binary_expression "puVar25 + 0x88530" identifier + number_literal)) ;) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" identifier = identifier) ;) (expression_statement "piVar24 = *(int **)(puVar25 + 0x80a30);" (assignment_expression "piVar24 = *(int **)(puVar25 + 0x80a30)" identifier = (pointer_expression "*(int **)(puVar25 + 0x80a30)" * (cast_expression "(int **)(puVar25 + 0x80a30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x80a30)" ( (binary_expression "puVar25 + 0x80a30" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = param_3[1];" (assignment_expression "uVar20 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puStack_60 = puVar3;" (assignment_expression "puStack_60 = puVar3" identifier = identifier) ;) (expression_statement "iStack_64 = *piVar24;" (assignment_expression "iStack_64 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar18 = *param_1;" (assignment_expression "uVar18 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar21 = puVar11[1];" (assignment_expression "uVar21 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = -uVar20;" (assignment_expression "uVar7 = -uVar20" identifier = (unary_expression "-uVar20" - identifier)) ;) (if_statement "if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }" if (parenthesized_expression "(-1 < (int)uVar20)" ( (binary_expression "-1 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar7 = uVar20;\n  }" { (expression_statement "uVar7 = uVar20;" (assignment_expression "uVar7 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar12 = uVar21;" (assignment_expression "uVar12 = uVar21" identifier = identifier) ;) (if_statement "if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }" if (parenthesized_expression "((int)uVar21 < 0)" ( (binary_expression "(int)uVar21 < 0" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = -uVar21;\n  }" { (expression_statement "uVar12 = -uVar21;" (assignment_expression "uVar12 = -uVar21" identifier = (unary_expression "-uVar21" - identifier)) ;) })) (expression_statement "puVar16 = (undefined4 *)param_3[3];" (assignment_expression "puVar16 = (undefined4 *)param_3[3]" identifier = (cast_expression "(undefined4 *)param_3[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = (undefined4 *)puVar11[3];" (assignment_expression "puVar14 = (undefined4 *)puVar11[3]" identifier = (cast_expression "(undefined4 *)puVar11[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar23 = uVar7;" (assignment_expression "uVar23 = uVar7" identifier = identifier) ;) (if_statement "if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" if (parenthesized_expression "((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0)" ( (binary_expression "(int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0" (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < (int)uVar7)" ( (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" { (expression_statement "puVar16 = puVar16 + (uVar7 - uVar18);" (assignment_expression "puVar16 = puVar16 + (uVar7 - uVar18)" identifier = (binary_expression "puVar16 + (uVar7 - uVar18)" identifier + (parenthesized_expression "(uVar7 - uVar18)" ( (binary_expression "uVar7 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) })) (if_statement "if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < (int)uVar12)" ( (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" { (expression_statement "puVar14 = puVar14 + (uVar12 - uVar18);" (assignment_expression "puVar14 = puVar14 + (uVar12 - uVar18)" identifier = (binary_expression "puVar14 + (uVar12 - uVar18)" identifier + (parenthesized_expression "(uVar12 - uVar18)" ( (binary_expression "uVar12 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (if_statement "if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" if (parenthesized_expression "((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0))" ( (binary_expression "(uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)" (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar17 = uVar23 + uVar12, uVar12 == 0)" ( (comma_expression "iVar17 = uVar23 + uVar12, uVar12 == 0" (assignment_expression "iVar17 = uVar23 + uVar12" identifier = (binary_expression "uVar23 + uVar12" identifier + identifier)) , (binary_expression "uVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7)" identifier = (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < (int)uVar7)" ( (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar16 = param_3;" (assignment_expression "puVar16 = param_3" identifier = identifier) ;) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" identifier = identifier) ;) }) (else_clause "else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" else (compound_statement "{\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" { (expression_statement "piStack_68 = (int *)0x0;" (assignment_expression "piStack_68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" if (parenthesized_expression "((uint)(iVar17 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar17 * 4) < 0x7f01" (call_expression "(uint)(iVar17 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 * 4)" ( (binary_expression "iVar17 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }" { (expression_statement "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar17 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar17 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar17 * 4 + 7U & 0xfffffff8" (binary_expression "iVar17 * 4 + 7U" (binary_expression "iVar17 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = auStack_98 + iVar15;" (assignment_expression "puVar28 = auStack_98 + iVar15" identifier = (binary_expression "auStack_98 + iVar15" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);" (assignment_expression "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15)" identifier = (cast_expression "(undefined4 *)((int)apuStack_80 + iVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_80 + iVar15)" ( (binary_expression "(int)apuStack_80 + iVar15" (cast_expression "(int)apuStack_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puStack_70 = (undefined4 *)iVar17;" (assignment_expression "puStack_70 = (undefined4 *)iVar17" identifier = (cast_expression "(undefined4 *)iVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" else (compound_statement "{\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" { (expression_statement "iStack_78 = iVar17;" (assignment_expression "iStack_78 = iVar17" identifier = identifier) ;) (expression_statement "uStack_74 = uVar12;" (assignment_expression "uStack_74 = uVar12" identifier = identifier) ;) (expression_statement "puStack_70 = puVar14;" (assignment_expression "puStack_70 = puVar14" identifier = identifier) ;) (expression_statement "puStack_6c = puVar16;" (assignment_expression "puStack_6c = puVar16" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar25 + 0x807e0))(&piStack_68)" (parenthesized_expression "(**(code **)(puVar25 + 0x807e0))" ( (pointer_expression "**(code **)(puVar25 + 0x807e0)" * (pointer_expression "*(code **)(puVar25 + 0x807e0)" * (cast_expression "(code **)(puVar25 + 0x807e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x807e0)" ( (binary_expression "puVar25 + 0x807e0" identifier + number_literal) ))))) )) (argument_list "(&piStack_68)" ( (pointer_expression "&piStack_68" & identifier) ))))) ;) (expression_statement "uVar12 = uStack_74;" (assignment_expression "uVar12 = uStack_74" identifier = identifier) ;) (expression_statement "puVar14 = puStack_70;" (assignment_expression "puVar14 = puStack_70" identifier = identifier) ;) (expression_statement "puVar16 = puStack_6c;" (assignment_expression "puVar16 = puStack_6c" identifier = identifier) ;) (expression_statement "puStack_70 = (undefined4 *)iStack_78;" (assignment_expression "puStack_70 = (undefined4 *)iStack_78" identifier = (cast_expression "(undefined4 *)iStack_78" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7d8c)" * (cast_expression "(code **)(apuStack_80[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7d8c)" ( (binary_expression "apuStack_80[0] + -0x7d8c" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_6c = puVar5;" (assignment_expression "puStack_6c = puVar5" identifier = identifier) ;) (if_statement "if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" if (parenthesized_expression "((int)uVar23 < (int)uVar12)" ( (binary_expression "(int)uVar23 < (int)uVar12" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }" { (expression_statement "*(uint *)(puVar28 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar28 + 0x10)" * (cast_expression "(uint *)(puVar28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16)" identifier = (call_expression "(*pcVar26)(puVar5,puVar14,uVar12,puVar16)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(puVar5,puVar14,uVar12,puVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar16 = puVar14;" (assignment_expression "puVar16 = puVar14" identifier = identifier) ;) }) (else_clause "else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" else (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" { (expression_statement "*(uint *)(puVar28 + 0x10) = uVar12;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar12" (pointer_expression "*(uint *)(puVar28 + 0x10)" * (cast_expression "(uint *)(puVar28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14)" identifier = (call_expression "(*pcVar26)(puVar5,puVar16,uVar23,puVar14)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(puVar5,puVar16,uVar23,puVar14)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);" (assignment_expression "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0)" identifier = (binary_expression "(int)puStack_70 - (uint)(iVar17 == 0)" (cast_expression "(int)puStack_70" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))))) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puStack_6c;" (assignment_expression "puVar14 = puStack_6c" identifier = identifier) ;) (if_statement "if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" if (parenthesized_expression "((int)uVar18 < (int)uVar12)" ( (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" { (expression_statement "puVar14 = puStack_6c + (uVar12 - uVar18);" (assignment_expression "puVar14 = puStack_6c + (uVar12 - uVar18)" identifier = (binary_expression "puStack_6c + (uVar12 - uVar18)" identifier + (parenthesized_expression "(uVar12 - uVar18)" ( (binary_expression "uVar12 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar15 = uVar12 - 1;" (assignment_expression "iVar15 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (if_statement "if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" { (expression_statement "puVar4 = (undefined4 *)param_1[3];" (assignment_expression "puVar4 = (undefined4 *)param_1[3]" identifier = (cast_expression "(undefined4 *)param_1[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" { (do_statement "do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);" do (compound_statement "{\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        }" { (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar5 + 1;" (assignment_expression "puVar16 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar29;" (assignment_expression "*puVar5 = uVar29" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar5 = puVar16;" (assignment_expression "puVar5 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar12 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar12 - 1)" identifier = (binary_expression "puVar4 + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar4 = uVar29;" (assignment_expression "*puVar4 = uVar29" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "uVar20 = uVar20 ^ uVar21;" (assignment_expression "uVar20 = uVar20 ^ uVar21" identifier = (binary_expression "uVar20 ^ uVar21" identifier ^ identifier)) ;) (expression_statement "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (parenthesized_expression "(param_3[2] + puVar11[2])" ( (binary_expression "param_3[2] + puVar11[2]" (subscript_expression "param_3[2]" identifier [ number_literal ]) + (subscript_expression "puVar11[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))))) ;) (if_statement "if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar12 = -uVar12;\n    }" { (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) })) (expression_statement "param_1[1] = uVar12;" (assignment_expression "param_1[1] = uVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9 = piStack_68;" (assignment_expression "piVar9 = piStack_68" identifier = identifier) ;) (if_statement "if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" if (parenthesized_expression "(piStack_68 != (int *)0x0)" ( (binary_expression "piStack_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" { (expression_statement "(**(code **)(apuStack_80[0] + -0x7a28))();" (call_expression "(**(code **)(apuStack_80[0] + -0x7a28))()" (parenthesized_expression "(**(code **)(apuStack_80[0] + -0x7a28))" ( (pointer_expression "**(code **)(apuStack_80[0] + -0x7a28)" * (pointer_expression "*(code **)(apuStack_80[0] + -0x7a28)" * (cast_expression "(code **)(apuStack_80[0] + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7a28)" ( (binary_expression "apuStack_80[0] + -0x7a28" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_64 == *piVar24) {\n    return;\n  }" if (parenthesized_expression "(iStack_64 == *piVar24)" ( (binary_expression "iStack_64 == *piVar24" identifier == (pointer_expression "*piVar24" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7b70)" * (cast_expression "(code **)(apuStack_80[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7b70)" ( (binary_expression "apuStack_80[0] + -0x7b70" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar29 = 0x1cd94;" (assignment_expression "uVar29 = 0x1cd94" identifier = number_literal) ;) (expression_statement "(*pcVar26)();" (call_expression "(*pcVar26)()" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;" (assignment_expression "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0" (pointer_expression "*(code **)(puVar28 + -0x28)" * (cast_expression "(code **)(puVar28 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x28)" ( (binary_expression "puVar28 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar26 + 0x882a0" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar28 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar28 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar28 + -0x14)" * (cast_expression "(uint **)(puVar28 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x14)" ( (binary_expression "puVar28 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar28 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar28 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar28 + -4)" * (cast_expression "(undefined4 *)(puVar28 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -4)" ( (binary_expression "puVar28 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar28 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar28 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar28 + -8)" * (cast_expression "(undefined4 **)(puVar28 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -8)" ( (binary_expression "puVar28 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar28 + -0xc) = puVar11;" (assignment_expression "*(undefined4 **)(puVar28 + -0xc) = puVar11" (pointer_expression "*(undefined4 **)(puVar28 + -0xc)" * (cast_expression "(undefined4 **)(puVar28 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0xc)" ( (binary_expression "puVar28 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar28 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar28 + -0x10)" * (cast_expression "(uint *)(puVar28 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x10)" ( (binary_expression "puVar28 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar28 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar28 + -0x18)" * (cast_expression "(uint *)(puVar28 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x18)" ( (binary_expression "puVar28 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar28 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar28 + -0x1c)" * (cast_expression "(uint *)(puVar28 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x1c)" ( (binary_expression "puVar28 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = puVar16[1];" (assignment_expression "iVar17 = puVar16[1]" identifier = (subscript_expression "puVar16[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar12 == 0) || (iVar17 == 0))" ( (binary_expression "(uVar12 == 0) || (iVar17 == 0)" (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" { (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }" { (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" identifier = (subscript_expression "puVar16[3]" identifier [ number_literal ])) ;) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" identifier = (cast_expression "(uint *)piVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = -iVar17 - iVar19;" (assignment_expression "iVar6 = -iVar17 - iVar19" identifier = (binary_expression "-iVar17 - iVar19" (unary_expression "-iVar17" - identifier) - identifier)) ;) (expression_statement "iVar15 = -iVar17;" (assignment_expression "iVar15 = -iVar17" identifier = (unary_expression "-iVar17" - identifier)) ;) (if_statement "if (iVar6 < 1) goto LAB_0001cf64;" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cf64;" goto statement_identifier ;)) (labeled_statement "LAB_0001ce08:\n    iVar10 = iVar6 + -1;" statement_identifier : (expression_statement "iVar10 = iVar6 + -1;" (assignment_expression "iVar10 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;)) (expression_statement "iVar6 = iVar8 + iVar6 * 4;" (assignment_expression "iVar6 = iVar8 + iVar6 * 4" identifier = (binary_expression "iVar8 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal))) ;) (expression_statement "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" identifier = (binary_expression "(ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(iVar8 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar10 * 4)" ( (binary_expression "iVar8 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar15 = iVar6;" (assignment_expression "iVar15 = iVar6" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" { (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == -1) break;" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar13 = (uint *)(iVar15 + -8);" (assignment_expression "puVar13 = (uint *)(iVar15 + -8)" identifier = (cast_expression "(uint *)(iVar15 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -8)" ( (binary_expression "iVar15 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar15 = iVar15 + -4;" (assignment_expression "iVar15 = iVar15 + -4" identifier = (binary_expression "iVar15 + -4" identifier + number_literal)) ;) (expression_statement "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;" (assignment_expression "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13" identifier = (binary_expression "(ulonglong)uVar12 * (ulonglong)*puVar13" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * identifier)) ;) (expression_statement "lVar1 = lVar1 + (uVar2 >> 0x20);" (assignment_expression "lVar1 = lVar1 + (uVar2 >> 0x20)" identifier = (binary_expression "lVar1 + (uVar2 >> 0x20)" identifier + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" if (parenthesized_expression "((int)lVar1 != -1)" ( (binary_expression "(int)lVar1 != -1" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" { (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "lVar1 = CONCAT44(uVar18,(int)uVar2);" (assignment_expression "lVar1 = CONCAT44(uVar18,(int)uVar2)" identifier = (call_expression "CONCAT44(uVar18,(int)uVar2)" identifier (argument_list "(uVar18,(int)uVar2)" ( identifier , (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) })) (expression_statement "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19)" identifier = (call_expression "(*pcVar27)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(puVar22,iVar6,iVar19)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar20 = *puVar22;" (assignment_expression "uVar20 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "*puVar22 = uVar18 + uVar20;" (assignment_expression "*puVar22 = uVar18 + uVar20" (pointer_expression "*puVar22" * identifier) = (binary_expression "uVar18 + uVar20" identifier + identifier)) ;) (if_statement "if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar18 + uVar20 < uVar18)" ( (binary_expression "uVar18 + uVar20 < uVar18" (binary_expression "uVar18 + uVar20" identifier + identifier) < identifier) )) (compound_statement "{\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" if (parenthesized_expression "(iVar19 < 2)" ( (binary_expression "iVar19 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" { (labeled_statement "LAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);" statement_identifier : (expression_statement "uVar18 = (uint)(uVar7 + 1 != 0);" (assignment_expression "uVar18 = (uint)(uVar7 + 1 != 0)" identifier = (call_expression "(uint)(uVar7 + 1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 + 1 != 0)" ( (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" identifier + number_literal) != number_literal) )))) ;)) (expression_statement "iVar15 = iVar19 + uVar18;" (assignment_expression "iVar15 = iVar19 + uVar18" identifier = (binary_expression "iVar19 + uVar18" identifier + identifier)) ;) (expression_statement "puVar22[iVar19] = uVar7 + 1;" (assignment_expression "puVar22[iVar19] = uVar7 + 1" (subscript_expression "puVar22[iVar19]" identifier [ identifier ]) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar9[2] = puVar16[2] + uVar18;" (assignment_expression "piVar9[2] = puVar16[2] + uVar18" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "puVar16[2] + uVar18" (subscript_expression "puVar16[2]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto joined_r0x0001cf98;" goto statement_identifier ;) })) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar22[1] = uVar18 + 1;" (assignment_expression "puVar22[1] = uVar18 + 1" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" { (if_statement "if (iVar19 == 2) goto LAB_0001cef0;" if (parenthesized_expression "(iVar19 == 2)" ( (binary_expression "iVar19 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar18 = puVar22[2];" (assignment_expression "uVar18 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "puVar22[2] = uVar18 + 1;" (assignment_expression "puVar22[2] = uVar18 + 1" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" if (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" { (expression_statement "iVar15 = 3;" (assignment_expression "iVar15 = 3" identifier = number_literal) ;) (expression_statement "puVar13 = puVar22 + 3;" (assignment_expression "puVar13 = puVar22 + 3" identifier = (binary_expression "puVar22 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);" do (compound_statement "{\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          }" { (if_statement "if (iVar19 == iVar15) goto LAB_0001cef0;" if (parenthesized_expression "(iVar19 == iVar15)" ( (binary_expression "iVar19 == iVar15" identifier == identifier) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar18 = *puVar13;" (assignment_expression "uVar18 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar13 = uVar18 + 1;" (assignment_expression "*puVar13 = uVar18 + 1" (pointer_expression "*puVar13" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) }) (else_clause "else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" else (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" { (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" identifier = (subscript_expression "puVar16[3]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar17 - iVar19;" (assignment_expression "iVar6 = iVar17 - iVar19" identifier = (binary_expression "iVar17 - iVar19" identifier - identifier)) ;) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" identifier = (cast_expression "(uint *)piVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" identifier = identifier) ;) (if_statement "if (0 < iVar6) goto LAB_0001ce08;" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_0001ce08;" goto statement_identifier ;)) (labeled_statement "LAB_0001cf64:\n    iVar19 = iVar15;" statement_identifier : (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" identifier = identifier) ;)) (expression_statement "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" identifier = (call_expression "(**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar26 + 0x80304))" ( (pointer_expression "**(code **)(pcVar26 + 0x80304)" * (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) )) (argument_list "(puVar22,iVar8,iVar19)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar15 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar15 = iVar19 + (uint)(uVar7 != 0)" identifier = (binary_expression "iVar19 + (uint)(uVar7 != 0)" identifier + (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) ))))) ;) (expression_statement "puVar22[iVar19] = uVar7;" (assignment_expression "puVar22[iVar19] = uVar7" (subscript_expression "puVar22[iVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar16[2]" identifier [ number_literal ]) + (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) ))))) ;) (labeled_statement "joined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" statement_identifier : (if_statement "if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar15 = -iVar15;\n  }" { (expression_statement "iVar15 = -iVar15;" (assignment_expression "iVar15 = -iVar15" identifier = (unary_expression "-iVar15" - identifier)) ;) }))) (expression_statement "piVar9[1] = iVar15;" (assignment_expression "piVar9[1] = iVar15" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __gmpf_ui_sub(mpf_ptr r,ulong u,mpf_srcptr v)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  int iVar3;\n  mp_limb_t *pmVar4;\n  uint uVar5;\n  mp_limb_t *pmVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  mpf_srcptr p_Var12;\n  mp_limb_t *pmVar13;\n  mpf_srcptr p_Var14;\n  uint uVar15;\n  mp_limb_t mVar16;\n  uint uVar17;\n  mp_limb_t mVar18;\n  uint uVar19;\n  uint *puVar20;\n  uint uVar21;\n  int *piVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  mpf_srcptr p_Stack_70;\n  mpf_srcptr p_Stack_6c;\n  mp_limb_t *pmStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  mp_limb_t ul;\n  __mpf_struct uu;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  iVar3 = *(int *)PTR___stack_chk_guard_0009d540;\n  p_Var8 = v;\n  if (u == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  puVar23 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar23 + 0x88530;\n  puVar26 = auStack_98;\n  piVar22 = *(int **)(puVar23 + 0x80a30);\n  uVar17 = v->_mp_size;\n  puStack_60 = puVar2;\n  iStack_64 = *piVar22;\n  uVar15 = r->_mp_prec;\n  uVar19 = p_Var8->_mp_size;\n  uVar5 = -uVar17;\n  if (-1 < (int)uVar17) {\n    uVar5 = uVar17;\n  }\n  uVar9 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar9 = -uVar19;\n  }\n  p_Var14 = (mpf_srcptr)v->_mp_d;\n  p_Var12 = (mpf_srcptr)p_Var8->_mp_d;\n  uVar21 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);\n    uVar21 = uVar15;\n  }\n  if ((int)uVar15 < (int)uVar9) {\n    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);\n    uVar9 = uVar15;\n  }\n  if ((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)) {\n    r->_mp_size = 0;\n    r->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);\n    p_Var14 = v;\n    puVar26 = auStack_98;\n  }\n  else {\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar22) {\n    return;\n  }\n  pcVar24 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar27 = 0x1cd94;\n  (*pcVar24)();\n  *(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0;\n  *(mpf_ptr *)(puVar26 + -0x14) = r;\n  *(undefined4 *)(puVar26 + -4) = uVar27;\n  *(mpf_srcptr *)(puVar26 + -8) = v;\n  *(mpf_srcptr *)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar19;\n  *(uint *)(puVar26 + -0x18) = uVar17;\n  *(uint *)(puVar26 + -0x1c) = uVar15;\n  mVar18 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar18 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar18 < 0) {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar20 = (uint *)pmVar4[3];\n    iVar3 = -mVar18 - mVar16;\n    mVar11 = -mVar18;\n    if (iVar3 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);\n    uVar17 = *puVar20;\n    *puVar20 = uVar15 + uVar17;\n    if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }\n  mVar11 = mVar16 + (uVar5 != 0);\n  puVar20[mVar16] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cf98:\n  if ((int)mVar18 < 0) {\n    mVar11 = -mVar11;\n  }\n  pmVar4[1] = mVar11;\n  return;\n}\n\n" (function_definition "void __gmpf_ui_sub(mpf_ptr r,ulong u,mpf_srcptr v)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  int iVar3;\n  mp_limb_t *pmVar4;\n  uint uVar5;\n  mp_limb_t *pmVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  mpf_srcptr p_Var12;\n  mp_limb_t *pmVar13;\n  mpf_srcptr p_Var14;\n  uint uVar15;\n  mp_limb_t mVar16;\n  uint uVar17;\n  mp_limb_t mVar18;\n  uint uVar19;\n  uint *puVar20;\n  uint uVar21;\n  int *piVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  mpf_srcptr p_Stack_70;\n  mpf_srcptr p_Stack_6c;\n  mp_limb_t *pmStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  mp_limb_t ul;\n  __mpf_struct uu;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  iVar3 = *(int *)PTR___stack_chk_guard_0009d540;\n  p_Var8 = v;\n  if (u == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  puVar23 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar23 + 0x88530;\n  puVar26 = auStack_98;\n  piVar22 = *(int **)(puVar23 + 0x80a30);\n  uVar17 = v->_mp_size;\n  puStack_60 = puVar2;\n  iStack_64 = *piVar22;\n  uVar15 = r->_mp_prec;\n  uVar19 = p_Var8->_mp_size;\n  uVar5 = -uVar17;\n  if (-1 < (int)uVar17) {\n    uVar5 = uVar17;\n  }\n  uVar9 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar9 = -uVar19;\n  }\n  p_Var14 = (mpf_srcptr)v->_mp_d;\n  p_Var12 = (mpf_srcptr)p_Var8->_mp_d;\n  uVar21 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);\n    uVar21 = uVar15;\n  }\n  if ((int)uVar15 < (int)uVar9) {\n    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);\n    uVar9 = uVar15;\n  }\n  if ((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)) {\n    r->_mp_size = 0;\n    r->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);\n    p_Var14 = v;\n    puVar26 = auStack_98;\n  }\n  else {\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar22) {\n    return;\n  }\n  pcVar24 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar27 = 0x1cd94;\n  (*pcVar24)();\n  *(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0;\n  *(mpf_ptr *)(puVar26 + -0x14) = r;\n  *(undefined4 *)(puVar26 + -4) = uVar27;\n  *(mpf_srcptr *)(puVar26 + -8) = v;\n  *(mpf_srcptr *)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar19;\n  *(uint *)(puVar26 + -0x18) = uVar17;\n  *(uint *)(puVar26 + -0x1c) = uVar15;\n  mVar18 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar18 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar18 < 0) {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar20 = (uint *)pmVar4[3];\n    iVar3 = -mVar18 - mVar16;\n    mVar11 = -mVar18;\n    if (iVar3 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);\n    uVar17 = *puVar20;\n    *puVar20 = uVar15 + uVar17;\n    if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }\n  mVar11 = mVar16 + (uVar5 != 0);\n  puVar20[mVar16] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cf98:\n  if ((int)mVar18 < 0) {\n    mVar11 = -mVar11;\n  }\n  pmVar4[1] = mVar11;\n  return;\n}" primitive_type (function_declarator "__gmpf_ui_sub(mpf_ptr r,ulong u,mpf_srcptr v)" identifier (parameter_list "(mpf_ptr r,ulong u,mpf_srcptr v)" ( (parameter_declaration "mpf_ptr r" type_identifier identifier) , (parameter_declaration "ulong u" type_identifier identifier) , (parameter_declaration "mpf_srcptr v" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  int iVar3;\n  mp_limb_t *pmVar4;\n  uint uVar5;\n  mp_limb_t *pmVar6;\n  int iVar7;\n  mpf_srcptr p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  mpf_srcptr p_Var12;\n  mp_limb_t *pmVar13;\n  mpf_srcptr p_Var14;\n  uint uVar15;\n  mp_limb_t mVar16;\n  uint uVar17;\n  mp_limb_t mVar18;\n  uint uVar19;\n  uint *puVar20;\n  uint uVar21;\n  int *piVar22;\n  undefined *puVar23;\n  code *pcVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  mpf_srcptr p_Stack_70;\n  mpf_srcptr p_Stack_6c;\n  mp_limb_t *pmStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  mp_limb_t ul;\n  __mpf_struct uu;\n  \n  puVar2 = PTR___stack_chk_guard_0009d540;\n  iVar3 = *(int *)PTR___stack_chk_guard_0009d540;\n  p_Var8 = v;\n  if (u == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  puVar23 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar23 + 0x88530;\n  puVar26 = auStack_98;\n  piVar22 = *(int **)(puVar23 + 0x80a30);\n  uVar17 = v->_mp_size;\n  puStack_60 = puVar2;\n  iStack_64 = *piVar22;\n  uVar15 = r->_mp_prec;\n  uVar19 = p_Var8->_mp_size;\n  uVar5 = -uVar17;\n  if (-1 < (int)uVar17) {\n    uVar5 = uVar17;\n  }\n  uVar9 = uVar19;\n  if ((int)uVar19 < 0) {\n    uVar9 = -uVar19;\n  }\n  p_Var14 = (mpf_srcptr)v->_mp_d;\n  p_Var12 = (mpf_srcptr)p_Var8->_mp_d;\n  uVar21 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);\n    uVar21 = uVar15;\n  }\n  if ((int)uVar15 < (int)uVar9) {\n    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);\n    uVar9 = uVar15;\n  }\n  if ((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)) {\n    r->_mp_size = 0;\n    r->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);\n    p_Var14 = v;\n    puVar26 = auStack_98;\n  }\n  else {\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar22) {\n    return;\n  }\n  pcVar24 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar27 = 0x1cd94;\n  (*pcVar24)();\n  *(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0;\n  *(mpf_ptr *)(puVar26 + -0x14) = r;\n  *(undefined4 *)(puVar26 + -4) = uVar27;\n  *(mpf_srcptr *)(puVar26 + -8) = v;\n  *(mpf_srcptr *)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar19;\n  *(uint *)(puVar26 + -0x18) = uVar17;\n  *(uint *)(puVar26 + -0x1c) = uVar15;\n  mVar18 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar18 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar18 < 0) {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar20 = (uint *)pmVar4[3];\n    iVar3 = -mVar18 - mVar16;\n    mVar11 = -mVar18;\n    if (iVar3 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);\n    uVar17 = *puVar20;\n    *puVar20 = uVar15 + uVar17;\n    if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }\n  mVar11 = mVar16 + (uVar5 != 0);\n  puVar20[mVar16] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cf98:\n  if ((int)mVar18 < 0) {\n    mVar11 = -mVar11;\n  }\n  pmVar4[1] = mVar11;\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "mp_limb_t *pmVar4;" type_identifier (pointer_declarator "*pmVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar6;" type_identifier (pointer_declarator "*pmVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "mpf_srcptr p_Var8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "mp_limb_t mVar11;" type_identifier identifier ;) (declaration "mpf_srcptr p_Var12;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar13;" type_identifier (pointer_declarator "*pmVar13" * identifier) ;) (declaration "mpf_srcptr p_Var14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "mp_limb_t mVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "mp_limb_t mVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "undefined *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_80 [2];" type_identifier (pointer_declarator "*apuStack_80 [2]" * (array_declarator "apuStack_80 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint uStack_74;" type_identifier identifier ;) (declaration "mpf_srcptr p_Stack_70;" type_identifier identifier ;) (declaration "mpf_srcptr p_Stack_6c;" type_identifier identifier ;) (declaration "mp_limb_t *pmStack_68;" type_identifier (pointer_declarator "*pmStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "undefined *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "mp_limb_t ul;" type_identifier identifier ;) (declaration "__mpf_struct uu;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "p_Var8 = v;" (assignment_expression "p_Var8 = v" identifier = identifier) ;) (if_statement "if (u == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }" if (parenthesized_expression "(u == 0)" ( (binary_expression "u == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_neg_0009d2e0)();" (call_expression "(*(code *)PTR___gmpf_neg_0009d2e0)()" (parenthesized_expression "(*(code *)PTR___gmpf_neg_0009d2e0)" ( (pointer_expression "*(code *)PTR___gmpf_neg_0009d2e0" * (cast_expression "(code *)PTR___gmpf_neg_0009d2e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }" else (compound_statement "{\n    uu._mp_d = &ul;\n    p_Var14 = &uu;\n    uu._mp_size = 1;\n    uu._mp_exp = 1;\n    ul = u;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n    v = p_Var14;\n  }" { (expression_statement "uu._mp_d = &ul;" (assignment_expression "uu._mp_d = &ul" (field_expression "uu._mp_d" identifier . field_identifier) = (pointer_expression "&ul" & identifier)) ;) (expression_statement "p_Var14 = &uu;" (assignment_expression "p_Var14 = &uu" identifier = (pointer_expression "&uu" & identifier)) ;) (expression_statement "uu._mp_size = 1;" (assignment_expression "uu._mp_size = 1" (field_expression "uu._mp_size" identifier . field_identifier) = number_literal) ;) (expression_statement "uu._mp_exp = 1;" (assignment_expression "uu._mp_exp = 1" (field_expression "uu._mp_exp" identifier . field_identifier) = number_literal) ;) (expression_statement "ul = u;" (assignment_expression "ul = u" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009d25c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009d25c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009d25c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009d25c" * (cast_expression "(code *)PTR___gmpf_sub_0009d25c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "v = p_Var14;" (assignment_expression "v = p_Var14" identifier = identifier) ;) }))) (if_statement "if (iVar3 == *(int *)puVar2) {\n    return;\n  }" if (parenthesized_expression "(iVar3 == *(int *)puVar2)" ( (binary_expression "iVar3 == *(int *)puVar2" identifier == (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar23 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar23 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "apuStack_80[0] = puVar23 + 0x88530;" (assignment_expression "apuStack_80[0] = puVar23 + 0x88530" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) = (binary_expression "puVar23 + 0x88530" identifier + number_literal)) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) (expression_statement "piVar22 = *(int **)(puVar23 + 0x80a30);" (assignment_expression "piVar22 = *(int **)(puVar23 + 0x80a30)" identifier = (pointer_expression "*(int **)(puVar23 + 0x80a30)" * (cast_expression "(int **)(puVar23 + 0x80a30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + 0x80a30)" ( (binary_expression "puVar23 + 0x80a30" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = v->_mp_size;" (assignment_expression "uVar17 = v->_mp_size" identifier = (field_expression "v->_mp_size" identifier -> field_identifier)) ;) (expression_statement "puStack_60 = puVar2;" (assignment_expression "puStack_60 = puVar2" identifier = identifier) ;) (expression_statement "iStack_64 = *piVar22;" (assignment_expression "iStack_64 = *piVar22" identifier = (pointer_expression "*piVar22" * identifier)) ;) (expression_statement "uVar15 = r->_mp_prec;" (assignment_expression "uVar15 = r->_mp_prec" identifier = (field_expression "r->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "uVar19 = p_Var8->_mp_size;" (assignment_expression "uVar19 = p_Var8->_mp_size" identifier = (field_expression "p_Var8->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar5 = -uVar17;" (assignment_expression "uVar5 = -uVar17" identifier = (unary_expression "-uVar17" - identifier)) ;) (if_statement "if (-1 < (int)uVar17) {\n    uVar5 = uVar17;\n  }" if (parenthesized_expression "(-1 < (int)uVar17)" ( (binary_expression "-1 < (int)uVar17" number_literal < (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar17;\n  }" { (expression_statement "uVar5 = uVar17;" (assignment_expression "uVar5 = uVar17" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar19;" (assignment_expression "uVar9 = uVar19" identifier = identifier) ;) (if_statement "if ((int)uVar19 < 0) {\n    uVar9 = -uVar19;\n  }" if (parenthesized_expression "((int)uVar19 < 0)" ( (binary_expression "(int)uVar19 < 0" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar9 = -uVar19;\n  }" { (expression_statement "uVar9 = -uVar19;" (assignment_expression "uVar9 = -uVar19" identifier = (unary_expression "-uVar19" - identifier)) ;) })) (expression_statement "p_Var14 = (mpf_srcptr)v->_mp_d;" (assignment_expression "p_Var14 = (mpf_srcptr)v->_mp_d" identifier = (cast_expression "(mpf_srcptr)v->_mp_d" ( (type_descriptor "mpf_srcptr" type_identifier) ) (field_expression "v->_mp_d" identifier -> field_identifier))) ;) (expression_statement "p_Var12 = (mpf_srcptr)p_Var8->_mp_d;" (assignment_expression "p_Var12 = (mpf_srcptr)p_Var8->_mp_d" identifier = (cast_expression "(mpf_srcptr)p_Var8->_mp_d" ( (type_descriptor "mpf_srcptr" type_identifier) ) (field_expression "p_Var8->_mp_d" identifier -> field_identifier))) ;) (expression_statement "uVar21 = uVar5;" (assignment_expression "uVar21 = uVar5" identifier = identifier) ;) (if_statement "if ((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);\n    uVar21 = uVar15;\n  }" if (parenthesized_expression "((mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0)" ( (binary_expression "(mp_limb_t *)(uint)((int)uVar15 < (int)uVar5) != (mp_limb_t *)0x0" (cast_expression "(mp_limb_t *)(uint)((int)uVar15 < (int)uVar5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar15 < (int)uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar15 < (int)uVar5)" ( (binary_expression "(int)uVar15 < (int)uVar5" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);\n    uVar21 = uVar15;\n  }" { (expression_statement "p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4);" (assignment_expression "p_Var14 = (mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4)" identifier = (call_expression "(mpf_srcptr)((int)p_Var14 + (uVar5 - uVar15) * 4)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)p_Var14 + (uVar5 - uVar15) * 4)" ( (binary_expression "(int)p_Var14 + (uVar5 - uVar15) * 4" (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar5 - uVar15) * 4" (parenthesized_expression "(uVar5 - uVar15)" ( (binary_expression "uVar5 - uVar15" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar21 = uVar15;" (assignment_expression "uVar21 = uVar15" identifier = identifier) ;) })) (if_statement "if ((int)uVar15 < (int)uVar9) {\n    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);\n    uVar9 = uVar15;\n  }" if (parenthesized_expression "((int)uVar15 < (int)uVar9)" ( (binary_expression "(int)uVar15 < (int)uVar9" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);\n    uVar9 = uVar15;\n  }" { (expression_statement "p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4);" (assignment_expression "p_Var12 = (mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4)" identifier = (call_expression "(mpf_srcptr)((int)p_Var12 + (uVar9 - uVar15) * 4)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)p_Var12 + (uVar9 - uVar15) * 4)" ( (binary_expression "(int)p_Var12 + (uVar9 - uVar15) * 4" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar9 - uVar15) * 4" (parenthesized_expression "(uVar9 - uVar15)" ( (binary_expression "uVar9 - uVar15" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" identifier = identifier) ;) })) (if_statement "if ((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)) {\n    r->_mp_size = 0;\n    r->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);\n    p_Var14 = v;\n    puVar26 = auStack_98;\n  }\n  else {\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" if (parenthesized_expression "((uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0))" ( (binary_expression "(uVar21 == 0) || (iVar3 = uVar21 + uVar9, uVar9 == 0)" (parenthesized_expression "(uVar21 == 0)" ( (binary_expression "uVar21 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = uVar21 + uVar9, uVar9 == 0)" ( (comma_expression "iVar3 = uVar21 + uVar9, uVar9 == 0" (assignment_expression "iVar3 = uVar21 + uVar9" identifier = (binary_expression "uVar21 + uVar9" identifier + identifier)) , (binary_expression "uVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    r->_mp_size = 0;\n    r->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);\n    p_Var14 = v;\n    puVar26 = auStack_98;\n  }" { (expression_statement "r->_mp_size = 0;" (assignment_expression "r->_mp_size = 0" (field_expression "r->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "r->_mp_exp = 0;" (assignment_expression "r->_mp_exp = 0" (field_expression "r->_mp_exp" identifier -> field_identifier) = number_literal) ;) (expression_statement "pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5);" (assignment_expression "pmVar4 = (mp_limb_t *)(uint)((int)uVar15 < (int)uVar5)" identifier = (cast_expression "(mp_limb_t *)(uint)((int)uVar15 < (int)uVar5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar15 < (int)uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar15 < (int)uVar5)" ( (binary_expression "(int)uVar15 < (int)uVar5" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "p_Var14 = v;" (assignment_expression "p_Var14 = v" identifier = identifier) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) }) (else_clause "else {\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" else (compound_statement "{\n    pmStack_68 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }\n    pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);\n    p_Stack_6c = (mpf_srcptr)pmVar4;\n    if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }\n    uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);\n    uVar15 = uVar15 + 1;\n    p_Var12 = p_Stack_6c;\n    if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }\n    uVar17 = uVar17 ^ uVar19;\n    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }\n    r->_mp_size = uVar9;\n    pmVar4 = pmStack_68;\n    if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" { (expression_statement "pmStack_68 = (mp_limb_t *)0x0;" (assignment_expression "pmStack_68 = (mp_limb_t *)0x0" identifier = (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }\n    else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }" if (parenthesized_expression "((uint)(iVar3 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar3 * 4) < 0x7f01" (call_expression "(uint)(iVar3 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 * 4)" ( (binary_expression "iVar3 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_98 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);\n      p_Stack_70 = (mpf_srcptr)iVar3;\n    }" { (expression_statement "iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar3 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar3 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar3 * 4 + 7U & 0xfffffff8" (binary_expression "iVar3 * 4 + 7U" (binary_expression "iVar3 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar26 = auStack_98 + iVar7;" (assignment_expression "puVar26 = auStack_98 + iVar7" identifier = (binary_expression "auStack_98 + iVar7" identifier + identifier)) ;) (expression_statement "pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7);" (assignment_expression "pmVar4 = (mp_limb_t *)((int)apuStack_80 + iVar7)" identifier = (cast_expression "(mp_limb_t *)((int)apuStack_80 + iVar7)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_80 + iVar7)" ( (binary_expression "(int)apuStack_80 + iVar7" (cast_expression "(int)apuStack_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "p_Stack_70 = (mpf_srcptr)iVar3;" (assignment_expression "p_Stack_70 = (mpf_srcptr)iVar3" identifier = (cast_expression "(mpf_srcptr)iVar3" ( (type_descriptor "mpf_srcptr" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }" else (compound_statement "{\n      iStack_78 = iVar3;\n      uStack_74 = uVar9;\n      p_Stack_70 = p_Var12;\n      p_Stack_6c = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);\n      uVar9 = uStack_74;\n      p_Var12 = p_Stack_70;\n      p_Var14 = p_Stack_6c;\n      p_Stack_70 = (mpf_srcptr)iStack_78;\n    }" { (expression_statement "iStack_78 = iVar3;" (assignment_expression "iStack_78 = iVar3" identifier = identifier) ;) (expression_statement "uStack_74 = uVar9;" (assignment_expression "uStack_74 = uVar9" identifier = identifier) ;) (expression_statement "p_Stack_70 = p_Var12;" (assignment_expression "p_Stack_70 = p_Var12" identifier = identifier) ;) (expression_statement "p_Stack_6c = p_Var14;" (assignment_expression "p_Stack_6c = p_Var14" identifier = identifier) ;) (expression_statement "pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68);" (assignment_expression "pmVar4 = (mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68)" identifier = (cast_expression "(mp_limb_t *)(**(code **)(puVar23 + 0x807e0))(&pmStack_68)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar23 + 0x807e0))(&pmStack_68)" (parenthesized_expression "(**(code **)(puVar23 + 0x807e0))" ( (pointer_expression "**(code **)(puVar23 + 0x807e0)" * (pointer_expression "*(code **)(puVar23 + 0x807e0)" * (cast_expression "(code **)(puVar23 + 0x807e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar23 + 0x807e0)" ( (binary_expression "puVar23 + 0x807e0" identifier + number_literal) ))))) )) (argument_list "(&pmStack_68)" ( (pointer_expression "&pmStack_68" & identifier) ))))) ;) (expression_statement "uVar9 = uStack_74;" (assignment_expression "uVar9 = uStack_74" identifier = identifier) ;) (expression_statement "p_Var12 = p_Stack_70;" (assignment_expression "p_Var12 = p_Stack_70" identifier = identifier) ;) (expression_statement "p_Var14 = p_Stack_6c;" (assignment_expression "p_Var14 = p_Stack_6c" identifier = identifier) ;) (expression_statement "p_Stack_70 = (mpf_srcptr)iStack_78;" (assignment_expression "p_Stack_70 = (mpf_srcptr)iStack_78" identifier = (cast_expression "(mpf_srcptr)iStack_78" ( (type_descriptor "mpf_srcptr" type_identifier) ) identifier)) ;) }))) (expression_statement "pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c);" (assignment_expression "pcVar24 = *(code **)(apuStack_80[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7d8c)" * (cast_expression "(code **)(apuStack_80[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7d8c)" ( (binary_expression "apuStack_80[0] + -0x7d8c" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "p_Stack_6c = (mpf_srcptr)pmVar4;" (assignment_expression "p_Stack_6c = (mpf_srcptr)pmVar4" identifier = (cast_expression "(mpf_srcptr)pmVar4" ( (type_descriptor "mpf_srcptr" type_identifier) ) identifier)) ;) (if_statement "if ((int)uVar21 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }" if (parenthesized_expression "((int)uVar21 < (int)uVar9)" ( (binary_expression "(int)uVar21 < (int)uVar9" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar26 + 0x10) = uVar21;\n      iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }" { (expression_statement "*(uint *)(puVar26 + 0x10) = uVar21;" (assignment_expression "*(uint *)(puVar26 + 0x10) = uVar21" (pointer_expression "*(uint *)(puVar26 + 0x10)" * (cast_expression "(uint *)(puVar26 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x10)" ( (binary_expression "puVar26 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14);" (assignment_expression "iVar3 = (*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14)" identifier = (call_expression "(*pcVar24)(pmVar4,p_Var12,uVar9,p_Var14)" (parenthesized_expression "(*pcVar24)" ( (pointer_expression "*pcVar24" * identifier) )) (argument_list "(pmVar4,p_Var12,uVar9,p_Var14)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "p_Var14 = p_Var12;" (assignment_expression "p_Var14 = p_Var12" identifier = identifier) ;) }) (else_clause "else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }" else (compound_statement "{\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);\n    }" { (expression_statement "*(uint *)(puVar26 + 0x10) = uVar9;" (assignment_expression "*(uint *)(puVar26 + 0x10) = uVar9" (pointer_expression "*(uint *)(puVar26 + 0x10)" * (cast_expression "(uint *)(puVar26 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x10)" ( (binary_expression "puVar26 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12);" (assignment_expression "iVar3 = (*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12)" identifier = (call_expression "(*pcVar24)(pmVar4,p_Var14,uVar21,p_Var12)" (parenthesized_expression "(*pcVar24)" ( (pointer_expression "*pcVar24" * identifier) )) (argument_list "(pmVar4,p_Var14,uVar21,p_Var12)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0);" (assignment_expression "uVar9 = (int)p_Stack_70 - (uint)(iVar3 == 0)" identifier = (binary_expression "(int)p_Stack_70 - (uint)(iVar3 == 0)" (cast_expression "(int)p_Stack_70" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))))) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "p_Var12 = p_Stack_6c;" (assignment_expression "p_Var12 = p_Stack_6c" identifier = identifier) ;) (if_statement "if ((int)uVar15 < (int)uVar9) {\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }" if (parenthesized_expression "((int)uVar15 < (int)uVar9)" ( (binary_expression "(int)uVar15 < (int)uVar9" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);\n      uVar9 = uVar15;\n    }" { (expression_statement "p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4);" (assignment_expression "p_Var12 = (mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4)" identifier = (call_expression "(mpf_srcptr)((int)p_Stack_6c + (uVar9 - uVar15) * 4)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)p_Stack_6c + (uVar9 - uVar15) * 4)" ( (binary_expression "(int)p_Stack_6c + (uVar9 - uVar15) * 4" (cast_expression "(int)p_Stack_6c" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar9 - uVar15) * 4" (parenthesized_expression "(uVar9 - uVar15)" ( (binary_expression "uVar9 - uVar15" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar9 = uVar15;" (assignment_expression "uVar9 = uVar15" identifier = identifier) ;) })) (expression_statement "iVar7 = uVar9 - 1;" (assignment_expression "iVar7 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if (uVar9 != 0) {\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      pmVar6 = r->_mp_d;\n      mVar18 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar18;\n    }" { (expression_statement "pmVar6 = r->_mp_d;" (assignment_expression "pmVar6 = r->_mp_d" identifier = (field_expression "r->_mp_d" identifier -> field_identifier)) ;) (expression_statement "mVar18 = *(mp_limb_t *)p_Var12;" (assignment_expression "mVar18 = *(mp_limb_t *)p_Var12" identifier = (pointer_expression "*(mp_limb_t *)p_Var12" * (cast_expression "(mp_limb_t *)p_Var12" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pmVar4 = pmVar6;" (assignment_expression "pmVar4 = pmVar6" identifier = identifier) ;) (if_statement "if (iVar7 != 0) {\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }" { (do_statement "do {\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);" do (compound_statement "{\n          p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);\n          p_Var14 = (mpf_srcptr)(pmVar4 + 1);\n          *pmVar4 = mVar18;\n          iVar7 = iVar7 + -1;\n          mVar18 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        }" { (expression_statement "p_Var12 = (mpf_srcptr)((int)p_Var12 + 4);" (assignment_expression "p_Var12 = (mpf_srcptr)((int)p_Var12 + 4)" identifier = (call_expression "(mpf_srcptr)((int)p_Var12 + 4)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "((int)p_Var12 + 4)" ( (binary_expression "(int)p_Var12 + 4" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "p_Var14 = (mpf_srcptr)(pmVar4 + 1);" (assignment_expression "p_Var14 = (mpf_srcptr)(pmVar4 + 1)" identifier = (call_expression "(mpf_srcptr)(pmVar4 + 1)" (parenthesized_expression "(mpf_srcptr)" ( identifier )) (argument_list "(pmVar4 + 1)" ( (binary_expression "pmVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "*pmVar4 = mVar18;" (assignment_expression "*pmVar4 = mVar18" (pointer_expression "*pmVar4" * identifier) = identifier) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "mVar18 = *(mp_limb_t *)p_Var12;" (assignment_expression "mVar18 = *(mp_limb_t *)p_Var12" identifier = (pointer_expression "*(mp_limb_t *)p_Var12" * (cast_expression "(mp_limb_t *)p_Var12" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pmVar4 = (mp_limb_t *)p_Var14;" (assignment_expression "pmVar4 = (mp_limb_t *)p_Var14" identifier = (cast_expression "(mp_limb_t *)p_Var14" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) ;) (expression_statement "pmVar6 = pmVar6 + (uVar9 - 1);" (assignment_expression "pmVar6 = pmVar6 + (uVar9 - 1)" identifier = (binary_expression "pmVar6 + (uVar9 - 1)" identifier + (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*pmVar6 = mVar18;" (assignment_expression "*pmVar6 = mVar18" (pointer_expression "*pmVar6" * identifier) = identifier) ;) })) (expression_statement "uVar17 = uVar17 ^ uVar19;" (assignment_expression "uVar17 = uVar17 ^ uVar19" identifier = (binary_expression "uVar17 ^ uVar19" identifier ^ identifier)) ;) (expression_statement "r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);" (assignment_expression "r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0)" (field_expression "r->_mp_exp" identifier -> field_identifier) = (binary_expression "(v->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0)" (parenthesized_expression "(v->_mp_exp + p_Var8->_mp_exp)" ( (binary_expression "v->_mp_exp + p_Var8->_mp_exp" (field_expression "v->_mp_exp" identifier -> field_identifier) + (field_expression "p_Var8->_mp_exp" identifier -> field_identifier)) )) - (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))))) ;) (if_statement "if ((int)uVar17 < 0) {\n      uVar9 = -uVar9;\n    }" if (parenthesized_expression "((int)uVar17 < 0)" ( (binary_expression "(int)uVar17 < 0" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar9 = -uVar9;\n    }" { (expression_statement "uVar9 = -uVar9;" (assignment_expression "uVar9 = -uVar9" identifier = (unary_expression "-uVar9" - identifier)) ;) })) (expression_statement "r->_mp_size = uVar9;" (assignment_expression "r->_mp_size = uVar9" (field_expression "r->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4 = pmStack_68;" (assignment_expression "pmVar4 = pmStack_68" identifier = identifier) ;) (if_statement "if (pmStack_68 != (mp_limb_t *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" if (parenthesized_expression "(pmStack_68 != (mp_limb_t *)0x0)" ( (binary_expression "pmStack_68 != (mp_limb_t *)0x0" identifier != (cast_expression "(mp_limb_t *)0x0" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" { (expression_statement "(**(code **)(apuStack_80[0] + -0x7a28))();" (call_expression "(**(code **)(apuStack_80[0] + -0x7a28))()" (parenthesized_expression "(**(code **)(apuStack_80[0] + -0x7a28))" ( (pointer_expression "**(code **)(apuStack_80[0] + -0x7a28)" * (pointer_expression "*(code **)(apuStack_80[0] + -0x7a28)" * (cast_expression "(code **)(apuStack_80[0] + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7a28)" ( (binary_expression "apuStack_80[0] + -0x7a28" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_64 == *piVar22) {\n    return;\n  }" if (parenthesized_expression "(iStack_64 == *piVar22)" ( (binary_expression "iStack_64 == *piVar22" identifier == (pointer_expression "*piVar22" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar24 = *(code **)(apuStack_80[0] + -0x7b70);" (assignment_expression "pcVar24 = *(code **)(apuStack_80[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7b70)" * (cast_expression "(code **)(apuStack_80[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7b70)" ( (binary_expression "apuStack_80[0] + -0x7b70" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar27 = 0x1cd94;" (assignment_expression "uVar27 = 0x1cd94" identifier = number_literal) ;) (expression_statement "(*pcVar24)();" (call_expression "(*pcVar24)()" (parenthesized_expression "(*pcVar24)" ( (pointer_expression "*pcVar24" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0;" (assignment_expression "*(code **)(puVar26 + -0x28) = pcVar24 + 0x882a0" (pointer_expression "*(code **)(puVar26 + -0x28)" * (cast_expression "(code **)(puVar26 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x28)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar24 + 0x882a0" identifier + number_literal)) ;) (expression_statement "*(mpf_ptr *)(puVar26 + -0x14) = r;" (assignment_expression "*(mpf_ptr *)(puVar26 + -0x14) = r" (pointer_expression "*(mpf_ptr *)(puVar26 + -0x14)" * (cast_expression "(mpf_ptr *)(puVar26 + -0x14)" ( (type_descriptor "mpf_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar26 + -4) = uVar27;" (assignment_expression "*(undefined4 *)(puVar26 + -4) = uVar27" (pointer_expression "*(undefined4 *)(puVar26 + -4)" * (cast_expression "(undefined4 *)(puVar26 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -4)" ( (binary_expression "puVar26 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar26 + -8) = v;" (assignment_expression "*(mpf_srcptr *)(puVar26 + -8) = v" (pointer_expression "*(mpf_srcptr *)(puVar26 + -8)" * (cast_expression "(mpf_srcptr *)(puVar26 + -8)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mpf_srcptr *)(puVar26 + -0xc) = p_Var8;" (assignment_expression "*(mpf_srcptr *)(puVar26 + -0xc) = p_Var8" (pointer_expression "*(mpf_srcptr *)(puVar26 + -0xc)" * (cast_expression "(mpf_srcptr *)(puVar26 + -0xc)" ( (type_descriptor "mpf_srcptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar26 + -0x10) = uVar19;" (assignment_expression "*(uint *)(puVar26 + -0x10) = uVar19" (pointer_expression "*(uint *)(puVar26 + -0x10)" * (cast_expression "(uint *)(puVar26 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x10)" ( (binary_expression "puVar26 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar26 + -0x18) = uVar17;" (assignment_expression "*(uint *)(puVar26 + -0x18) = uVar17" (pointer_expression "*(uint *)(puVar26 + -0x18)" * (cast_expression "(uint *)(puVar26 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x18)" ( (binary_expression "puVar26 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar26 + -0x1c) = uVar15;" (assignment_expression "*(uint *)(puVar26 + -0x1c) = uVar15" (pointer_expression "*(uint *)(puVar26 + -0x1c)" * (cast_expression "(uint *)(puVar26 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x1c)" ( (binary_expression "puVar26 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "mVar18 = p_Var14->_mp_size;" (assignment_expression "mVar18 = p_Var14->_mp_size" identifier = (field_expression "p_Var14->_mp_size" identifier -> field_identifier)) ;) (if_statement "if ((uVar9 == 0) || (mVar18 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar9 == 0) || (mVar18 == 0))" ( (binary_expression "(uVar9 == 0) || (mVar18 == 0)" (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(mVar18 == 0)" ( (binary_expression "mVar18 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }" { (expression_statement "pmVar4[1] = 0;" (assignment_expression "pmVar4[1] = 0" (subscript_expression "pmVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pmVar4[2] = 0;" (assignment_expression "pmVar4[2] = 0" (subscript_expression "pmVar4[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if ((int)mVar18 < 0) {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar20 = (uint *)pmVar4[3];\n    iVar3 = -mVar18 - mVar16;\n    mVar11 = -mVar18;\n    if (iVar3 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);\n    uVar17 = *puVar20;\n    *puVar20 = uVar15 + uVar17;\n    if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }" if (parenthesized_expression "((int)mVar18 < 0)" ( (binary_expression "(int)mVar18 < 0" (cast_expression "(int)mVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar20 = (uint *)pmVar4[3];\n    iVar3 = -mVar18 - mVar16;\n    mVar11 = -mVar18;\n    if (iVar3 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);\n    uVar17 = *puVar20;\n    *puVar20 = uVar15 + uVar17;\n    if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }\n  }" { (expression_statement "mVar16 = *pmVar4;" (assignment_expression "mVar16 = *pmVar4" identifier = (pointer_expression "*pmVar4" * identifier)) ;) (expression_statement "pmVar6 = p_Var14->_mp_d;" (assignment_expression "pmVar6 = p_Var14->_mp_d" identifier = (field_expression "p_Var14->_mp_d" identifier -> field_identifier)) ;) (expression_statement "puVar20 = (uint *)pmVar4[3];" (assignment_expression "puVar20 = (uint *)pmVar4[3]" identifier = (cast_expression "(uint *)pmVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar3 = -mVar18 - mVar16;" (assignment_expression "iVar3 = -mVar18 - mVar16" identifier = (binary_expression "-mVar18 - mVar16" (unary_expression "-mVar18" - identifier) - identifier)) ;) (expression_statement "mVar11 = -mVar18;" (assignment_expression "mVar11 = -mVar18" identifier = (unary_expression "-mVar18" - identifier)) ;) (if_statement "if (iVar3 < 1) goto LAB_0001cf64;" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cf64;" goto statement_identifier ;)) (labeled_statement "LAB_0001ce08:\n    iVar7 = iVar3 + -1;" statement_identifier : (expression_statement "iVar7 = iVar3 + -1;" (assignment_expression "iVar7 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;)) (expression_statement "lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];" (assignment_expression "lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7]" identifier = (binary_expression "(ulonglong)uVar9 * (ulonglong)pmVar6[iVar7]" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)pmVar6[iVar7]" ( (type_descriptor "ulonglong" type_identifier) ) (subscript_expression "pmVar6[iVar7]" identifier [ identifier ])))) ;) (expression_statement "pmVar13 = pmVar6 + iVar3;" (assignment_expression "pmVar13 = pmVar6 + iVar3" identifier = (binary_expression "pmVar6 + iVar3" identifier + identifier)) ;) (while_statement "while( true ) {\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar24 + 0x80304);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar15 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }" { (expression_statement "uVar15 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar15 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "pcVar25 = *(code **)(pcVar24 + 0x80304);" (assignment_expression "pcVar25 = *(code **)(pcVar24 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar24 + 0x80304)" * (cast_expression "(code **)(pcVar24 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + 0x80304)" ( (binary_expression "pcVar24 + 0x80304" identifier + number_literal) ))))) ;) (if_statement "if (iVar7 == -1) break;" if (parenthesized_expression "(iVar7 == -1)" ( (binary_expression "iVar7 == -1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar10 = pmVar13 + -2;" (assignment_expression "puVar10 = pmVar13 + -2" identifier = (binary_expression "pmVar13 + -2" identifier + number_literal)) ;) (expression_statement "pmVar13 = pmVar13 + -1;" (assignment_expression "pmVar13 = pmVar13 + -1" identifier = (binary_expression "pmVar13 + -1" identifier + number_literal)) ;) (expression_statement "lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);" (assignment_expression "lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20)" identifier = (binary_expression "lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20)" identifier + (parenthesized_expression "((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20" (binary_expression "(ulonglong)uVar9 * (ulonglong)*puVar10" (binary_expression "(ulonglong)uVar9 * (ulonglong)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * identifier) >> number_literal) )))) ;) (expression_statement "uVar15 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar15 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }" if (parenthesized_expression "((int)lVar1 != -1)" ( (binary_expression "(int)lVar1 != -1" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        pcVar25 = *(code **)(pcVar24 + 0x80304);\n        break;\n      }" { (expression_statement "pcVar25 = *(code **)(pcVar24 + 0x80304);" (assignment_expression "pcVar25 = *(code **)(pcVar24 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar24 + 0x80304)" * (cast_expression "(code **)(pcVar24 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + 0x80304)" ( (binary_expression "pcVar24 + 0x80304" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));" (assignment_expression "lVar1 = CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10))" identifier = (call_expression "CONCAT44(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10))" identifier (argument_list "(uVar15,(int)((ulonglong)uVar9 * (ulonglong)*puVar10))" ( identifier , (cast_expression "(int)((ulonglong)uVar9 * (ulonglong)*puVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar9 * (ulonglong)*puVar10)" ( (binary_expression "(ulonglong)uVar9 * (ulonglong)*puVar10" (binary_expression "(ulonglong)uVar9 * (ulonglong)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * identifier) ))) )))) ;) })) (expression_statement "uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16);" (assignment_expression "uVar5 = (*pcVar25)(puVar20,pmVar6 + iVar3,mVar16)" identifier = (call_expression "(*pcVar25)(puVar20,pmVar6 + iVar3,mVar16)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(puVar20,pmVar6 + iVar3,mVar16)" ( identifier , (binary_expression "pmVar6 + iVar3" identifier + identifier) , identifier )))) ;) (expression_statement "uVar17 = *puVar20;" (assignment_expression "uVar17 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar15 + uVar17;" (assignment_expression "*puVar20 = uVar15 + uVar17" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar15 + uVar17" identifier + identifier)) ;) (if_statement "if (uVar15 + uVar17 < uVar15) {\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar15 + uVar17 < uVar15)" ( (binary_expression "uVar15 + uVar17 < uVar15" (binary_expression "uVar15 + uVar17" identifier + identifier) < identifier) )) (compound_statement "{\n      if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }\n      uVar15 = puVar20[1];\n      puVar20[1] = uVar15 + 1;\n      if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if ((int)mVar16 < 2) {\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }" if (parenthesized_expression "((int)mVar16 < 2)" ( (binary_expression "(int)mVar16 < 2" (cast_expression "(int)mVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar16 + uVar15;\n        puVar20[mVar16] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar15;\n        goto joined_r0x0001cf98;\n      }" { (labeled_statement "LAB_0001cef0:\n        uVar15 = (uint)(uVar5 + 1 != 0);" statement_identifier : (expression_statement "uVar15 = (uint)(uVar5 + 1 != 0);" (assignment_expression "uVar15 = (uint)(uVar5 + 1 != 0)" identifier = (call_expression "(uint)(uVar5 + 1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 + 1 != 0)" ( (binary_expression "uVar5 + 1 != 0" (binary_expression "uVar5 + 1" identifier + number_literal) != number_literal) )))) ;)) (expression_statement "mVar11 = mVar16 + uVar15;" (assignment_expression "mVar11 = mVar16 + uVar15" identifier = (binary_expression "mVar16 + uVar15" identifier + identifier)) ;) (expression_statement "puVar20[mVar16] = uVar5 + 1;" (assignment_expression "puVar20[mVar16] = uVar5 + 1" (subscript_expression "puVar20[mVar16]" identifier [ identifier ]) = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "pmVar4[2] = p_Var14->_mp_exp + uVar15;" (assignment_expression "pmVar4[2] = p_Var14->_mp_exp + uVar15" (subscript_expression "pmVar4[2]" identifier [ number_literal ]) = (binary_expression "p_Var14->_mp_exp + uVar15" (field_expression "p_Var14->_mp_exp" identifier -> field_identifier) + identifier)) ;) (goto_statement "goto joined_r0x0001cf98;" goto statement_identifier ;) })) (expression_statement "uVar15 = puVar20[1];" (assignment_expression "uVar15 = puVar20[1]" identifier = (subscript_expression "puVar20[1]" identifier [ number_literal ])) ;) (expression_statement "puVar20[1] = uVar15 + 1;" (assignment_expression "puVar20[1] = uVar15 + 1" (subscript_expression "puVar20[1]" identifier [ number_literal ]) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 + 1 == 0) {\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar15 + 1 == 0)" ( (binary_expression "uVar15 + 1 == 0" (binary_expression "uVar15 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (mVar16 == 2) goto LAB_0001cef0;\n        uVar15 = puVar20[2];\n        puVar20[2] = uVar15 + 1;\n        if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }\n      }" { (if_statement "if (mVar16 == 2) goto LAB_0001cef0;" if (parenthesized_expression "(mVar16 == 2)" ( (binary_expression "mVar16 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar15 = puVar20[2];" (assignment_expression "uVar15 = puVar20[2]" identifier = (subscript_expression "puVar20[2]" identifier [ number_literal ])) ;) (expression_statement "puVar20[2] = uVar15 + 1;" (assignment_expression "puVar20[2] = uVar15 + 1" (subscript_expression "puVar20[2]" identifier [ number_literal ]) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 + 1 == 0) {\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }" if (parenthesized_expression "(uVar15 + 1 == 0)" ( (binary_expression "uVar15 + 1 == 0" (binary_expression "uVar15 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          mVar11 = 3;\n          puVar10 = puVar20 + 3;\n          do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);\n        }" { (expression_statement "mVar11 = 3;" (assignment_expression "mVar11 = 3" identifier = number_literal) ;) (expression_statement "puVar10 = puVar20 + 3;" (assignment_expression "puVar10 = puVar20 + 3" identifier = (binary_expression "puVar20 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          } while (uVar15 + 1 == 0);" do (compound_statement "{\n            if (mVar16 == mVar11) goto LAB_0001cef0;\n            uVar15 = *puVar10;\n            mVar11 = mVar11 + 1;\n            *puVar10 = uVar15 + 1;\n            puVar10 = puVar10 + 1;\n          }" { (if_statement "if (mVar16 == mVar11) goto LAB_0001cef0;" if (parenthesized_expression "(mVar16 == mVar11)" ( (binary_expression "mVar16 == mVar11" identifier == identifier) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar15 = *puVar10;" (assignment_expression "uVar15 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "mVar11 = mVar11 + 1;" (assignment_expression "mVar11 = mVar11 + 1" identifier = (binary_expression "mVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar10 = uVar15 + 1;" (assignment_expression "*puVar10 = uVar15 + 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + 1;" (assignment_expression "puVar10 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 + 1 == 0)" ( (binary_expression "uVar15 + 1 == 0" (binary_expression "uVar15 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) }) (else_clause "else {\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }" else (compound_statement "{\n    mVar16 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar18 - mVar16;\n    puVar20 = (uint *)pmVar4[3];\n    mVar11 = mVar18;\n    if (0 < iVar3) goto LAB_0001ce08;\nLAB_0001cf64:\n    mVar16 = mVar11;\n    uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);\n  }" { (expression_statement "mVar16 = *pmVar4;" (assignment_expression "mVar16 = *pmVar4" identifier = (pointer_expression "*pmVar4" * identifier)) ;) (expression_statement "pmVar6 = p_Var14->_mp_d;" (assignment_expression "pmVar6 = p_Var14->_mp_d" identifier = (field_expression "p_Var14->_mp_d" identifier -> field_identifier)) ;) (expression_statement "iVar3 = mVar18 - mVar16;" (assignment_expression "iVar3 = mVar18 - mVar16" identifier = (binary_expression "mVar18 - mVar16" identifier - identifier)) ;) (expression_statement "puVar20 = (uint *)pmVar4[3];" (assignment_expression "puVar20 = (uint *)pmVar4[3]" identifier = (cast_expression "(uint *)pmVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pmVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "mVar11 = mVar18;" (assignment_expression "mVar11 = mVar18" identifier = identifier) ;) (if_statement "if (0 < iVar3) goto LAB_0001ce08;" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (goto_statement "goto LAB_0001ce08;" goto statement_identifier ;)) (labeled_statement "LAB_0001cf64:\n    mVar16 = mVar11;" statement_identifier : (expression_statement "mVar16 = mVar11;" (assignment_expression "mVar16 = mVar11" identifier = identifier) ;)) (expression_statement "uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16);" (assignment_expression "uVar5 = (**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16)" identifier = (call_expression "(**(code **)(pcVar24 + 0x80304))(puVar20,pmVar6,mVar16)" (parenthesized_expression "(**(code **)(pcVar24 + 0x80304))" ( (pointer_expression "**(code **)(pcVar24 + 0x80304)" * (pointer_expression "*(code **)(pcVar24 + 0x80304)" * (cast_expression "(code **)(pcVar24 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar24 + 0x80304)" ( (binary_expression "pcVar24 + 0x80304" identifier + number_literal) ))))) )) (argument_list "(puVar20,pmVar6,mVar16)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "mVar11 = mVar16 + (uVar5 != 0);" (assignment_expression "mVar11 = mVar16 + (uVar5 != 0)" identifier = (binary_expression "mVar16 + (uVar5 != 0)" identifier + (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )))) ;) (expression_statement "puVar20[mVar16] = uVar5;" (assignment_expression "puVar20[mVar16] = uVar5" (subscript_expression "puVar20[mVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);" (assignment_expression "pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0)" (subscript_expression "pmVar4[2]" identifier [ number_literal ]) = (binary_expression "p_Var14->_mp_exp + (uint)(uVar5 != 0)" (field_expression "p_Var14->_mp_exp" identifier -> field_identifier) + (call_expression "(uint)(uVar5 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) ))))) ;) (labeled_statement "joined_r0x0001cf98:\n  if ((int)mVar18 < 0) {\n    mVar11 = -mVar11;\n  }" statement_identifier : (if_statement "if ((int)mVar18 < 0) {\n    mVar11 = -mVar11;\n  }" if (parenthesized_expression "((int)mVar18 < 0)" ( (binary_expression "(int)mVar18 < 0" (cast_expression "(int)mVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    mVar11 = -mVar11;\n  }" { (expression_statement "mVar11 = -mVar11;" (assignment_expression "mVar11 = -mVar11" identifier = (unary_expression "-mVar11" - identifier)) ;) }))) (expression_statement "pmVar4[1] = mVar11;" (assignment_expression "pmVar4[1] = mVar11" (subscript_expression "pmVar4[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)\n\n{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}\n\n" (function_definition "void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)\n\n{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" primitive_type (function_declarator "__gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(uint *param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint uVar21;" type_identifier identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "int *piVar24;" primitive_type (pointer_declarator "*piVar24" * identifier) ;) (declaration "undefined *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "code *pcVar26;" type_identifier (pointer_declarator "*pcVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "undefined1 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "undefined *apuStack_80 [2];" type_identifier (pointer_declarator "*apuStack_80 [2]" * (array_declarator "apuStack_80 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_78;" primitive_type identifier ;) (declaration "uint uStack_74;" type_identifier identifier ;) (declaration "undefined4 *puStack_70;" type_identifier (pointer_declarator "*puStack_70" * identifier) ;) (declaration "undefined4 *puStack_6c;" type_identifier (pointer_declarator "*puStack_6c" * identifier) ;) (declaration "int *piStack_68;" primitive_type (pointer_declarator "*piStack_68" * identifier) ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "undefined *puStack_60;" type_identifier (pointer_declarator "*puStack_60" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "int *local_10;" primitive_type (pointer_declarator "*local_10" * identifier) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0009d540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" * (cast_expression "(int *)PTR___stack_chk_guard_0009d540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_neg_0009d2e0)();" (call_expression "(*(code *)PTR___gmpf_neg_0009d2e0)()" (parenthesized_expression "(*(code *)PTR___gmpf_neg_0009d2e0)" ( (pointer_expression "*(code *)PTR___gmpf_neg_0009d2e0" * (cast_expression "(code *)PTR___gmpf_neg_0009d2e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" else (compound_statement "{\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" { (expression_statement "local_10 = &local_20;" (assignment_expression "local_10 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "param_3 = &uStack_1c;" (assignment_expression "param_3 = &uStack_1c" identifier = (pointer_expression "&uStack_1c" & identifier)) ;) (expression_statement "local_18 = 1;" (assignment_expression "local_18 = 1" identifier = number_literal) ;) (expression_statement "local_14 = 1;" (assignment_expression "local_14 = 1" identifier = number_literal) ;) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009d25c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009d25c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009d25c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009d25c" * (cast_expression "(code *)PTR___gmpf_sub_0009d25c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (local_c == *(int *)puVar3) {\n    return;\n  }" if (parenthesized_expression "(local_c == *(int *)puVar3)" ( (binary_expression "local_c == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar25 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0009d4d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" * (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "apuStack_80[0] = puVar25 + 0x88530;" (assignment_expression "apuStack_80[0] = puVar25 + 0x88530" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) = (binary_expression "puVar25 + 0x88530" identifier + number_literal)) ;) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" identifier = identifier) ;) (expression_statement "piVar24 = *(int **)(puVar25 + 0x80a30);" (assignment_expression "piVar24 = *(int **)(puVar25 + 0x80a30)" identifier = (pointer_expression "*(int **)(puVar25 + 0x80a30)" * (cast_expression "(int **)(puVar25 + 0x80a30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x80a30)" ( (binary_expression "puVar25 + 0x80a30" identifier + number_literal) ))))) ;) (expression_statement "uVar20 = param_3[1];" (assignment_expression "uVar20 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "puStack_60 = puVar3;" (assignment_expression "puStack_60 = puVar3" identifier = identifier) ;) (expression_statement "iStack_64 = *piVar24;" (assignment_expression "iStack_64 = *piVar24" identifier = (pointer_expression "*piVar24" * identifier)) ;) (expression_statement "uVar18 = *param_1;" (assignment_expression "uVar18 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar21 = puVar11[1];" (assignment_expression "uVar21 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = -uVar20;" (assignment_expression "uVar7 = -uVar20" identifier = (unary_expression "-uVar20" - identifier)) ;) (if_statement "if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }" if (parenthesized_expression "(-1 < (int)uVar20)" ( (binary_expression "-1 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar7 = uVar20;\n  }" { (expression_statement "uVar7 = uVar20;" (assignment_expression "uVar7 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar12 = uVar21;" (assignment_expression "uVar12 = uVar21" identifier = identifier) ;) (if_statement "if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }" if (parenthesized_expression "((int)uVar21 < 0)" ( (binary_expression "(int)uVar21 < 0" (cast_expression "(int)uVar21" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = -uVar21;\n  }" { (expression_statement "uVar12 = -uVar21;" (assignment_expression "uVar12 = -uVar21" identifier = (unary_expression "-uVar21" - identifier)) ;) })) (expression_statement "puVar16 = (undefined4 *)param_3[3];" (assignment_expression "puVar16 = (undefined4 *)param_3[3]" identifier = (cast_expression "(undefined4 *)param_3[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) ;) (expression_statement "puVar14 = (undefined4 *)puVar11[3];" (assignment_expression "puVar14 = (undefined4 *)puVar11[3]" identifier = (cast_expression "(undefined4 *)puVar11[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar23 = uVar7;" (assignment_expression "uVar23 = uVar7" identifier = identifier) ;) (if_statement "if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" if (parenthesized_expression "((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0)" ( (binary_expression "(int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0" (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < (int)uVar7)" ( (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" { (expression_statement "puVar16 = puVar16 + (uVar7 - uVar18);" (assignment_expression "puVar16 = puVar16 + (uVar7 - uVar18)" identifier = (binary_expression "puVar16 + (uVar7 - uVar18)" identifier + (parenthesized_expression "(uVar7 - uVar18)" ( (binary_expression "uVar7 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" identifier = identifier) ;) })) (if_statement "if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < (int)uVar12)" ( (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" { (expression_statement "puVar14 = puVar14 + (uVar12 - uVar18);" (assignment_expression "puVar14 = puVar14 + (uVar12 - uVar18)" identifier = (binary_expression "puVar14 + (uVar12 - uVar18)" identifier + (parenthesized_expression "(uVar12 - uVar18)" ( (binary_expression "uVar12 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (if_statement "if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" if (parenthesized_expression "((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0))" ( (binary_expression "(uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)" (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar17 = uVar23 + uVar12, uVar12 == 0)" ( (comma_expression "iVar17 = uVar23 + uVar12, uVar12 == 0" (assignment_expression "iVar17 = uVar23 + uVar12" identifier = (binary_expression "uVar23 + uVar12" identifier + identifier)) , (binary_expression "uVar12 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7)" identifier = (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar18 < (int)uVar7)" ( (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "puVar16 = param_3;" (assignment_expression "puVar16 = param_3" identifier = identifier) ;) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" identifier = identifier) ;) }) (else_clause "else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" else (compound_statement "{\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" { (expression_statement "piStack_68 = (int *)0x0;" (assignment_expression "piStack_68 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" if (parenthesized_expression "((uint)(iVar17 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar17 * 4) < 0x7f01" (call_expression "(uint)(iVar17 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 * 4)" ( (binary_expression "iVar17 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }" { (expression_statement "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar17 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar17 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar17 * 4 + 7U & 0xfffffff8" (binary_expression "iVar17 * 4 + 7U" (binary_expression "iVar17 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar28 = auStack_98 + iVar15;" (assignment_expression "puVar28 = auStack_98 + iVar15" identifier = (binary_expression "auStack_98 + iVar15" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);" (assignment_expression "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15)" identifier = (cast_expression "(undefined4 *)((int)apuStack_80 + iVar15)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apuStack_80 + iVar15)" ( (binary_expression "(int)apuStack_80 + iVar15" (cast_expression "(int)apuStack_80" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puStack_70 = (undefined4 *)iVar17;" (assignment_expression "puStack_70 = (undefined4 *)iVar17" identifier = (cast_expression "(undefined4 *)iVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" else (compound_statement "{\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" { (expression_statement "iStack_78 = iVar17;" (assignment_expression "iStack_78 = iVar17" identifier = identifier) ;) (expression_statement "uStack_74 = uVar12;" (assignment_expression "uStack_74 = uVar12" identifier = identifier) ;) (expression_statement "puStack_70 = puVar14;" (assignment_expression "puStack_70 = puVar14" identifier = identifier) ;) (expression_statement "puStack_6c = puVar16;" (assignment_expression "puStack_6c = puVar16" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" identifier = (cast_expression "(undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar25 + 0x807e0))(&piStack_68)" (parenthesized_expression "(**(code **)(puVar25 + 0x807e0))" ( (pointer_expression "**(code **)(puVar25 + 0x807e0)" * (pointer_expression "*(code **)(puVar25 + 0x807e0)" * (cast_expression "(code **)(puVar25 + 0x807e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x807e0)" ( (binary_expression "puVar25 + 0x807e0" identifier + number_literal) ))))) )) (argument_list "(&piStack_68)" ( (pointer_expression "&piStack_68" & identifier) ))))) ;) (expression_statement "uVar12 = uStack_74;" (assignment_expression "uVar12 = uStack_74" identifier = identifier) ;) (expression_statement "puVar14 = puStack_70;" (assignment_expression "puVar14 = puStack_70" identifier = identifier) ;) (expression_statement "puVar16 = puStack_6c;" (assignment_expression "puVar16 = puStack_6c" identifier = identifier) ;) (expression_statement "puStack_70 = (undefined4 *)iStack_78;" (assignment_expression "puStack_70 = (undefined4 *)iStack_78" identifier = (cast_expression "(undefined4 *)iStack_78" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7d8c)" * (cast_expression "(code **)(apuStack_80[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7d8c)" ( (binary_expression "apuStack_80[0] + -0x7d8c" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_6c = puVar5;" (assignment_expression "puStack_6c = puVar5" identifier = identifier) ;) (if_statement "if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" if (parenthesized_expression "((int)uVar23 < (int)uVar12)" ( (binary_expression "(int)uVar23 < (int)uVar12" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }" { (expression_statement "*(uint *)(puVar28 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar28 + 0x10)" * (cast_expression "(uint *)(puVar28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16)" identifier = (call_expression "(*pcVar26)(puVar5,puVar14,uVar12,puVar16)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(puVar5,puVar14,uVar12,puVar16)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar16 = puVar14;" (assignment_expression "puVar16 = puVar14" identifier = identifier) ;) }) (else_clause "else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" else (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" { (expression_statement "*(uint *)(puVar28 + 0x10) = uVar12;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar12" (pointer_expression "*(uint *)(puVar28 + 0x10)" * (cast_expression "(uint *)(puVar28 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x10)" ( (binary_expression "puVar28 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14)" identifier = (call_expression "(*pcVar26)(puVar5,puVar16,uVar23,puVar14)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "(puVar5,puVar16,uVar23,puVar14)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);" (assignment_expression "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0)" identifier = (binary_expression "(int)puStack_70 - (uint)(iVar17 == 0)" (cast_expression "(int)puStack_70" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))))) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puStack_6c;" (assignment_expression "puVar14 = puStack_6c" identifier = identifier) ;) (if_statement "if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" if (parenthesized_expression "((int)uVar18 < (int)uVar12)" ( (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" { (expression_statement "puVar14 = puStack_6c + (uVar12 - uVar18);" (assignment_expression "puVar14 = puStack_6c + (uVar12 - uVar18)" identifier = (binary_expression "puStack_6c + (uVar12 - uVar18)" identifier + (parenthesized_expression "(uVar12 - uVar18)" ( (binary_expression "uVar12 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar15 = uVar12 - 1;" (assignment_expression "iVar15 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (if_statement "if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" { (expression_statement "puVar4 = (undefined4 *)param_1[3];" (assignment_expression "puVar4 = (undefined4 *)param_1[3]" identifier = (cast_expression "(undefined4 *)param_1[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" { (do_statement "do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);" do (compound_statement "{\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        }" { (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "puVar16 = puVar5 + 1;" (assignment_expression "puVar16 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "*puVar5 = uVar29;" (assignment_expression "*puVar5 = uVar29" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" identifier = (binary_expression "iVar15 + -1" identifier + number_literal)) ;) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar5 = puVar16;" (assignment_expression "puVar5 = puVar16" identifier = identifier) ;) }) while (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar12 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar12 - 1)" identifier = (binary_expression "puVar4 + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )))) ;) })) (expression_statement "*puVar4 = uVar29;" (assignment_expression "*puVar4 = uVar29" (pointer_expression "*puVar4" * identifier) = identifier) ;) })) (expression_statement "uVar20 = uVar20 ^ uVar21;" (assignment_expression "uVar20 = uVar20 ^ uVar21" identifier = (binary_expression "uVar20 ^ uVar21" identifier ^ identifier)) ;) (expression_statement "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (parenthesized_expression "(param_3[2] + puVar11[2])" ( (binary_expression "param_3[2] + puVar11[2]" (subscript_expression "param_3[2]" identifier [ number_literal ]) + (subscript_expression "puVar11[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))))) ;) (if_statement "if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }" if (parenthesized_expression "((int)uVar20 < 0)" ( (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar12 = -uVar12;\n    }" { (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" identifier = (unary_expression "-uVar12" - identifier)) ;) })) (expression_statement "param_1[1] = uVar12;" (assignment_expression "param_1[1] = uVar12" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9 = piStack_68;" (assignment_expression "piVar9 = piStack_68" identifier = identifier) ;) (if_statement "if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" if (parenthesized_expression "(piStack_68 != (int *)0x0)" ( (binary_expression "piStack_68 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" { (expression_statement "(**(code **)(apuStack_80[0] + -0x7a28))();" (call_expression "(**(code **)(apuStack_80[0] + -0x7a28))()" (parenthesized_expression "(**(code **)(apuStack_80[0] + -0x7a28))" ( (pointer_expression "**(code **)(apuStack_80[0] + -0x7a28)" * (pointer_expression "*(code **)(apuStack_80[0] + -0x7a28)" * (cast_expression "(code **)(apuStack_80[0] + -0x7a28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7a28)" ( (binary_expression "apuStack_80[0] + -0x7a28" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_64 == *piVar24) {\n    return;\n  }" if (parenthesized_expression "(iStack_64 == *piVar24)" ( (binary_expression "iStack_64 == *piVar24" identifier == (pointer_expression "*piVar24" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apuStack_80[0] + -0x7b70)" * (cast_expression "(code **)(apuStack_80[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apuStack_80[0] + -0x7b70)" ( (binary_expression "apuStack_80[0] + -0x7b70" (subscript_expression "apuStack_80[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar29 = 0x1cd94;" (assignment_expression "uVar29 = 0x1cd94" identifier = number_literal) ;) (expression_statement "(*pcVar26)();" (call_expression "(*pcVar26)()" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;" (assignment_expression "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0" (pointer_expression "*(code **)(puVar28 + -0x28)" * (cast_expression "(code **)(puVar28 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x28)" ( (binary_expression "puVar28 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar26 + 0x882a0" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar28 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar28 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar28 + -0x14)" * (cast_expression "(uint **)(puVar28 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0x14)" ( (binary_expression "puVar28 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar28 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar28 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar28 + -4)" * (cast_expression "(undefined4 *)(puVar28 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -4)" ( (binary_expression "puVar28 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar28 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar28 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar28 + -8)" * (cast_expression "(undefined4 **)(puVar28 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -8)" ( (binary_expression "puVar28 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar28 + -0xc) = puVar11;" (assignment_expression "*(undefined4 **)(puVar28 + -0xc) = puVar11" (pointer_expression "*(undefined4 **)(puVar28 + -0xc)" * (cast_expression "(undefined4 **)(puVar28 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar28 + -0xc)" ( (binary_expression "puVar28 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar28 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar28 + -0x10)" * (cast_expression "(uint *)(puVar28 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x10)" ( (binary_expression "puVar28 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar28 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar28 + -0x18)" * (cast_expression "(uint *)(puVar28 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x18)" ( (binary_expression "puVar28 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar28 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar28 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar28 + -0x1c)" * (cast_expression "(uint *)(puVar28 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + -0x1c)" ( (binary_expression "puVar28 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar17 = puVar16[1];" (assignment_expression "iVar17 = puVar16[1]" identifier = (subscript_expression "puVar16[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar12 == 0) || (iVar17 == 0))" ( (binary_expression "(uVar12 == 0) || (iVar17 == 0)" (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" { (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }" { (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" identifier = (subscript_expression "puVar16[3]" identifier [ number_literal ])) ;) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" identifier = (cast_expression "(uint *)piVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = -iVar17 - iVar19;" (assignment_expression "iVar6 = -iVar17 - iVar19" identifier = (binary_expression "-iVar17 - iVar19" (unary_expression "-iVar17" - identifier) - identifier)) ;) (expression_statement "iVar15 = -iVar17;" (assignment_expression "iVar15 = -iVar17" identifier = (unary_expression "-iVar17" - identifier)) ;) (if_statement "if (iVar6 < 1) goto LAB_0001cf64;" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cf64;" goto statement_identifier ;)) (labeled_statement "LAB_0001ce08:\n    iVar10 = iVar6 + -1;" statement_identifier : (expression_statement "iVar10 = iVar6 + -1;" (assignment_expression "iVar10 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;)) (expression_statement "iVar6 = iVar8 + iVar6 * 4;" (assignment_expression "iVar6 = iVar8 + iVar6 * 4" identifier = (binary_expression "iVar8 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal))) ;) (expression_statement "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" identifier = (binary_expression "(ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(iVar8 + iVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar10 * 4)" ( (binary_expression "iVar8 + iVar10 * 4" identifier + (binary_expression "iVar10 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar15 = iVar6;" (assignment_expression "iVar15 = iVar6" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" { (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) ;) (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == -1) break;" if (parenthesized_expression "(iVar10 == -1)" ( (binary_expression "iVar10 == -1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar13 = (uint *)(iVar15 + -8);" (assignment_expression "puVar13 = (uint *)(iVar15 + -8)" identifier = (cast_expression "(uint *)(iVar15 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -8)" ( (binary_expression "iVar15 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar15 = iVar15 + -4;" (assignment_expression "iVar15 = iVar15 + -4" identifier = (binary_expression "iVar15 + -4" identifier + number_literal)) ;) (expression_statement "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;" (assignment_expression "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13" identifier = (binary_expression "(ulonglong)uVar12 * (ulonglong)*puVar13" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * identifier)) ;) (expression_statement "lVar1 = lVar1 + (uVar2 >> 0x20);" (assignment_expression "lVar1 = lVar1 + (uVar2 >> 0x20)" identifier = (binary_expression "lVar1 + (uVar2 >> 0x20)" identifier + (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" if (parenthesized_expression "((int)lVar1 != -1)" ( (binary_expression "(int)lVar1 != -1" (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" { (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" identifier = (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "lVar1 = CONCAT44(uVar18,(int)uVar2);" (assignment_expression "lVar1 = CONCAT44(uVar18,(int)uVar2)" identifier = (call_expression "CONCAT44(uVar18,(int)uVar2)" identifier (argument_list "(uVar18,(int)uVar2)" ( identifier , (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) })) (expression_statement "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19)" identifier = (call_expression "(*pcVar27)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(puVar22,iVar6,iVar19)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar20 = *puVar22;" (assignment_expression "uVar20 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "*puVar22 = uVar18 + uVar20;" (assignment_expression "*puVar22 = uVar18 + uVar20" (pointer_expression "*puVar22" * identifier) = (binary_expression "uVar18 + uVar20" identifier + identifier)) ;) (if_statement "if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" if (parenthesized_expression "(uVar18 + uVar20 < uVar18)" ( (binary_expression "uVar18 + uVar20 < uVar18" (binary_expression "uVar18 + uVar20" identifier + identifier) < identifier) )) (compound_statement "{\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" { (if_statement "if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" if (parenthesized_expression "(iVar19 < 2)" ( (binary_expression "iVar19 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" { (labeled_statement "LAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);" statement_identifier : (expression_statement "uVar18 = (uint)(uVar7 + 1 != 0);" (assignment_expression "uVar18 = (uint)(uVar7 + 1 != 0)" identifier = (call_expression "(uint)(uVar7 + 1 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 + 1 != 0)" ( (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" identifier + number_literal) != number_literal) )))) ;)) (expression_statement "iVar15 = iVar19 + uVar18;" (assignment_expression "iVar15 = iVar19 + uVar18" identifier = (binary_expression "iVar19 + uVar18" identifier + identifier)) ;) (expression_statement "puVar22[iVar19] = uVar7 + 1;" (assignment_expression "puVar22[iVar19] = uVar7 + 1" (subscript_expression "puVar22[iVar19]" identifier [ identifier ]) = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar9[2] = puVar16[2] + uVar18;" (assignment_expression "piVar9[2] = puVar16[2] + uVar18" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "puVar16[2] + uVar18" (subscript_expression "puVar16[2]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto joined_r0x0001cf98;" goto statement_identifier ;) })) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar22[1] = uVar18 + 1;" (assignment_expression "puVar22[1] = uVar18 + 1" (subscript_expression "puVar22[1]" identifier [ number_literal ]) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" if (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" { (if_statement "if (iVar19 == 2) goto LAB_0001cef0;" if (parenthesized_expression "(iVar19 == 2)" ( (binary_expression "iVar19 == 2" identifier == number_literal) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar18 = puVar22[2];" (assignment_expression "uVar18 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "puVar22[2] = uVar18 + 1;" (assignment_expression "puVar22[2] = uVar18 + 1" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" if (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" { (expression_statement "iVar15 = 3;" (assignment_expression "iVar15 = 3" identifier = number_literal) ;) (expression_statement "puVar13 = puVar22 + 3;" (assignment_expression "puVar13 = puVar22 + 3" identifier = (binary_expression "puVar22 + 3" identifier + number_literal)) ;) (do_statement "do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);" do (compound_statement "{\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          }" { (if_statement "if (iVar19 == iVar15) goto LAB_0001cef0;" if (parenthesized_expression "(iVar19 == iVar15)" ( (binary_expression "iVar19 == iVar15" identifier == identifier) )) (goto_statement "goto LAB_0001cef0;" goto statement_identifier ;)) (expression_statement "uVar18 = *puVar13;" (assignment_expression "uVar18 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar13 = uVar18 + 1;" (assignment_expression "*puVar13 = uVar18 + 1" (pointer_expression "*puVar13" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 + 1 == 0)" ( (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" identifier + number_literal) == number_literal) )) ;) })) })) })) }) (else_clause "else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" else (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" { (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" identifier = (subscript_expression "puVar16[3]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar17 - iVar19;" (assignment_expression "iVar6 = iVar17 - iVar19" identifier = (binary_expression "iVar17 - iVar19" identifier - identifier)) ;) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" identifier = (cast_expression "(uint *)piVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" identifier = identifier) ;) (if_statement "if (0 < iVar6) goto LAB_0001ce08;" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_0001ce08;" goto statement_identifier ;)) (labeled_statement "LAB_0001cf64:\n    iVar19 = iVar15;" statement_identifier : (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" identifier = identifier) ;)) (expression_statement "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" identifier = (call_expression "(**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar26 + 0x80304))" ( (pointer_expression "**(code **)(pcVar26 + 0x80304)" * (pointer_expression "*(code **)(pcVar26 + 0x80304)" * (cast_expression "(code **)(pcVar26 + 0x80304)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x80304)" ( (binary_expression "pcVar26 + 0x80304" identifier + number_literal) ))))) )) (argument_list "(puVar22,iVar8,iVar19)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar15 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar15 = iVar19 + (uint)(uVar7 != 0)" identifier = (binary_expression "iVar19 + (uint)(uVar7 != 0)" identifier + (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) ))))) ;) (expression_statement "puVar22[iVar19] = uVar7;" (assignment_expression "puVar22[iVar19] = uVar7" (subscript_expression "puVar22[iVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar9[2]" identifier [ number_literal ]) = (binary_expression "puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar16[2]" identifier [ number_literal ]) + (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) ))))) ;) (labeled_statement "joined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" statement_identifier : (if_statement "if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" if (parenthesized_expression "(iVar17 < 0)" ( (binary_expression "iVar17 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar15 = -iVar15;\n  }" { (expression_statement "iVar15 = -iVar15;" (assignment_expression "iVar15 = -iVar15" identifier = (unary_expression "-iVar15" - identifier)) ;) }))) (expression_statement "piVar9[1] = iVar15;" (assignment_expression "piVar9[1] = iVar15" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression IDENT == 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 *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (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 (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (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 = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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 = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( ))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + 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 * (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + LIT) != LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void __gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)\n\n{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" (primitive_type "void") (function_declarator "__gmpf_ui_sub(uint *param_1,int param_2,undefined4 *param_3)" (identifier "__gmpf_ui_sub") (parameter_list "(uint *param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  longlong lVar1;\n  ulonglong uVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  undefined4 *puVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  uint *puVar13;\n  undefined4 *puVar14;\n  int iVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  uint uVar18;\n  int iVar19;\n  uint uVar20;\n  uint uVar21;\n  uint *puVar22;\n  uint uVar23;\n  int *piVar24;\n  undefined *puVar25;\n  code *pcVar26;\n  code *pcVar27;\n  undefined1 *puVar28;\n  undefined4 uVar29;\n  undefined1 auStack_98 [24];\n  undefined *apuStack_80 [2];\n  int iStack_78;\n  uint uStack_74;\n  undefined4 *puStack_70;\n  undefined4 *puStack_6c;\n  int *piStack_68;\n  int iStack_64;\n  undefined *puStack_60;\n  int local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  int *local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_0009d540;\n  local_c = *(int *)PTR___stack_chk_guard_0009d540;\n  puVar11 = param_3;\n  if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  puVar25 = PTR___stack_chk_fail_0009d4d0;\n  (*(code *)PTR___stack_chk_fail_0009d4d0)();\n  apuStack_80[0] = puVar25 + 0x88530;\n  puVar28 = auStack_98;\n  piVar24 = *(int **)(puVar25 + 0x80a30);\n  uVar20 = param_3[1];\n  puStack_60 = puVar3;\n  iStack_64 = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar11[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar12 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }\n  puVar16 = (undefined4 *)param_3[3];\n  puVar14 = (undefined4 *)puVar11[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }\n  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }\n  if (iStack_64 == *piVar24) {\n    return;\n  }\n  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);\n  uVar29 = 0x1cd94;\n  (*pcVar26)();\n  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;\n  *(uint **)(puVar28 + -0x14) = param_1;\n  *(undefined4 *)(puVar28 + -4) = uVar29;\n  *(undefined4 **)(puVar28 + -8) = param_3;\n  *(undefined4 **)(puVar28 + -0xc) = puVar11;\n  *(uint *)(puVar28 + -0x10) = uVar21;\n  *(uint *)(puVar28 + -0x18) = uVar20;\n  *(uint *)(puVar28 + -0x1c) = uVar18;\n  iVar17 = puVar16[1];\n  if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }\n  if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }\n  iVar15 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);\njoined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }\n  piVar9[1] = iVar15;\n  return;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "uint uVar20;" (type_identifier "uint") (identifier "uVar20") (; ";")) (declaration "uint uVar21;" (type_identifier "uint") (identifier "uVar21") (; ";")) (declaration "uint *puVar22;" (type_identifier "uint") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "int *piVar24;" (primitive_type "int") (pointer_declarator "*piVar24" (* "*") (identifier "piVar24")) (; ";")) (declaration "undefined *puVar25;" (type_identifier "undefined") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "code *pcVar26;" (type_identifier "code") (pointer_declarator "*pcVar26" (* "*") (identifier "pcVar26")) (; ";")) (declaration "code *pcVar27;" (type_identifier "code") (pointer_declarator "*pcVar27" (* "*") (identifier "pcVar27")) (; ";")) (declaration "undefined1 *puVar28;" (type_identifier "undefined1") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "undefined4 uVar29;" (type_identifier "undefined4") (identifier "uVar29") (; ";")) (declaration "undefined1 auStack_98 [24];" (type_identifier "undefined1") (array_declarator "auStack_98 [24]" (identifier "auStack_98") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "undefined *apuStack_80 [2];" (type_identifier "undefined") (pointer_declarator "*apuStack_80 [2]" (* "*") (array_declarator "apuStack_80 [2]" (identifier "apuStack_80") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "int iStack_78;" (primitive_type "int") (identifier "iStack_78") (; ";")) (declaration "uint uStack_74;" (type_identifier "uint") (identifier "uStack_74") (; ";")) (declaration "undefined4 *puStack_70;" (type_identifier "undefined4") (pointer_declarator "*puStack_70" (* "*") (identifier "puStack_70")) (; ";")) (declaration "undefined4 *puStack_6c;" (type_identifier "undefined4") (pointer_declarator "*puStack_6c" (* "*") (identifier "puStack_6c")) (; ";")) (declaration "int *piStack_68;" (primitive_type "int") (pointer_declarator "*piStack_68" (* "*") (identifier "piStack_68")) (; ";")) (declaration "int iStack_64;" (primitive_type "int") (identifier "iStack_64") (; ";")) (declaration "undefined *puStack_60;" (type_identifier "undefined") (pointer_declarator "*puStack_60" (* "*") (identifier "puStack_60")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_1c;" (type_identifier "undefined4") (identifier "uStack_1c") (; ";")) (declaration "undefined4 local_18;" (type_identifier "undefined4") (identifier "local_18") (; ";")) (declaration "undefined4 local_14;" (type_identifier "undefined4") (identifier "local_14") (; ";")) (declaration "int *local_10;" (primitive_type "int") (pointer_declarator "*local_10" (* "*") (identifier "local_10")) (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_0009d540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_0009d540" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_0009d540")) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_0009d540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_0009d540" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0009d540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0009d540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0009d540")))) (; ";")) (expression_statement "puVar11 = param_3;" (assignment_expression "puVar11 = param_3" (identifier "puVar11") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_2 == 0) {\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }\n  else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR___gmpf_neg_0009d2e0)();\n  }" ({ "{") (expression_statement "(*(code *)PTR___gmpf_neg_0009d2e0)();" (call_expression "(*(code *)PTR___gmpf_neg_0009d2e0)()" (parenthesized_expression "(*(code *)PTR___gmpf_neg_0009d2e0)" (( "(") (pointer_expression "*(code *)PTR___gmpf_neg_0009d2e0" (* "*") (cast_expression "(code *)PTR___gmpf_neg_0009d2e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_neg_0009d2e0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" (else "else") (compound_statement "{\n    local_10 = &local_20;\n    param_3 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_2;\n    (*(code *)PTR___gmpf_sub_0009d25c)();\n  }" ({ "{") (expression_statement "local_10 = &local_20;" (assignment_expression "local_10 = &local_20" (identifier "local_10") (= "=") (pointer_expression "&local_20" (& "&") (identifier "local_20"))) (; ";")) (expression_statement "param_3 = &uStack_1c;" (assignment_expression "param_3 = &uStack_1c" (identifier "param_3") (= "=") (pointer_expression "&uStack_1c" (& "&") (identifier "uStack_1c"))) (; ";")) (expression_statement "local_18 = 1;" (assignment_expression "local_18 = 1" (identifier "local_18") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_14 = 1;" (assignment_expression "local_14 = 1" (identifier "local_14") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_20 = param_2;" (assignment_expression "local_20 = param_2" (identifier "local_20") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(*(code *)PTR___gmpf_sub_0009d25c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009d25c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009d25c)" (( "(") (pointer_expression "*(code *)PTR___gmpf_sub_0009d25c" (* "*") (cast_expression "(code *)PTR___gmpf_sub_0009d25c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_sub_0009d25c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_c == *(int *)puVar3) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_c == *(int *)puVar3)" (( "(") (binary_expression "local_c == *(int *)puVar3" (identifier "local_c") (== "==") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar25 = PTR___stack_chk_fail_0009d4d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_0009d4d0" (identifier "puVar25") (= "=") (identifier "PTR___stack_chk_fail_0009d4d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0009d4d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0009d4d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0009d4d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0009d4d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0009d4d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "apuStack_80[0] = puVar25 + 0x88530;" (assignment_expression "apuStack_80[0] = puVar25 + 0x88530" (subscript_expression "apuStack_80[0]" (identifier "apuStack_80") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "puVar25 + 0x88530" (identifier "puVar25") (+ "+") (number_literal "0x88530"))) (; ";")) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" (identifier "puVar28") (= "=") (identifier "auStack_98")) (; ";")) (expression_statement "piVar24 = *(int **)(puVar25 + 0x80a30);" (assignment_expression "piVar24 = *(int **)(puVar25 + 0x80a30)" (identifier "piVar24") (= "=") (pointer_expression "*(int **)(puVar25 + 0x80a30)" (* "*") (cast_expression "(int **)(puVar25 + 0x80a30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x80a30)" (( "(") (binary_expression "puVar25 + 0x80a30" (identifier "puVar25") (+ "+") (number_literal "0x80a30")) () ")"))))) (; ";")) (expression_statement "uVar20 = param_3[1];" (assignment_expression "uVar20 = param_3[1]" (identifier "uVar20") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puStack_60 = puVar3;" (assignment_expression "puStack_60 = puVar3" (identifier "puStack_60") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "iStack_64 = *piVar24;" (assignment_expression "iStack_64 = *piVar24" (identifier "iStack_64") (= "=") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) (; ";")) (expression_statement "uVar18 = *param_1;" (assignment_expression "uVar18 = *param_1" (identifier "uVar18") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar21 = puVar11[1];" (assignment_expression "uVar21 = puVar11[1]" (identifier "uVar21") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = -uVar20;" (assignment_expression "uVar7 = -uVar20" (identifier "uVar7") (= "=") (unary_expression "-uVar20" (- "-") (identifier "uVar20"))) (; ";")) (if_statement "if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }" (if "if") (parenthesized_expression "(-1 < (int)uVar20)" (( "(") (binary_expression "-1 < (int)uVar20" (number_literal "-1") (< "<") (cast_expression "(int)uVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar20"))) () ")")) (compound_statement "{\n    uVar7 = uVar20;\n  }" ({ "{") (expression_statement "uVar7 = uVar20;" (assignment_expression "uVar7 = uVar20" (identifier "uVar7") (= "=") (identifier "uVar20")) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar21;" (assignment_expression "uVar12 = uVar21" (identifier "uVar12") (= "=") (identifier "uVar21")) (; ";")) (if_statement "if ((int)uVar21 < 0) {\n    uVar12 = -uVar21;\n  }" (if "if") (parenthesized_expression "((int)uVar21 < 0)" (( "(") (binary_expression "(int)uVar21 < 0" (cast_expression "(int)uVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar21")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar12 = -uVar21;\n  }" ({ "{") (expression_statement "uVar12 = -uVar21;" (assignment_expression "uVar12 = -uVar21" (identifier "uVar12") (= "=") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) (; ";")) (} "}"))) (expression_statement "puVar16 = (undefined4 *)param_3[3];" (assignment_expression "puVar16 = (undefined4 *)param_3[3]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)param_3[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "puVar14 = (undefined4 *)puVar11[3];" (assignment_expression "puVar14 = (undefined4 *)puVar11[3]" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)puVar11[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar23 = uVar7;" (assignment_expression "uVar23 = uVar7" (identifier "uVar23") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" (if "if") (parenthesized_expression "((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0)" (( "(") (binary_expression "(int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0" (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar18 < (int)uVar7)" (( "(") (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar16 = puVar16 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" ({ "{") (expression_statement "puVar16 = puVar16 + (uVar7 - uVar18);" (assignment_expression "puVar16 = puVar16 + (uVar7 - uVar18)" (identifier "puVar16") (= "=") (binary_expression "puVar16 + (uVar7 - uVar18)" (identifier "puVar16") (+ "+") (parenthesized_expression "(uVar7 - uVar18)" (( "(") (binary_expression "uVar7 - uVar18" (identifier "uVar7") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "uVar23 = uVar18;" (assignment_expression "uVar23 = uVar18" (identifier "uVar23") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (if_statement "if ((int)uVar18 < (int)uVar12) {\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" (if "if") (parenthesized_expression "((int)uVar18 < (int)uVar12)" (( "(") (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\n    puVar14 = puVar14 + (uVar12 - uVar18);\n    uVar12 = uVar18;\n  }" ({ "{") (expression_statement "puVar14 = puVar14 + (uVar12 - uVar18);" (assignment_expression "puVar14 = puVar14 + (uVar12 - uVar18)" (identifier "puVar14") (= "=") (binary_expression "puVar14 + (uVar12 - uVar18)" (identifier "puVar14") (+ "+") (parenthesized_expression "(uVar12 - uVar18)" (( "(") (binary_expression "uVar12 - uVar18" (identifier "uVar12") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (if_statement "if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }\n  else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" (if "if") (parenthesized_expression "((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0))" (( "(") (binary_expression "(uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)" (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar17 = uVar23 + uVar12, uVar12 == 0)" (( "(") (comma_expression "iVar17 = uVar23 + uVar12, uVar12 == 0" (assignment_expression "iVar17 = uVar23 + uVar12" (identifier "iVar17") (= "=") (binary_expression "uVar23 + uVar12" (identifier "uVar23") (+ "+") (identifier "uVar12"))) (, ",") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar16 = param_3;\n    puVar28 = auStack_98;\n  }" ({ "{") (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7)" (identifier "piVar9") (= "=") (cast_expression "(int *)(uint)((int)uVar18 < (int)uVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)((int)uVar18 < (int)uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar18 < (int)uVar7)" (( "(") (binary_expression "(int)uVar18 < (int)uVar7" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")"))))) (; ";")) (expression_statement "puVar16 = param_3;" (assignment_expression "puVar16 = param_3" (identifier "puVar16") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar28 = auStack_98;" (assignment_expression "puVar28 = auStack_98" (identifier "puVar28") (= "=") (identifier "auStack_98")) (; ";")) (} "}")) (else_clause "else {\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" (else "else") (compound_statement "{\n    piStack_68 = (int *)0x0;\n    if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }\n    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);\n    puStack_6c = puVar5;\n    if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }\n    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);\n    uVar18 = uVar18 + 1;\n    puVar14 = puStack_6c;\n    if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }\n    iVar15 = uVar12 - 1;\n    if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);\n    if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }\n    param_1[1] = uVar12;\n    piVar9 = piStack_68;\n    if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }\n  }" ({ "{") (expression_statement "piStack_68 = (int *)0x0;" (assignment_expression "piStack_68 = (int *)0x0" (identifier "piStack_68") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((uint)(iVar17 * 4) < 0x7f01) {\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }\n    else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" (if "if") (parenthesized_expression "((uint)(iVar17 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar17 * 4) < 0x7f01" (call_expression "(uint)(iVar17 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar17 * 4)" (( "(") (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);\n      puVar28 = auStack_98 + iVar15;\n      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);\n      puStack_70 = (undefined4 *)iVar17;\n    }" ({ "{") (expression_statement "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8)" (identifier "iVar15") (= "=") (unary_expression "-(iVar17 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar17 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar17 * 4 + 7U & 0xfffffff8" (binary_expression "iVar17 * 4 + 7U" (binary_expression "iVar17 * 4" (identifier "iVar17") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar28 = auStack_98 + iVar15;" (assignment_expression "puVar28 = auStack_98 + iVar15" (identifier "puVar28") (= "=") (binary_expression "auStack_98 + iVar15" (identifier "auStack_98") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);" (assignment_expression "puVar5 = (undefined4 *)((int)apuStack_80 + iVar15)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)((int)apuStack_80 + iVar15)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)apuStack_80 + iVar15)" (( "(") (binary_expression "(int)apuStack_80 + iVar15" (cast_expression "(int)apuStack_80" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "apuStack_80")) (+ "+") (identifier "iVar15")) () ")")))) (; ";")) (expression_statement "puStack_70 = (undefined4 *)iVar17;" (assignment_expression "puStack_70 = (undefined4 *)iVar17" (identifier "puStack_70") (= "=") (cast_expression "(undefined4 *)iVar17" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar17"))) (; ";")) (} "}")) (else_clause "else {\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" (else "else") (compound_statement "{\n      iStack_78 = iVar17;\n      uStack_74 = uVar12;\n      puStack_70 = puVar14;\n      puStack_6c = puVar16;\n      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);\n      uVar12 = uStack_74;\n      puVar14 = puStack_70;\n      puVar16 = puStack_6c;\n      puStack_70 = (undefined4 *)iStack_78;\n    }" ({ "{") (expression_statement "iStack_78 = iVar17;" (assignment_expression "iStack_78 = iVar17" (identifier "iStack_78") (= "=") (identifier "iVar17")) (; ";")) (expression_statement "uStack_74 = uVar12;" (assignment_expression "uStack_74 = uVar12" (identifier "uStack_74") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "puStack_70 = puVar14;" (assignment_expression "puStack_70 = puVar14" (identifier "puStack_70") (= "=") (identifier "puVar14")) (; ";")) (expression_statement "puStack_6c = puVar16;" (assignment_expression "puStack_6c = puVar16" (identifier "puStack_6c") (= "=") (identifier "puVar16")) (; ";")) (expression_statement "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar25 + 0x807e0))(&piStack_68)" (parenthesized_expression "(**(code **)(puVar25 + 0x807e0))" (( "(") (pointer_expression "**(code **)(puVar25 + 0x807e0)" (* "*") (pointer_expression "*(code **)(puVar25 + 0x807e0)" (* "*") (cast_expression "(code **)(puVar25 + 0x807e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x807e0)" (( "(") (binary_expression "puVar25 + 0x807e0" (identifier "puVar25") (+ "+") (number_literal "0x807e0")) () ")"))))) () ")")) (argument_list "(&piStack_68)" (( "(") (pointer_expression "&piStack_68" (& "&") (identifier "piStack_68")) () ")"))))) (; ";")) (expression_statement "uVar12 = uStack_74;" (assignment_expression "uVar12 = uStack_74" (identifier "uVar12") (= "=") (identifier "uStack_74")) (; ";")) (expression_statement "puVar14 = puStack_70;" (assignment_expression "puVar14 = puStack_70" (identifier "puVar14") (= "=") (identifier "puStack_70")) (; ";")) (expression_statement "puVar16 = puStack_6c;" (assignment_expression "puVar16 = puStack_6c" (identifier "puVar16") (= "=") (identifier "puStack_6c")) (; ";")) (expression_statement "puStack_70 = (undefined4 *)iStack_78;" (assignment_expression "puStack_70 = (undefined4 *)iStack_78" (identifier "puStack_70") (= "=") (cast_expression "(undefined4 *)iStack_78" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iStack_78"))) (; ";")) (} "}")))) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c)" (identifier "pcVar26") (= "=") (pointer_expression "*(code **)(apuStack_80[0] + -0x7d8c)" (* "*") (cast_expression "(code **)(apuStack_80[0] + -0x7d8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_80[0] + -0x7d8c)" (( "(") (binary_expression "apuStack_80[0] + -0x7d8c" (subscript_expression "apuStack_80[0]" (identifier "apuStack_80") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7d8c")) () ")"))))) (; ";")) (expression_statement "puStack_6c = puVar5;" (assignment_expression "puStack_6c = puVar5" (identifier "puStack_6c") (= "=") (identifier "puVar5")) (; ";")) (if_statement "if ((int)uVar23 < (int)uVar12) {\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }\n    else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" (if "if") (parenthesized_expression "((int)uVar23 < (int)uVar12)" (( "(") (binary_expression "(int)uVar23 < (int)uVar12" (cast_expression "(int)uVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar23")) (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar23;\n      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);\n      puVar16 = puVar14;\n    }" ({ "{") (expression_statement "*(uint *)(puVar28 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar28 + 0x10)" (* "*") (cast_expression "(uint *)(puVar28 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x10)" (( "(") (binary_expression "puVar28 + 0x10" (identifier "puVar28") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16)" (identifier "iVar17") (= "=") (call_expression "(*pcVar26)(puVar5,puVar14,uVar12,puVar16)" (parenthesized_expression "(*pcVar26)" (( "(") (pointer_expression "*pcVar26" (* "*") (identifier "pcVar26")) () ")")) (argument_list "(puVar5,puVar14,uVar12,puVar16)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar14") (, ",") (identifier "uVar12") (, ",") (identifier "puVar16") () ")")))) (; ";")) (expression_statement "puVar16 = puVar14;" (assignment_expression "puVar16 = puVar14" (identifier "puVar16") (= "=") (identifier "puVar14")) (; ";")) (} "}")) (else_clause "else {\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" (else "else") (compound_statement "{\n      *(uint *)(puVar28 + 0x10) = uVar12;\n      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);\n    }" ({ "{") (expression_statement "*(uint *)(puVar28 + 0x10) = uVar12;" (assignment_expression "*(uint *)(puVar28 + 0x10) = uVar12" (pointer_expression "*(uint *)(puVar28 + 0x10)" (* "*") (cast_expression "(uint *)(puVar28 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x10)" (( "(") (binary_expression "puVar28 + 0x10" (identifier "puVar28") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);" (assignment_expression "iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14)" (identifier "iVar17") (= "=") (call_expression "(*pcVar26)(puVar5,puVar16,uVar23,puVar14)" (parenthesized_expression "(*pcVar26)" (( "(") (pointer_expression "*pcVar26" (* "*") (identifier "pcVar26")) () ")")) (argument_list "(puVar5,puVar16,uVar23,puVar14)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar16") (, ",") (identifier "uVar23") (, ",") (identifier "puVar14") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);" (assignment_expression "uVar12 = (int)puStack_70 - (uint)(iVar17 == 0)" (identifier "uVar12") (= "=") (binary_expression "(int)puStack_70 - (uint)(iVar17 == 0)" (cast_expression "(int)puStack_70" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_70")) (- "-") (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar14 = puStack_6c;" (assignment_expression "puVar14 = puStack_6c" (identifier "puVar14") (= "=") (identifier "puStack_6c")) (; ";")) (if_statement "if ((int)uVar18 < (int)uVar12) {\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" (if "if") (parenthesized_expression "((int)uVar18 < (int)uVar12)" (( "(") (binary_expression "(int)uVar18 < (int)uVar12" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\n      puVar14 = puStack_6c + (uVar12 - uVar18);\n      uVar12 = uVar18;\n    }" ({ "{") (expression_statement "puVar14 = puStack_6c + (uVar12 - uVar18);" (assignment_expression "puVar14 = puStack_6c + (uVar12 - uVar18)" (identifier "puVar14") (= "=") (binary_expression "puStack_6c + (uVar12 - uVar18)" (identifier "puStack_6c") (+ "+") (parenthesized_expression "(uVar12 - uVar18)" (( "(") (binary_expression "uVar12 - uVar18" (identifier "uVar12") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "uVar12 = uVar18;" (assignment_expression "uVar12 = uVar18" (identifier "uVar12") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "iVar15 = uVar12 - 1;" (assignment_expression "iVar15 = uVar12 - 1" (identifier "iVar15") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar12 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar14;\n      puVar5 = puVar4;\n      if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }\n      *puVar4 = uVar29;\n    }" ({ "{") (expression_statement "puVar4 = (undefined4 *)param_1[3];" (assignment_expression "puVar4 = (undefined4 *)param_1[3]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)param_1[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" (identifier "uVar29") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar15 != 0) {\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" (if "if") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);\n        puVar4 = puVar4 + (uVar12 - 1);\n      }" ({ "{") (do_statement "do {\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        } while (iVar15 != 0);" (do "do") (compound_statement "{\n          puVar14 = puVar14 + 1;\n          puVar16 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar15 = iVar15 + -1;\n          uVar29 = *puVar14;\n          puVar5 = puVar16;\n        }" ({ "{") (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar5 + 1;" (assignment_expression "puVar16 = puVar5 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar5 = uVar29;" (assignment_expression "*puVar5 = uVar29" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "iVar15 = iVar15 + -1;" (assignment_expression "iVar15 = iVar15 + -1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + -1" (identifier "iVar15") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar29 = *puVar14;" (assignment_expression "uVar29 = *puVar14" (identifier "uVar29") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar5 = puVar16;" (assignment_expression "puVar5 = puVar16" (identifier "puVar5") (= "=") (identifier "puVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar15 != 0)" (( "(") (binary_expression "iVar15 != 0" (identifier "iVar15") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar4 = puVar4 + (uVar12 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar12 - 1)" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uVar12 - 1)" (identifier "puVar4") (+ "+") (parenthesized_expression "(uVar12 - 1)" (( "(") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar4 = uVar29;" (assignment_expression "*puVar4 = uVar29" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar29")) (; ";")) (} "}"))) (expression_statement "uVar20 = uVar20 ^ uVar21;" (assignment_expression "uVar20 = uVar20 ^ uVar21" (identifier "uVar20") (= "=") (binary_expression "uVar20 ^ uVar21" (identifier "uVar20") (^ "^") (identifier "uVar21"))) (; ";")) (expression_statement "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(param_3[2] + puVar11[2]) - (uint)(iVar17 == 0)" (parenthesized_expression "(param_3[2] + puVar11[2])" (( "(") (binary_expression "param_3[2] + puVar11[2]" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (+ "+") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))) () ")")) (- "-") (call_expression "(uint)(iVar17 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")"))))) (; ";")) (if_statement "if ((int)uVar20 < 0) {\n      uVar12 = -uVar12;\n    }" (if "if") (parenthesized_expression "((int)uVar20 < 0)" (( "(") (binary_expression "(int)uVar20 < 0" (cast_expression "(int)uVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar20")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      uVar12 = -uVar12;\n    }" ({ "{") (expression_statement "uVar12 = -uVar12;" (assignment_expression "uVar12 = -uVar12" (identifier "uVar12") (= "=") (unary_expression "-uVar12" (- "-") (identifier "uVar12"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = uVar12;" (assignment_expression "param_1[1] = uVar12" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "piVar9 = piStack_68;" (assignment_expression "piVar9 = piStack_68" (identifier "piVar9") (= "=") (identifier "piStack_68")) (; ";")) (if_statement "if (piStack_68 != (int *)0x0) {\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" (if "if") (parenthesized_expression "(piStack_68 != (int *)0x0)" (( "(") (binary_expression "piStack_68 != (int *)0x0" (identifier "piStack_68") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (**(code **)(apuStack_80[0] + -0x7a28))();\n    }" ({ "{") (expression_statement "(**(code **)(apuStack_80[0] + -0x7a28))();" (call_expression "(**(code **)(apuStack_80[0] + -0x7a28))()" (parenthesized_expression "(**(code **)(apuStack_80[0] + -0x7a28))" (( "(") (pointer_expression "**(code **)(apuStack_80[0] + -0x7a28)" (* "*") (pointer_expression "*(code **)(apuStack_80[0] + -0x7a28)" (* "*") (cast_expression "(code **)(apuStack_80[0] + -0x7a28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_80[0] + -0x7a28)" (( "(") (binary_expression "apuStack_80[0] + -0x7a28" (subscript_expression "apuStack_80[0]" (identifier "apuStack_80") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7a28")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (iStack_64 == *piVar24) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_64 == *piVar24)" (( "(") (binary_expression "iStack_64 == *piVar24" (identifier "iStack_64") (== "==") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);" (assignment_expression "pcVar26 = *(code **)(apuStack_80[0] + -0x7b70)" (identifier "pcVar26") (= "=") (pointer_expression "*(code **)(apuStack_80[0] + -0x7b70)" (* "*") (cast_expression "(code **)(apuStack_80[0] + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apuStack_80[0] + -0x7b70)" (( "(") (binary_expression "apuStack_80[0] + -0x7b70" (subscript_expression "apuStack_80[0]" (identifier "apuStack_80") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar29 = 0x1cd94;" (assignment_expression "uVar29 = 0x1cd94" (identifier "uVar29") (= "=") (number_literal "0x1cd94")) (; ";")) (expression_statement "(*pcVar26)();" (call_expression "(*pcVar26)()" (parenthesized_expression "(*pcVar26)" (( "(") (pointer_expression "*pcVar26" (* "*") (identifier "pcVar26")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;" (assignment_expression "*(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0" (pointer_expression "*(code **)(puVar28 + -0x28)" (* "*") (cast_expression "(code **)(puVar28 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + -0x28)" (( "(") (binary_expression "puVar28 + -0x28" (identifier "puVar28") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (binary_expression "pcVar26 + 0x882a0" (identifier "pcVar26") (+ "+") (number_literal "0x882a0"))) (; ";")) (expression_statement "*(uint **)(puVar28 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar28 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar28 + -0x14)" (* "*") (cast_expression "(uint **)(puVar28 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + -0x14)" (( "(") (binary_expression "puVar28 + -0x14" (identifier "puVar28") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar28 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar28 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar28 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar28 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -4)" (( "(") (binary_expression "puVar28 + -4" (identifier "puVar28") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "*(undefined4 **)(puVar28 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar28 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar28 + -8)" (* "*") (cast_expression "(undefined4 **)(puVar28 + -8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + -8)" (( "(") (binary_expression "puVar28 + -8" (identifier "puVar28") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 **)(puVar28 + -0xc) = puVar11;" (assignment_expression "*(undefined4 **)(puVar28 + -0xc) = puVar11" (pointer_expression "*(undefined4 **)(puVar28 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar28 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar28 + -0xc)" (( "(") (binary_expression "puVar28 + -0xc" (identifier "puVar28") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar11")) (; ";")) (expression_statement "*(uint *)(puVar28 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar28 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar28 + -0x10)" (* "*") (cast_expression "(uint *)(puVar28 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x10)" (( "(") (binary_expression "puVar28 + -0x10" (identifier "puVar28") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "*(uint *)(puVar28 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar28 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar28 + -0x18)" (* "*") (cast_expression "(uint *)(puVar28 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x18)" (( "(") (binary_expression "puVar28 + -0x18" (identifier "puVar28") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "*(uint *)(puVar28 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar28 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar28 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar28 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + -0x1c)" (( "(") (binary_expression "puVar28 + -0x1c" (identifier "puVar28") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "iVar17 = puVar16[1];" (assignment_expression "iVar17 = puVar16[1]" (identifier "iVar17") (= "=") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((uVar12 == 0) || (iVar17 == 0)) {\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" (if "if") (parenthesized_expression "((uVar12 == 0) || (iVar17 == 0))" (( "(") (binary_expression "(uVar12 == 0) || (iVar17 == 0)" (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    piVar9[1] = 0;\n    piVar9[2] = 0;\n    return;\n  }" ({ "{") (expression_statement "piVar9[1] = 0;" (assignment_expression "piVar9[1] = 0" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar9[2] = 0;" (assignment_expression "piVar9[2] = 0" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar17 < 0) {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" (if "if") (parenthesized_expression "(iVar17 < 0)" (( "(") (binary_expression "iVar17 < 0" (identifier "iVar17") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    puVar22 = (uint *)piVar9[3];\n    iVar6 = -iVar17 - iVar19;\n    iVar15 = -iVar17;\n    if (iVar6 < 1) goto LAB_0001cf64;\nLAB_0001ce08:\n    iVar10 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);\n    iVar15 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" (identifier "iVar19") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" (identifier "iVar8") (= "=") (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" (identifier "puVar22") (= "=") (cast_expression "(uint *)piVar9[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar6 = -iVar17 - iVar19;" (assignment_expression "iVar6 = -iVar17 - iVar19" (identifier "iVar6") (= "=") (binary_expression "-iVar17 - iVar19" (unary_expression "-iVar17" (- "-") (identifier "iVar17")) (- "-") (identifier "iVar19"))) (; ";")) (expression_statement "iVar15 = -iVar17;" (assignment_expression "iVar15 = -iVar17" (identifier "iVar15") (= "=") (unary_expression "-iVar17" (- "-") (identifier "iVar17"))) (; ";")) (if_statement "if (iVar6 < 1) goto LAB_0001cf64;" (if "if") (parenthesized_expression "(iVar6 < 1)" (( "(") (binary_expression "iVar6 < 1" (identifier "iVar6") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0001cf64;" (goto "goto") (statement_identifier "LAB_0001cf64") (; ";"))) (labeled_statement "LAB_0001ce08:\n    iVar10 = iVar6 + -1;" (statement_identifier "LAB_0001ce08") (: ":") (expression_statement "iVar10 = iVar6 + -1;" (assignment_expression "iVar10 = iVar6 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "iVar6 = iVar8 + iVar6 * 4;" (assignment_expression "iVar6 = iVar8 + iVar6 * 4" (identifier "iVar6") (= "=") (binary_expression "iVar8 + iVar6 * 4" (identifier "iVar8") (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4")))) (; ";")) (expression_statement "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4)" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")) (* "*") (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")"))) (* "*") (cast_expression "(uint *)(iVar8 + iVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + iVar10 * 4)" (( "(") (binary_expression "iVar8 + iVar10 * 4" (identifier "iVar8") (+ "+") (binary_expression "iVar10 * 4" (identifier "iVar10") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar15 = iVar6;" (assignment_expression "iVar15 = iVar6" (identifier "iVar15") (= "=") (identifier "iVar6")) (; ";")) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar10 = iVar10 + -1;\n      pcVar27 = *(code **)(pcVar26 + 0x80304);\n      if (iVar10 == -1) break;\n      puVar13 = (uint *)(iVar15 + -8);\n      iVar15 = iVar15 + -4;\n      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" ({ "{") (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" (identifier "uVar18") (= "=") (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar10 = iVar10 + -1;" (assignment_expression "iVar10 = iVar10 + -1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" (identifier "pcVar27") (= "=") (pointer_expression "*(code **)(pcVar26 + 0x80304)" (* "*") (cast_expression "(code **)(pcVar26 + 0x80304)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar26 + 0x80304)" (( "(") (binary_expression "pcVar26 + 0x80304" (identifier "pcVar26") (+ "+") (number_literal "0x80304")) () ")"))))) (; ";")) (if_statement "if (iVar10 == -1) break;" (if "if") (parenthesized_expression "(iVar10 == -1)" (( "(") (binary_expression "iVar10 == -1" (identifier "iVar10") (== "==") (number_literal "-1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar13 = (uint *)(iVar15 + -8);" (assignment_expression "puVar13 = (uint *)(iVar15 + -8)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(iVar15 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -8)" (( "(") (binary_expression "iVar15 + -8" (identifier "iVar15") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar15 = iVar15 + -4;" (assignment_expression "iVar15 = iVar15 + -4" (identifier "iVar15") (= "=") (binary_expression "iVar15 + -4" (identifier "iVar15") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;" (assignment_expression "uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)uVar12 * (ulonglong)*puVar13" (binary_expression "(ulonglong)uVar12 * (ulonglong)" (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")) (* "*") (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")"))) (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "lVar1 = lVar1 + (uVar2 >> 0x20);" (assignment_expression "lVar1 = lVar1 + (uVar2 >> 0x20)" (identifier "lVar1") (= "=") (binary_expression "lVar1 + (uVar2 >> 0x20)" (identifier "lVar1") (+ "+") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar18 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar18 = (uint)((ulonglong)lVar1 >> 0x20)" (identifier "uVar18") (= "=") (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((int)lVar1 != -1) {\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" (if "if") (parenthesized_expression "((int)lVar1 != -1)" (( "(") (binary_expression "(int)lVar1 != -1" (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        pcVar27 = *(code **)(pcVar26 + 0x80304);\n        break;\n      }" ({ "{") (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x80304);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x80304)" (identifier "pcVar27") (= "=") (pointer_expression "*(code **)(pcVar26 + 0x80304)" (* "*") (cast_expression "(code **)(pcVar26 + 0x80304)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar26 + 0x80304)" (( "(") (binary_expression "pcVar26 + 0x80304" (identifier "pcVar26") (+ "+") (number_literal "0x80304")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "lVar1 = CONCAT44(uVar18,(int)uVar2);" (assignment_expression "lVar1 = CONCAT44(uVar18,(int)uVar2)" (identifier "lVar1") (= "=") (call_expression "CONCAT44(uVar18,(int)uVar2)" (identifier "CONCAT44") (argument_list "(uVar18,(int)uVar2)" (( "(") (identifier "uVar18") (, ",") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar27)(puVar22,iVar6,iVar19)" (identifier "uVar7") (= "=") (call_expression "(*pcVar27)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar27)" (( "(") (pointer_expression "*pcVar27" (* "*") (identifier "pcVar27")) () ")")) (argument_list "(puVar22,iVar6,iVar19)" (( "(") (identifier "puVar22") (, ",") (identifier "iVar6") (, ",") (identifier "iVar19") () ")")))) (; ";")) (expression_statement "uVar20 = *puVar22;" (assignment_expression "uVar20 = *puVar22" (identifier "uVar20") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "*puVar22 = uVar18 + uVar20;" (assignment_expression "*puVar22 = uVar18 + uVar20" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (binary_expression "uVar18 + uVar20" (identifier "uVar18") (+ "+") (identifier "uVar20"))) (; ";")) (if_statement "if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar18 + uVar20 < uVar18)" (( "(") (binary_expression "uVar18 + uVar20 < uVar18" (binary_expression "uVar18 + uVar20" (identifier "uVar18") (+ "+") (identifier "uVar20")) (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n      if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }\n    }" ({ "{") (if_statement "if (iVar19 < 2) {\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" (if "if") (parenthesized_expression "(iVar19 < 2)" (( "(") (binary_expression "iVar19 < 2" (identifier "iVar19") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar15 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar9[2] = puVar16[2] + uVar18;\n        goto joined_r0x0001cf98;\n      }" ({ "{") (labeled_statement "LAB_0001cef0:\n        uVar18 = (uint)(uVar7 + 1 != 0);" (statement_identifier "LAB_0001cef0") (: ":") (expression_statement "uVar18 = (uint)(uVar7 + 1 != 0);" (assignment_expression "uVar18 = (uint)(uVar7 + 1 != 0)" (identifier "uVar18") (= "=") (call_expression "(uint)(uVar7 + 1 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 + 1 != 0)" (( "(") (binary_expression "uVar7 + 1 != 0" (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")))) (; ";"))) (expression_statement "iVar15 = iVar19 + uVar18;" (assignment_expression "iVar15 = iVar19 + uVar18" (identifier "iVar15") (= "=") (binary_expression "iVar19 + uVar18" (identifier "iVar19") (+ "+") (identifier "uVar18"))) (; ";")) (expression_statement "puVar22[iVar19] = uVar7 + 1;" (assignment_expression "puVar22[iVar19] = uVar7 + 1" (subscript_expression "puVar22[iVar19]" (identifier "puVar22") ([ "[") (identifier "iVar19") (] "]")) (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9[2] = puVar16[2] + uVar18;" (assignment_expression "piVar9[2] = puVar16[2] + uVar18" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar16[2] + uVar18" (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "uVar18"))) (; ";")) (goto_statement "goto joined_r0x0001cf98;" (goto "goto") (statement_identifier "joined_r0x0001cf98") (; ";")) (} "}"))) (expression_statement "uVar18 = puVar22[1];" (assignment_expression "uVar18 = puVar22[1]" (identifier "uVar18") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar22[1] = uVar18 + 1;" (assignment_expression "puVar22[1] = uVar18 + 1" (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar18 + 1 == 0) {\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" (if "if") (parenthesized_expression "(uVar18 + 1 == 0)" (( "(") (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar19 == 2) goto LAB_0001cef0;\n        uVar18 = puVar22[2];\n        puVar22[2] = uVar18 + 1;\n        if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }\n      }" ({ "{") (if_statement "if (iVar19 == 2) goto LAB_0001cef0;" (if "if") (parenthesized_expression "(iVar19 == 2)" (( "(") (binary_expression "iVar19 == 2" (identifier "iVar19") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0001cef0;" (goto "goto") (statement_identifier "LAB_0001cef0") (; ";"))) (expression_statement "uVar18 = puVar22[2];" (assignment_expression "uVar18 = puVar22[2]" (identifier "uVar18") (= "=") (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar22[2] = uVar18 + 1;" (assignment_expression "puVar22[2] = uVar18 + 1" (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar18 + 1 == 0) {\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" (if "if") (parenthesized_expression "(uVar18 + 1 == 0)" (( "(") (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar15 = 3;\n          puVar13 = puVar22 + 3;\n          do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);\n        }" ({ "{") (expression_statement "iVar15 = 3;" (assignment_expression "iVar15 = 3" (identifier "iVar15") (= "=") (number_literal "3")) (; ";")) (expression_statement "puVar13 = puVar22 + 3;" (assignment_expression "puVar13 = puVar22 + 3" (identifier "puVar13") (= "=") (binary_expression "puVar22 + 3" (identifier "puVar22") (+ "+") (number_literal "3"))) (; ";")) (do_statement "do {\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          } while (uVar18 + 1 == 0);" (do "do") (compound_statement "{\n            if (iVar19 == iVar15) goto LAB_0001cef0;\n            uVar18 = *puVar13;\n            iVar15 = iVar15 + 1;\n            *puVar13 = uVar18 + 1;\n            puVar13 = puVar13 + 1;\n          }" ({ "{") (if_statement "if (iVar19 == iVar15) goto LAB_0001cef0;" (if "if") (parenthesized_expression "(iVar19 == iVar15)" (( "(") (binary_expression "iVar19 == iVar15" (identifier "iVar19") (== "==") (identifier "iVar15")) () ")")) (goto_statement "goto LAB_0001cef0;" (goto "goto") (statement_identifier "LAB_0001cef0") (; ";"))) (expression_statement "uVar18 = *puVar13;" (assignment_expression "uVar18 = *puVar13" (identifier "uVar18") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar13 = uVar18 + 1;" (assignment_expression "*puVar13 = uVar18 + 1" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 + 1 == 0)" (( "(") (binary_expression "uVar18 + 1 == 0" (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" (else "else") (compound_statement "{\n    iVar19 = *piVar9;\n    iVar8 = puVar16[3];\n    iVar6 = iVar17 - iVar19;\n    puVar22 = (uint *)piVar9[3];\n    iVar15 = iVar17;\n    if (0 < iVar6) goto LAB_0001ce08;\nLAB_0001cf64:\n    iVar19 = iVar15;\n    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);\n  }" ({ "{") (expression_statement "iVar19 = *piVar9;" (assignment_expression "iVar19 = *piVar9" (identifier "iVar19") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "iVar8 = puVar16[3];" (assignment_expression "iVar8 = puVar16[3]" (identifier "iVar8") (= "=") (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar6 = iVar17 - iVar19;" (assignment_expression "iVar6 = iVar17 - iVar19" (identifier "iVar6") (= "=") (binary_expression "iVar17 - iVar19" (identifier "iVar17") (- "-") (identifier "iVar19"))) (; ";")) (expression_statement "puVar22 = (uint *)piVar9[3];" (assignment_expression "puVar22 = (uint *)piVar9[3]" (identifier "puVar22") (= "=") (cast_expression "(uint *)piVar9[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar15 = iVar17;" (assignment_expression "iVar15 = iVar17" (identifier "iVar15") (= "=") (identifier "iVar17")) (; ";")) (if_statement "if (0 < iVar6) goto LAB_0001ce08;" (if "if") (parenthesized_expression "(0 < iVar6)" (( "(") (binary_expression "0 < iVar6" (number_literal "0") (< "<") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_0001ce08;" (goto "goto") (statement_identifier "LAB_0001ce08") (; ";"))) (labeled_statement "LAB_0001cf64:\n    iVar19 = iVar15;" (statement_identifier "LAB_0001cf64") (: ":") (expression_statement "iVar19 = iVar15;" (assignment_expression "iVar19 = iVar15" (identifier "iVar19") (= "=") (identifier "iVar15")) (; ";"))) (expression_statement "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar26 + 0x80304))" (( "(") (pointer_expression "**(code **)(pcVar26 + 0x80304)" (* "*") (pointer_expression "*(code **)(pcVar26 + 0x80304)" (* "*") (cast_expression "(code **)(pcVar26 + 0x80304)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar26 + 0x80304)" (( "(") (binary_expression "pcVar26 + 0x80304" (identifier "pcVar26") (+ "+") (number_literal "0x80304")) () ")"))))) () ")")) (argument_list "(puVar22,iVar8,iVar19)" (( "(") (identifier "puVar22") (, ",") (identifier "iVar8") (, ",") (identifier "iVar19") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar15 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar15 = iVar19 + (uint)(uVar7 != 0)" (identifier "iVar15") (= "=") (binary_expression "iVar19 + (uint)(uVar7 != 0)" (identifier "iVar19") (+ "+") (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "puVar22[iVar19] = uVar7;" (assignment_expression "puVar22[iVar19] = uVar7" (subscript_expression "puVar22[iVar19]" (identifier "puVar22") ([ "[") (identifier "iVar19") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar9[2] = puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar16[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar16[2]" (identifier "puVar16") ([ "[") (number_literal "2") (] "]")) (+ "+") (call_expression "(uint)(uVar7 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")"))))) (; ";")) (labeled_statement "joined_r0x0001cf98:\n  if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" (statement_identifier "joined_r0x0001cf98") (: ":") (if_statement "if (iVar17 < 0) {\n    iVar15 = -iVar15;\n  }" (if "if") (parenthesized_expression "(iVar17 < 0)" (( "(") (binary_expression "iVar17 < 0" (identifier "iVar17") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar15 = -iVar15;\n  }" ({ "{") (expression_statement "iVar15 = -iVar15;" (assignment_expression "iVar15 = -iVar15" (identifier "iVar15") (= "=") (unary_expression "-iVar15" (- "-") (identifier "iVar15"))) (; ";")) (} "}")))) (expression_statement "piVar9[1] = iVar15;" (assignment_expression "piVar9[1] = iVar15" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar15")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 r,type_2 var_1,type_3 v)

{
  type_4 var_21;
  type_5 *puVar2;
  int var_2;
  type_6 *var_11;
  type_7 var_4;
  type_6 *var_12;
  int var_9;
  type_3 p_Var8;
  type_7 var_6;
  type_7 *var_22;
  type_6 var_25;
  type_3 p_Var12;
  type_6 *var_20;
  type_3 p_Var14;
  type_7 var_5;
  type_6 var_19;
  type_7 var_13;
  type_6 var_18;
  type_7 var_14;
  type_7 *var_24;
  type_7 var_7;
  int *piVar22;
  type_5 *var_3;
  type_8 *var_17;
  type_8 *pcVar25;
  type_9 *var_10;
  type_10 uVar27;
  type_9 var_8 [24];
  type_5 *apuStack_80 [2];
  int iStack_78;
  type_7 uStack_74;
  type_3 p_Stack_70;
  type_3 p_Stack_6c;
  type_6 *var_15;
  int var_16;
  type_5 *puStack_60;
  type_6 ul;
  type_11 uu;
  
  puVar2 = PTR___stack_chk_guard_0009d540;
  var_2 = *(int *)PTR___stack_chk_guard_0009d540;
  p_Var8 = v;
  if (var_1 == 0) {
    (*(type_8 *)PTR___gmpf_neg_0009d2e0)();
  }
  else {
    uu._mp_d = &ul;
    p_Var14 = &uu;
    uu._mp_size = 1;
    uu._mp_exp = 1;
    ul = var_1;
    (*(type_8 *)PTR___gmpf_sub_0009d25c)();
    v = p_Var14;
  }
  if (var_2 == *(int *)puVar2) {
    return;
  }
  var_3 = PTR___stack_chk_fail_0009d4d0;
  (*(type_8 *)PTR___stack_chk_fail_0009d4d0)();
  apuStack_80[0] = var_3 + 0x88530;
  var_10 = var_8;
  piVar22 = *(int **)(var_3 + 0x80a30);
  var_13 = v->_mp_size;
  puStack_60 = puVar2;
  var_16 = *piVar22;
  var_5 = r->_mp_prec;
  var_14 = p_Var8->_mp_size;
  var_4 = -var_13;
  if (-1 < (int)var_13) {
    var_4 = var_13;
  }
  var_6 = var_14;
  if ((int)var_14 < 0) {
    var_6 = -var_14;
  }
  p_Var14 = (type_3)v->_mp_d;
  p_Var12 = (type_3)p_Var8->_mp_d;
  var_7 = var_4;
  if ((type_6 *)(type_7)((int)var_5 < (int)var_4) != (type_6 *)0x0) {
    p_Var14 = (type_3)((int)p_Var14 + (var_4 - var_5) * 4);
    var_7 = var_5;
  }
  if ((int)var_5 < (int)var_6) {
    p_Var12 = (type_3)((int)p_Var12 + (var_6 - var_5) * 4);
    var_6 = var_5;
  }
  if ((var_7 == 0) || (var_2 = var_7 + var_6, var_6 == 0)) {
    r->_mp_size = 0;
    r->_mp_exp = 0;
    var_11 = (type_6 *)(type_7)((int)var_5 < (int)var_4);
    p_Var14 = v;
    var_10 = var_8;
  }
  else {
    var_15 = (type_6 *)0x0;
    if ((type_7)(var_2 * 4) < 0x7f01) {
      var_9 = -(var_2 * 4 + 7U & 0xfffffff8);
      var_10 = var_8 + var_9;
      var_11 = (type_6 *)((int)apuStack_80 + var_9);
      p_Stack_70 = (type_3)var_2;
    }
    else {
      iStack_78 = var_2;
      uStack_74 = var_6;
      p_Stack_70 = p_Var12;
      p_Stack_6c = p_Var14;
      var_11 = (type_6 *)(**(type_8 **)(var_3 + 0x807e0))(&var_15);
      var_6 = uStack_74;
      p_Var12 = p_Stack_70;
      p_Var14 = p_Stack_6c;
      p_Stack_70 = (type_3)iStack_78;
    }
    var_17 = *(type_8 **)(apuStack_80[0] + -0x7d8c);
    p_Stack_6c = (type_3)var_11;
    if ((int)var_7 < (int)var_6) {
      *(type_7 *)(var_10 + 0x10) = var_7;
      var_2 = (*var_17)(var_11,p_Var12,var_6,p_Var14);
      p_Var14 = p_Var12;
    }
    else {
      *(type_7 *)(var_10 + 0x10) = var_6;
      var_2 = (*var_17)(var_11,p_Var14,var_7,p_Var12);
    }
    var_6 = (int)p_Stack_70 - (type_7)(var_2 == 0);
    var_5 = var_5 + 1;
    p_Var12 = p_Stack_6c;
    if ((int)var_5 < (int)var_6) {
      p_Var12 = (type_3)((int)p_Stack_6c + (var_6 - var_5) * 4);
      var_6 = var_5;
    }
    var_9 = var_6 - 1;
    if (var_6 != 0) {
      var_12 = r->_mp_d;
      var_18 = *(type_6 *)p_Var12;
      var_11 = var_12;
      if (var_9 != 0) {
        do {
          p_Var12 = (type_3)((int)p_Var12 + 4);
          p_Var14 = (type_3)(var_11 + 1);
          *var_11 = var_18;
          var_9 = var_9 + -1;
          var_18 = *(type_6 *)p_Var12;
          var_11 = (type_6 *)p_Var14;
        } while (var_9 != 0);
        var_12 = var_12 + (var_6 - 1);
      }
      *var_12 = var_18;
    }
    var_13 = var_13 ^ var_14;
    r->_mp_exp = (v->_mp_exp + p_Var8->_mp_exp) - (type_7)(var_2 == 0);
    if ((int)var_13 < 0) {
      var_6 = -var_6;
    }
    r->_mp_size = var_6;
    var_11 = var_15;
    if (var_15 != (type_6 *)0x0) {
      (**(type_8 **)(apuStack_80[0] + -0x7a28))();
    }
  }
  if (var_16 == *piVar22) {
    return;
  }
  var_17 = *(type_8 **)(apuStack_80[0] + -0x7b70);
  uVar27 = 0x1cd94;
  (*var_17)();
  *(type_8 **)(var_10 + -0x28) = var_17 + 0x882a0;
  *(type_1 *)(var_10 + -0x14) = r;
  *(type_10 *)(var_10 + -4) = uVar27;
  *(type_3 *)(var_10 + -8) = v;
  *(type_3 *)(var_10 + -0xc) = p_Var8;
  *(type_7 *)(var_10 + -0x10) = var_14;
  *(type_7 *)(var_10 + -0x18) = var_13;
  *(type_7 *)(var_10 + -0x1c) = var_5;
  var_18 = p_Var14->_mp_size;
  if ((var_6 == 0) || (var_18 == 0)) {
    var_11[1] = 0;
    var_11[2] = 0;
    return;
  }
  if ((int)var_18 < 0) {
    var_19 = *var_11;
    var_12 = p_Var14->_mp_d;
    var_24 = (type_7 *)var_11[3];
    var_2 = -var_18 - var_19;
    var_25 = -var_18;
    if (var_2 < 1) goto LAB_0001cf64;
LAB_0001ce08:
    var_9 = var_2 + -1;
    var_21 = (type_12)var_6 * (type_12)var_12[var_9];
    var_20 = var_12 + var_2;
    while( true ) {
      var_5 = (type_7)((type_12)var_21 >> 0x20);
      var_9 = var_9 + -1;
      pcVar25 = *(type_8 **)(var_17 + 0x80304);
      if (var_9 == -1) break;
      var_22 = var_20 + -2;
      var_20 = var_20 + -1;
      var_21 = var_21 + ((type_12)var_6 * (type_12)*var_22 >> 0x20);
      var_5 = (type_7)((type_12)var_21 >> 0x20);
      if ((int)var_21 != -1) {
        pcVar25 = *(type_8 **)(var_17 + 0x80304);
        break;
      }
      var_21 = var_23(var_5,(int)((type_12)var_6 * (type_12)*var_22));
    }
    var_4 = (*pcVar25)(var_24,var_12 + var_2,var_19);
    var_13 = *var_24;
    *var_24 = var_5 + var_13;
    if (var_5 + var_13 < var_5) {
      if ((int)var_19 < 2) {
LAB_0001cef0:
        var_5 = (type_7)(var_4 + 1 != 0);
        var_25 = var_19 + var_5;
        var_24[var_19] = var_4 + 1;
        var_11[2] = p_Var14->_mp_exp + var_5;
        goto joined_r0x0001cf98;
      }
      var_5 = var_24[1];
      var_24[1] = var_5 + 1;
      if (var_5 + 1 == 0) {
        if (var_19 == 2) goto LAB_0001cef0;
        var_5 = var_24[2];
        var_24[2] = var_5 + 1;
        if (var_5 + 1 == 0) {
          var_25 = 3;
          var_22 = var_24 + 3;
          do {
            if (var_19 == var_25) goto LAB_0001cef0;
            var_5 = *var_22;
            var_25 = var_25 + 1;
            *var_22 = var_5 + 1;
            var_22 = var_22 + 1;
          } while (var_5 + 1 == 0);
        }
      }
    }
  }
  else {
    var_19 = *var_11;
    var_12 = p_Var14->_mp_d;
    var_2 = var_18 - var_19;
    var_24 = (type_7 *)var_11[3];
    var_25 = var_18;
    if (0 < var_2) goto LAB_0001ce08;
LAB_0001cf64:
    var_19 = var_25;
    var_4 = (**(type_8 **)(var_17 + 0x80304))(var_24,var_12,var_19);
  }
  var_25 = var_19 + (var_4 != 0);
  var_24[var_19] = var_4;
  var_11[2] = p_Var14->_mp_exp + (type_7)(var_4 != 0);
joined_r0x0001cf98:
  if ((int)var_18 < 0) {
    var_25 = -var_25;
  }
  var_11[1] = var_25;
  return;
}


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

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

{
  longlong lVar1;
  ulonglong uVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  undefined4 *puVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined4 *puVar11;
  uint uVar12;
  uint *puVar13;
  undefined4 *puVar14;
  int iVar15;
  undefined4 *puVar16;
  int iVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int *piVar24;
  undefined *puVar25;
  code *pcVar26;
  code *pcVar27;
  undefined1 *puVar28;
  undefined4 uVar29;
  undefined1 auStack_98 [24];
  undefined *apuStack_80 [2];
  int iStack_78;
  uint uStack_74;
  undefined4 *puStack_70;
  undefined4 *puStack_6c;
  int *piStack_68;
  int iStack_64;
  undefined *puStack_60;
  int local_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  int *local_10;
  int local_c;
  
  puVar3 = PTR___stack_chk_guard_0009d540;
  local_c = *(int *)PTR___stack_chk_guard_0009d540;
  puVar11 = param_3;
  if (param_2 == 0) {
    (*(code *)PTR___gmpf_neg_0009d2e0)();
  }
  else {
    local_10 = &local_20;
    param_3 = &uStack_1c;
    local_18 = 1;
    local_14 = 1;
    local_20 = param_2;
    (*(code *)PTR___gmpf_sub_0009d25c)();
  }
  if (local_c == *(int *)puVar3) {
    return;
  }
  puVar25 = PTR___stack_chk_fail_0009d4d0;
  (*(code *)PTR___stack_chk_fail_0009d4d0)();
  apuStack_80[0] = puVar25 + 0x88530;
  puVar28 = auStack_98;
  piVar24 = *(int **)(puVar25 + 0x80a30);
  uVar20 = param_3[1];
  puStack_60 = puVar3;
  iStack_64 = *piVar24;
  uVar18 = *param_1;
  uVar21 = puVar11[1];
  uVar7 = -uVar20;
  if (-1 < (int)uVar20) {
    uVar7 = uVar20;
  }
  uVar12 = uVar21;
  if ((int)uVar21 < 0) {
    uVar12 = -uVar21;
  }
  puVar16 = (undefined4 *)param_3[3];
  puVar14 = (undefined4 *)puVar11[3];
  uVar23 = uVar7;
  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {
    puVar16 = puVar16 + (uVar7 - uVar18);
    uVar23 = uVar18;
  }
  if ((int)uVar18 < (int)uVar12) {
    puVar14 = puVar14 + (uVar12 - uVar18);
    uVar12 = uVar18;
  }
  if ((uVar23 == 0) || (iVar17 = uVar23 + uVar12, uVar12 == 0)) {
    param_1[1] = 0;
    param_1[2] = 0;
    piVar9 = (int *)(uint)((int)uVar18 < (int)uVar7);
    puVar16 = param_3;
    puVar28 = auStack_98;
  }
  else {
    piStack_68 = (int *)0x0;
    if ((uint)(iVar17 * 4) < 0x7f01) {
      iVar15 = -(iVar17 * 4 + 7U & 0xfffffff8);
      puVar28 = auStack_98 + iVar15;
      puVar5 = (undefined4 *)((int)apuStack_80 + iVar15);
      puStack_70 = (undefined4 *)iVar17;
    }
    else {
      iStack_78 = iVar17;
      uStack_74 = uVar12;
      puStack_70 = puVar14;
      puStack_6c = puVar16;
      puVar5 = (undefined4 *)(**(code **)(puVar25 + 0x807e0))(&piStack_68);
      uVar12 = uStack_74;
      puVar14 = puStack_70;
      puVar16 = puStack_6c;
      puStack_70 = (undefined4 *)iStack_78;
    }
    pcVar26 = *(code **)(apuStack_80[0] + -0x7d8c);
    puStack_6c = puVar5;
    if ((int)uVar23 < (int)uVar12) {
      *(uint *)(puVar28 + 0x10) = uVar23;
      iVar17 = (*pcVar26)(puVar5,puVar14,uVar12,puVar16);
      puVar16 = puVar14;
    }
    else {
      *(uint *)(puVar28 + 0x10) = uVar12;
      iVar17 = (*pcVar26)(puVar5,puVar16,uVar23,puVar14);
    }
    uVar12 = (int)puStack_70 - (uint)(iVar17 == 0);
    uVar18 = uVar18 + 1;
    puVar14 = puStack_6c;
    if ((int)uVar18 < (int)uVar12) {
      puVar14 = puStack_6c + (uVar12 - uVar18);
      uVar12 = uVar18;
    }
    iVar15 = uVar12 - 1;
    if (uVar12 != 0) {
      puVar4 = (undefined4 *)param_1[3];
      uVar29 = *puVar14;
      puVar5 = puVar4;
      if (iVar15 != 0) {
        do {
          puVar14 = puVar14 + 1;
          puVar16 = puVar5 + 1;
          *puVar5 = uVar29;
          iVar15 = iVar15 + -1;
          uVar29 = *puVar14;
          puVar5 = puVar16;
        } while (iVar15 != 0);
        puVar4 = puVar4 + (uVar12 - 1);
      }
      *puVar4 = uVar29;
    }
    uVar20 = uVar20 ^ uVar21;
    param_1[2] = (param_3[2] + puVar11[2]) - (uint)(iVar17 == 0);
    if ((int)uVar20 < 0) {
      uVar12 = -uVar12;
    }
    param_1[1] = uVar12;
    piVar9 = piStack_68;
    if (piStack_68 != (int *)0x0) {
      (**(code **)(apuStack_80[0] + -0x7a28))();
    }
  }
  if (iStack_64 == *piVar24) {
    return;
  }
  pcVar26 = *(code **)(apuStack_80[0] + -0x7b70);
  uVar29 = 0x1cd94;
  (*pcVar26)();
  *(code **)(puVar28 + -0x28) = pcVar26 + 0x882a0;
  *(uint **)(puVar28 + -0x14) = param_1;
  *(undefined4 *)(puVar28 + -4) = uVar29;
  *(undefined4 **)(puVar28 + -8) = param_3;
  *(undefined4 **)(puVar28 + -0xc) = puVar11;
  *(uint *)(puVar28 + -0x10) = uVar21;
  *(uint *)(puVar28 + -0x18) = uVar20;
  *(uint *)(puVar28 + -0x1c) = uVar18;
  iVar17 = puVar16[1];
  if ((uVar12 == 0) || (iVar17 == 0)) {
    piVar9[1] = 0;
    piVar9[2] = 0;
    return;
  }
  if (iVar17 < 0) {
    iVar19 = *piVar9;
    iVar8 = puVar16[3];
    puVar22 = (uint *)piVar9[3];
    iVar6 = -iVar17 - iVar19;
    iVar15 = -iVar17;
    if (iVar6 < 1) goto LAB_0001cf64;
LAB_0001ce08:
    iVar10 = iVar6 + -1;
    iVar6 = iVar8 + iVar6 * 4;
    lVar1 = (ulonglong)uVar12 * (ulonglong)*(uint *)(iVar8 + iVar10 * 4);
    iVar15 = iVar6;
    while( true ) {
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar10 = iVar10 + -1;
      pcVar27 = *(code **)(pcVar26 + 0x80304);
      if (iVar10 == -1) break;
      puVar13 = (uint *)(iVar15 + -8);
      iVar15 = iVar15 + -4;
      uVar2 = (ulonglong)uVar12 * (ulonglong)*puVar13;
      lVar1 = lVar1 + (uVar2 >> 0x20);
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar27 = *(code **)(pcVar26 + 0x80304);
        break;
      }
      lVar1 = CONCAT44(uVar18,(int)uVar2);
    }
    uVar7 = (*pcVar27)(puVar22,iVar6,iVar19);
    uVar20 = *puVar22;
    *puVar22 = uVar18 + uVar20;
    if (uVar18 + uVar20 < uVar18) {
      if (iVar19 < 2) {
LAB_0001cef0:
        uVar18 = (uint)(uVar7 + 1 != 0);
        iVar15 = iVar19 + uVar18;
        puVar22[iVar19] = uVar7 + 1;
        piVar9[2] = puVar16[2] + uVar18;
        goto joined_r0x0001cf98;
      }
      uVar18 = puVar22[1];
      puVar22[1] = uVar18 + 1;
      if (uVar18 + 1 == 0) {
        if (iVar19 == 2) goto LAB_0001cef0;
        uVar18 = puVar22[2];
        puVar22[2] = uVar18 + 1;
        if (uVar18 + 1 == 0) {
          iVar15 = 3;
          puVar13 = puVar22 + 3;
          do {
            if (iVar19 == iVar15) goto LAB_0001cef0;
            uVar18 = *puVar13;
            iVar15 = iVar15 + 1;
            *puVar13 = uVar18 + 1;
            puVar13 = puVar13 + 1;
          } while (uVar18 + 1 == 0);
        }
      }
    }
  }
  else {
    iVar19 = *piVar9;
    iVar8 = puVar16[3];
    iVar6 = iVar17 - iVar19;
    puVar22 = (uint *)piVar9[3];
    iVar15 = iVar17;
    if (0 < iVar6) goto LAB_0001ce08;
LAB_0001cf64:
    iVar19 = iVar15;
    uVar7 = (**(code **)(pcVar26 + 0x80304))(puVar22,iVar8,iVar19);
  }
  iVar15 = iVar19 + (uint)(uVar7 != 0);
  puVar22[iVar19] = uVar7;
  piVar9[2] = puVar16[2] + (uint)(uVar7 != 0);
joined_r0x0001cf98:
  if (iVar17 < 0) {
    iVar15 = -iVar15;
  }
  piVar9[1] = iVar15;
  return;
}

