
void __gmpf_sub_ui(mpf_ptr sum,mpf_srcptr u,ulong v)

{
  longlong lVar1;
  undefined *puVar2;
  int iVar3;
  mp_limb_t *pmVar4;
  uint uVar5;
  mp_limb_t *pmVar6;
  int iVar7;
  __mpf_struct *p_Var8;
  uint uVar9;
  uint *puVar10;
  mp_limb_t mVar11;
  __mpf_struct *p_Var12;
  mp_limb_t *pmVar13;
  __mpf_struct *p_Var14;
  int *piVar15;
  uint uVar16;
  mp_limb_t mVar17;
  uint uVar18;
  mp_limb_t mVar19;
  uint uVar20;
  uint *puVar21;
  uint uVar22;
  int *piVar23;
  undefined *puVar24;
  code *pcVar25;
  undefined1 *puVar26;
  code *pcVar27;
  undefined4 uVar28;
  undefined1 auStack_d0 [24];
  code *apcStack_b8 [2];
  int iStack_b0;
  uint uStack_ac;
  __mpf_struct *p_Stack_a8;
  __mpf_struct *p_Stack_a4;
  mp_limb_t *pmStack_a0;
  int iStack_9c;
  int *piStack_98;
  mpf_srcptr p_Stack_58;
  __mpf_struct _Stack_54;
  int iStack_44;
  undefined *puStack_40;
  code *pcStack_3c;
  mp_limb_t vl;
  __mpf_struct vv;
  
  puVar2 = PTR___stack_chk_guard_00097540;
  iVar3 = *(int *)PTR___stack_chk_guard_00097540;
  if (v == 0) {
    (*(code *)PTR___gmpf_set_00097574)();
  }
  else {
    vv._mp_d = &vl;
    p_Var8 = &vv;
    vv._mp_size = 1;
    vv._mp_exp = 1;
    vl = v;
    (*(code *)PTR___gmpf_sub_0009725c)();
    v = (ulong)p_Var8;
  }
  if (iVar3 == *(int *)puVar2) {
    return;
  }
  pcVar27 = __gmpf_ui_sub;
  puVar24 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puStack_40 = puVar2;
  piVar15 = *(int **)(puVar24 + 0x7ac60);
  iStack_44 = *piVar15;
  p_Var8 = (__mpf_struct *)v;
  pcStack_3c = pcVar27;
  if (u == (mpf_srcptr)0x0) {
    (**(code **)(puVar24 + 0x7aa00))();
  }
  else {
    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;
    p_Var14 = &_Stack_54;
    _Stack_54._mp_size = 1;
    _Stack_54._mp_exp = 1;
    p_Stack_58 = u;
    (**(code **)(puVar24 + 0x7a97c))();
    v = (ulong)p_Var14;
  }
  if (iStack_44 == *piVar15) {
    return;
  }
  pcVar27 = *(code **)(puVar24 + 0x7abf0);
  (*pcVar27)();
  apcStack_b8[0] = pcVar27 + 0x826d0;
  puVar26 = auStack_d0;
  piVar23 = *(int **)(pcVar27 + 0x7abd0);
  uVar18 = ((__mpf_struct *)v)->_mp_size;
  iStack_9c = *piVar23;
  uVar16 = sum->_mp_prec;
  uVar20 = p_Var8->_mp_size;
  uVar5 = -uVar18;
  if (-1 < (int)uVar18) {
    uVar5 = uVar18;
  }
  uVar9 = uVar20;
  if ((int)uVar20 < 0) {
    uVar9 = -uVar20;
  }
  p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d;
  p_Var12 = (__mpf_struct *)p_Var8->_mp_d;
  uVar22 = uVar5;
  if ((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0) {
    p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);
    uVar22 = uVar16;
  }
  if ((int)uVar16 < (int)uVar9) {
    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);
    uVar9 = uVar16;
  }
  piStack_98 = piVar15;
  if ((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)) {
    sum->_mp_size = 0;
    sum->_mp_exp = 0;
    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);
    p_Var14 = (__mpf_struct *)v;
    puVar26 = auStack_d0;
  }
  else {
    pmStack_a0 = (mp_limb_t *)0x0;
    if ((uint)(iVar3 * 4) < 0x7f01) {
      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);
      puVar26 = auStack_d0 + iVar7;
      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);
      p_Stack_a8 = (__mpf_struct *)iVar3;
    }
    else {
      iStack_b0 = iVar3;
      uStack_ac = uVar9;
      p_Stack_a8 = p_Var12;
      p_Stack_a4 = p_Var14;
      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);
      uVar9 = uStack_ac;
      p_Var12 = p_Stack_a8;
      p_Var14 = p_Stack_a4;
      p_Stack_a8 = (__mpf_struct *)iStack_b0;
    }
    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);
    p_Stack_a4 = (__mpf_struct *)pmVar4;
    if ((int)uVar22 < (int)uVar9) {
      *(uint *)(puVar26 + 0x10) = uVar22;
      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);
      p_Var14 = p_Var12;
    }
    else {
      *(uint *)(puVar26 + 0x10) = uVar9;
      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);
    }
    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);
    uVar16 = uVar16 + 1;
    p_Var12 = p_Stack_a4;
    if ((int)uVar16 < (int)uVar9) {
      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);
      uVar9 = uVar16;
    }
    iVar7 = uVar9 - 1;
    if (uVar9 != 0) {
      pmVar6 = sum->_mp_d;
      mVar19 = *(mp_limb_t *)p_Var12;
      pmVar4 = pmVar6;
      if (iVar7 != 0) {
        do {
          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);
          p_Var14 = (__mpf_struct *)(pmVar4 + 1);
          *pmVar4 = mVar19;
          iVar7 = iVar7 + -1;
          mVar19 = *(mp_limb_t *)p_Var12;
          pmVar4 = (mp_limb_t *)p_Var14;
        } while (iVar7 != 0);
        pmVar6 = pmVar6 + (uVar9 - 1);
      }
      *pmVar6 = mVar19;
    }
    uVar18 = uVar18 ^ uVar20;
    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);
    if ((int)uVar18 < 0) {
      uVar9 = -uVar9;
    }
    sum->_mp_size = uVar9;
    pmVar4 = pmStack_a0;
    if (pmStack_a0 != (mp_limb_t *)0x0) {
      (**(code **)(apcStack_b8[0] + -0x7a2c))();
    }
  }
  if (iStack_9c == *piVar23) {
    return;
  }
  pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70);
  uVar28 = 0x1cbf4;
  (*pcVar27)();
  *(code **)(puVar26 + -0x28) = pcVar27 + 0x82440;
  *(mpf_ptr *)(puVar26 + -0x14) = sum;
  *(undefined4 *)(puVar26 + -4) = uVar28;
  *(ulong *)(puVar26 + -8) = v;
  *(__mpf_struct **)(puVar26 + -0xc) = p_Var8;
  *(uint *)(puVar26 + -0x10) = uVar20;
  *(uint *)(puVar26 + -0x18) = uVar18;
  *(uint *)(puVar26 + -0x1c) = uVar16;
  mVar19 = p_Var14->_mp_size;
  if ((uVar9 == 0) || (mVar19 == 0)) {
    pmVar4[1] = 0;
    pmVar4[2] = 0;
    return;
  }
  if ((int)mVar19 < 0) {
    mVar17 = *pmVar4;
    pmVar6 = p_Var14->_mp_d;
    puVar21 = (uint *)pmVar4[3];
    iVar3 = -mVar19 - mVar17;
    mVar11 = -mVar19;
    if (iVar3 < 1) goto LAB_0001cda8;
LAB_0001cc68:
    iVar7 = iVar3 + -1;
    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];
    pmVar13 = pmVar6 + iVar3;
    while( true ) {
      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar7 = iVar7 + -1;
      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);
      if (iVar7 == -1) break;
      puVar10 = pmVar13 + -2;
      pmVar13 = pmVar13 + -1;
      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);
      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);
        break;
      }
      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));
    }
    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);
    uVar18 = *puVar21;
    *puVar21 = uVar16 + uVar18;
    if (uVar16 + uVar18 < uVar16) {
      if ((int)mVar17 < 2) {
LAB_0001cd34:
        uVar16 = (uint)(uVar5 + 1 != 0);
        mVar11 = mVar17 + uVar16;
        puVar21[mVar17] = uVar5 + 1;
        pmVar4[2] = p_Var14->_mp_exp + uVar16;
        goto joined_r0x0001cddc;
      }
      uVar16 = puVar21[1];
      puVar21[1] = uVar16 + 1;
      if (uVar16 + 1 == 0) {
        mVar11 = 2;
        puVar10 = puVar21 + 2;
        do {
          if (mVar11 == mVar17) goto LAB_0001cd34;
          uVar16 = *puVar10;
          mVar11 = mVar11 + 1;
          *puVar10 = uVar16 + 1;
          puVar10 = puVar10 + 1;
        } while (uVar16 + 1 == 0);
      }
    }
  }
  else {
    mVar17 = *pmVar4;
    pmVar6 = p_Var14->_mp_d;
    iVar3 = mVar19 - mVar17;
    puVar21 = (uint *)pmVar4[3];
    mVar11 = mVar19;
    if (0 < iVar3) goto LAB_0001cc68;
LAB_0001cda8:
    mVar17 = mVar11;
    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);
  }
  mVar11 = mVar17 + (uVar5 != 0);
  puVar21[mVar17] = uVar5;
  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);
joined_r0x0001cddc:
  if ((int)mVar19 < 0) {
    mVar11 = -mVar11;
  }
  pmVar4[1] = mVar11;
  return;
}



void __gmpf_sub_ui(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 iVar9;
  undefined4 *puVar10;
  uint uVar11;
  uint *puVar12;
  undefined4 *puVar13;
  int iVar14;
  undefined4 *puVar15;
  int iVar16;
  int *piVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int *piVar24;
  undefined *puVar25;
  code *pcVar26;
  undefined1 *puVar27;
  code *pcVar28;
  undefined4 uVar29;
  undefined1 auStack_d0 [24];
  code *apcStack_b8 [2];
  int iStack_b0;
  uint uStack_ac;
  undefined4 *puStack_a8;
  undefined4 *puStack_a4;
  int *piStack_a0;
  int iStack_9c;
  int *piStack_98;
  int iStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  int *piStack_48;
  int iStack_44;
  undefined *puStack_40;
  code *pcStack_3c;
  undefined4 *local_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 **local_10;
  int local_c;
  
  puVar3 = PTR___stack_chk_guard_00097540;
  local_c = *(int *)PTR___stack_chk_guard_00097540;
  if (param_3 == (undefined4 *)0x0) {
    (*(code *)PTR___gmpf_set_00097574)();
  }
  else {
    local_10 = &local_20;
    puVar10 = &uStack_1c;
    local_18 = 1;
    local_14 = 1;
    local_20 = param_3;
    (*(code *)PTR___gmpf_sub_0009725c)();
    param_3 = puVar10;
  }
  if (local_c == *(int *)puVar3) {
    return;
  }
  pcVar28 = __gmpf_ui_sub;
  puVar25 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puStack_40 = puVar3;
  piVar17 = *(int **)(puVar25 + 0x7ac60);
  iStack_44 = *piVar17;
  puVar10 = param_3;
  pcStack_3c = pcVar28;
  if (param_2 == 0) {
    (**(code **)(puVar25 + 0x7aa00))();
  }
  else {
    piStack_48 = &iStack_58;
    param_3 = &uStack_54;
    uStack_50 = 1;
    uStack_4c = 1;
    iStack_58 = param_2;
    (**(code **)(puVar25 + 0x7a97c))();
  }
  if (iStack_44 == *piVar17) {
    return;
  }
  pcVar28 = *(code **)(puVar25 + 0x7abf0);
  (*pcVar28)();
  apcStack_b8[0] = pcVar28 + 0x826d0;
  puVar27 = auStack_d0;
  piVar24 = *(int **)(pcVar28 + 0x7abd0);
  uVar20 = param_3[1];
  iStack_9c = *piVar24;
  uVar18 = *param_1;
  uVar21 = puVar10[1];
  uVar7 = -uVar20;
  if (-1 < (int)uVar20) {
    uVar7 = uVar20;
  }
  uVar11 = uVar21;
  if ((int)uVar21 < 0) {
    uVar11 = -uVar21;
  }
  puVar15 = (undefined4 *)param_3[3];
  puVar13 = (undefined4 *)puVar10[3];
  uVar23 = uVar7;
  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {
    puVar15 = puVar15 + (uVar7 - uVar18);
    uVar23 = uVar18;
  }
  if ((int)uVar18 < (int)uVar11) {
    puVar13 = puVar13 + (uVar11 - uVar18);
    uVar11 = uVar18;
  }
  piStack_98 = piVar17;
  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {
    param_1[1] = 0;
    param_1[2] = 0;
    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);
    puVar15 = param_3;
    puVar27 = auStack_d0;
  }
  else {
    piStack_a0 = (int *)0x0;
    if ((uint)(iVar16 * 4) < 0x7f01) {
      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);
      puVar27 = auStack_d0 + iVar14;
      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);
      puStack_a8 = (undefined4 *)iVar16;
    }
    else {
      iStack_b0 = iVar16;
      uStack_ac = uVar11;
      puStack_a8 = puVar13;
      puStack_a4 = puVar15;
      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);
      uVar11 = uStack_ac;
      puVar13 = puStack_a8;
      puVar15 = puStack_a4;
      puStack_a8 = (undefined4 *)iStack_b0;
    }
    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);
    puStack_a4 = puVar5;
    if ((int)uVar23 < (int)uVar11) {
      *(uint *)(puVar27 + 0x10) = uVar23;
      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);
      puVar15 = puVar13;
    }
    else {
      *(uint *)(puVar27 + 0x10) = uVar11;
      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);
    }
    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);
    uVar18 = uVar18 + 1;
    puVar13 = puStack_a4;
    if ((int)uVar18 < (int)uVar11) {
      puVar13 = puStack_a4 + (uVar11 - uVar18);
      uVar11 = uVar18;
    }
    iVar14 = uVar11 - 1;
    if (uVar11 != 0) {
      puVar4 = (undefined4 *)param_1[3];
      uVar29 = *puVar13;
      puVar5 = puVar4;
      if (iVar14 != 0) {
        do {
          puVar13 = puVar13 + 1;
          puVar15 = puVar5 + 1;
          *puVar5 = uVar29;
          iVar14 = iVar14 + -1;
          uVar29 = *puVar13;
          puVar5 = puVar15;
        } while (iVar14 != 0);
        puVar4 = puVar4 + (uVar11 - 1);
      }
      *puVar4 = uVar29;
    }
    uVar20 = uVar20 ^ uVar21;
    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);
    if ((int)uVar20 < 0) {
      uVar11 = -uVar11;
    }
    param_1[1] = uVar11;
    piVar17 = piStack_a0;
    if (piStack_a0 != (int *)0x0) {
      (**(code **)(apcStack_b8[0] + -0x7a2c))();
    }
  }
  if (iStack_9c == *piVar24) {
    return;
  }
  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);
  uVar29 = 0x1cbf4;
  (*pcVar28)();
  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;
  *(uint **)(puVar27 + -0x14) = param_1;
  *(undefined4 *)(puVar27 + -4) = uVar29;
  *(undefined4 **)(puVar27 + -8) = param_3;
  *(undefined4 **)(puVar27 + -0xc) = puVar10;
  *(uint *)(puVar27 + -0x10) = uVar21;
  *(uint *)(puVar27 + -0x18) = uVar20;
  *(uint *)(puVar27 + -0x1c) = uVar18;
  iVar16 = puVar15[1];
  if ((uVar11 == 0) || (iVar16 == 0)) {
    piVar17[1] = 0;
    piVar17[2] = 0;
    return;
  }
  if (iVar16 < 0) {
    iVar19 = *piVar17;
    iVar8 = puVar15[3];
    puVar22 = (uint *)piVar17[3];
    iVar6 = -iVar16 - iVar19;
    iVar14 = -iVar16;
    if (iVar6 < 1) goto LAB_0001cda8;
LAB_0001cc68:
    iVar9 = iVar6 + -1;
    iVar6 = iVar8 + iVar6 * 4;
    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);
    iVar14 = iVar6;
    while( true ) {
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar9 = iVar9 + -1;
      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);
      if (iVar9 == -1) break;
      puVar12 = (uint *)(iVar14 + -8);
      iVar14 = iVar14 + -4;
      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;
      lVar1 = lVar1 + (uVar2 >> 0x20);
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);
        break;
      }
      lVar1 = CONCAT44(uVar18,(int)uVar2);
    }
    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);
    uVar20 = *puVar22;
    *puVar22 = uVar18 + uVar20;
    if (uVar18 + uVar20 < uVar18) {
      if (iVar19 < 2) {
LAB_0001cd34:
        uVar18 = (uint)(uVar7 + 1 != 0);
        iVar14 = iVar19 + uVar18;
        puVar22[iVar19] = uVar7 + 1;
        piVar17[2] = puVar15[2] + uVar18;
        goto joined_r0x0001cddc;
      }
      uVar18 = puVar22[1];
      puVar22[1] = uVar18 + 1;
      if (uVar18 + 1 == 0) {
        iVar14 = 2;
        puVar12 = puVar22 + 2;
        do {
          if (iVar14 == iVar19) goto LAB_0001cd34;
          uVar18 = *puVar12;
          iVar14 = iVar14 + 1;
          *puVar12 = uVar18 + 1;
          puVar12 = puVar12 + 1;
        } while (uVar18 + 1 == 0);
      }
    }
  }
  else {
    iVar19 = *piVar17;
    iVar8 = puVar15[3];
    iVar6 = iVar16 - iVar19;
    puVar22 = (uint *)piVar17[3];
    iVar14 = iVar16;
    if (0 < iVar6) goto LAB_0001cc68;
LAB_0001cda8:
    iVar19 = iVar14;
    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);
  }
  iVar14 = iVar19 + (uint)(uVar7 != 0);
  puVar22[iVar19] = uVar7;
  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);
joined_r0x0001cddc:
  if (iVar16 < 0) {
    iVar14 = -iVar14;
  }
  piVar17[1] = iVar14;
  return;
}


lui gp,0x8
addiu gp,gp,0x27f0
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 a2,zero,0x0001c8c0
_lw t9,-0x7de4(gp)
li v0,0x1
addiu v1,sp,0x18
sw a2,0x18(sp)
addiu a2,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,0x0001c8d4
_lw ra,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x7acc(gp)
jalr t9
_nop
b 0x0001c8a4
_lw gp,0x10(sp)
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "void __gmpf_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\n  return;\n}\n\n" (function_definition "void __gmpf_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\n  return;\n}" primitive_type (function_declarator "__gmpf_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\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 iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * 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 "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_d0 [24];" type_identifier (array_declarator "auStack_d0 [24]" identifier [ number_literal ]) ;) (declaration "code *apcStack_b8 [2];" type_identifier (pointer_declarator "*apcStack_b8 [2]" * (array_declarator "apcStack_b8 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_b0;" primitive_type identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "undefined4 *puStack_a8;" type_identifier (pointer_declarator "*puStack_a8" * identifier) ;) (declaration "undefined4 *puStack_a4;" type_identifier (pointer_declarator "*puStack_a4" * identifier) ;) (declaration "int *piStack_a0;" primitive_type (pointer_declarator "*piStack_a0" * identifier) ;) (declaration "int iStack_9c;" primitive_type identifier ;) (declaration "int *piStack_98;" primitive_type (pointer_declarator "*piStack_98" * identifier) ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "undefined4 uStack_54;" type_identifier identifier ;) (declaration "undefined4 uStack_50;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "int *piStack_48;" primitive_type (pointer_declarator "*piStack_48" * identifier) ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "undefined *puStack_40;" type_identifier (pointer_declarator "*puStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 **local_10;" type_identifier (pointer_declarator "**local_10" * (pointer_declarator "*local_10" * identifier)) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" if (parenthesized_expression "(param_3 == (undefined4 *)0x0)" ( (binary_expression "param_3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR___gmpf_set_00097574)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_set_00097574)();" (call_expression "(*(code *)PTR___gmpf_set_00097574)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_00097574)" ( (pointer_expression "*(code *)PTR___gmpf_set_00097574" * (cast_expression "(code *)PTR___gmpf_set_00097574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" else (compound_statement "{\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" { (expression_statement "local_10 = &local_20;" (assignment_expression "local_10 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "puVar10 = &uStack_1c;" (assignment_expression "puVar10 = &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_3;" (assignment_expression "local_20 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_3 = puVar10;" (assignment_expression "param_3 = puVar10" identifier = identifier) ;) }))) (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 "pcVar28 = __gmpf_ui_sub;" (assignment_expression "pcVar28 = __gmpf_ui_sub" identifier = identifier) ;) (expression_statement "puVar25 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_40 = puVar3;" (assignment_expression "puStack_40 = puVar3" identifier = identifier) ;) (expression_statement "piVar17 = *(int **)(puVar25 + 0x7ac60);" (assignment_expression "piVar17 = *(int **)(puVar25 + 0x7ac60)" identifier = (pointer_expression "*(int **)(puVar25 + 0x7ac60)" * (cast_expression "(int **)(puVar25 + 0x7ac60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7ac60)" ( (binary_expression "puVar25 + 0x7ac60" identifier + number_literal) ))))) ;) (expression_statement "iStack_44 = *piVar17;" (assignment_expression "iStack_44 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "puVar10 = param_3;" (assignment_expression "puVar10 = param_3" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar28;" (assignment_expression "pcStack_3c = pcVar28" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    (**(code **)(puVar25 + 0x7aa00))();\n  }" { (expression_statement "(**(code **)(puVar25 + 0x7aa00))();" (call_expression "(**(code **)(puVar25 + 0x7aa00))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7aa00))" ( (pointer_expression "**(code **)(puVar25 + 0x7aa00)" * (pointer_expression "*(code **)(puVar25 + 0x7aa00)" * (cast_expression "(code **)(puVar25 + 0x7aa00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7aa00)" ( (binary_expression "puVar25 + 0x7aa00" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" else (compound_statement "{\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" { (expression_statement "piStack_48 = &iStack_58;" (assignment_expression "piStack_48 = &iStack_58" identifier = (pointer_expression "&iStack_58" & identifier)) ;) (expression_statement "param_3 = &uStack_54;" (assignment_expression "param_3 = &uStack_54" identifier = (pointer_expression "&uStack_54" & identifier)) ;) (expression_statement "uStack_50 = 1;" (assignment_expression "uStack_50 = 1" identifier = number_literal) ;) (expression_statement "uStack_4c = 1;" (assignment_expression "uStack_4c = 1" identifier = number_literal) ;) (expression_statement "iStack_58 = param_2;" (assignment_expression "iStack_58 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(puVar25 + 0x7a97c))();" (call_expression "(**(code **)(puVar25 + 0x7a97c))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7a97c))" ( (pointer_expression "**(code **)(puVar25 + 0x7a97c)" * (pointer_expression "*(code **)(puVar25 + 0x7a97c)" * (cast_expression "(code **)(puVar25 + 0x7a97c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7a97c)" ( (binary_expression "puVar25 + 0x7a97c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (iStack_44 == *piVar17) {\n    return;\n  }" if (parenthesized_expression "(iStack_44 == *piVar17)" ( (binary_expression "iStack_44 == *piVar17" identifier == (pointer_expression "*piVar17" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = *(code **)(puVar25 + 0x7abf0);" (assignment_expression "pcVar28 = *(code **)(puVar25 + 0x7abf0)" identifier = (pointer_expression "*(code **)(puVar25 + 0x7abf0)" * (cast_expression "(code **)(puVar25 + 0x7abf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7abf0)" ( (binary_expression "puVar25 + 0x7abf0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "apcStack_b8[0] = pcVar28 + 0x826d0;" (assignment_expression "apcStack_b8[0] = pcVar28 + 0x826d0" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) = (binary_expression "pcVar28 + 0x826d0" identifier + number_literal)) ;) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" identifier = identifier) ;) (expression_statement "piVar24 = *(int **)(pcVar28 + 0x7abd0);" (assignment_expression "piVar24 = *(int **)(pcVar28 + 0x7abd0)" identifier = (pointer_expression "*(int **)(pcVar28 + 0x7abd0)" * (cast_expression "(int **)(pcVar28 + 0x7abd0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7abd0)" ( (binary_expression "pcVar28 + 0x7abd0" 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 "iStack_9c = *piVar24;" (assignment_expression "iStack_9c = *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 = puVar10[1];" (assignment_expression "uVar21 = puVar10[1]" identifier = (subscript_expression "puVar10[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 "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" identifier = identifier) ;) (if_statement "if ((int)uVar21 < 0) {\n    uVar11 = -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    uVar11 = -uVar21;\n  }" { (expression_statement "uVar11 = -uVar21;" (assignment_expression "uVar11 = -uVar21" identifier = (unary_expression "-uVar21" - identifier)) ;) })) (expression_statement "puVar15 = (undefined4 *)param_3[3];" (assignment_expression "puVar15 = (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 "puVar13 = (undefined4 *)puVar10[3];" (assignment_expression "puVar13 = (undefined4 *)puVar10[3]" identifier = (cast_expression "(undefined4 *)puVar10[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[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    puVar15 = puVar15 + (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    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" { (expression_statement "puVar15 = puVar15 + (uVar7 - uVar18);" (assignment_expression "puVar15 = puVar15 + (uVar7 - uVar18)" identifier = (binary_expression "puVar15 + (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)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < (int)uVar11)" ( (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" { (expression_statement "puVar13 = puVar13 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puVar13 + (uVar11 - uVar18)" identifier = (binary_expression "puVar13 + (uVar11 - uVar18)" identifier + (parenthesized_expression "(uVar11 - uVar18)" ( (binary_expression "uVar11 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "piStack_98 = piVar17;" (assignment_expression "piStack_98 = piVar17" identifier = identifier) ;) (if_statement "if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" if (parenthesized_expression "((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0))" ( (binary_expression "(uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)" (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar16 = uVar23 + uVar11, uVar11 == 0)" ( (comma_expression "iVar16 = uVar23 + uVar11, uVar11 == 0" (assignment_expression "iVar16 = uVar23 + uVar11" identifier = (binary_expression "uVar23 + uVar11" identifier + identifier)) , (binary_expression "uVar11 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\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 "piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar17 = (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 "puVar15 = param_3;" (assignment_expression "puVar15 = param_3" identifier = identifier) ;) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" identifier = identifier) ;) }) (else_clause "else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" else (compound_statement "{\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" { (expression_statement "piStack_a0 = (int *)0x0;" (assignment_expression "piStack_a0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" if (parenthesized_expression "((uint)(iVar16 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar16 * 4) < 0x7f01" (call_expression "(uint)(iVar16 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 * 4)" ( (binary_expression "iVar16 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }" { (expression_statement "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar16 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar16 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar16 * 4 + 7U & 0xfffffff8" (binary_expression "iVar16 * 4 + 7U" (binary_expression "iVar16 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar27 = auStack_d0 + iVar14;" (assignment_expression "puVar27 = auStack_d0 + iVar14" identifier = (binary_expression "auStack_d0 + iVar14" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);" (assignment_expression "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14)" identifier = (cast_expression "(undefined4 *)((int)apcStack_b8 + iVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apcStack_b8 + iVar14)" ( (binary_expression "(int)apcStack_b8 + iVar14" (cast_expression "(int)apcStack_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puStack_a8 = (undefined4 *)iVar16;" (assignment_expression "puStack_a8 = (undefined4 *)iVar16" identifier = (cast_expression "(undefined4 *)iVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" else (compound_statement "{\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" { (expression_statement "iStack_b0 = iVar16;" (assignment_expression "iStack_b0 = iVar16" identifier = identifier) ;) (expression_statement "uStack_ac = uVar11;" (assignment_expression "uStack_ac = uVar11" identifier = identifier) ;) (expression_statement "puStack_a8 = puVar13;" (assignment_expression "puStack_a8 = puVar13" identifier = identifier) ;) (expression_statement "puStack_a4 = puVar15;" (assignment_expression "puStack_a4 = puVar15" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a980))" ( (pointer_expression "**(code **)(pcVar28 + 0x7a980)" * (pointer_expression "*(code **)(pcVar28 + 0x7a980)" * (cast_expression "(code **)(pcVar28 + 0x7a980)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a980)" ( (binary_expression "pcVar28 + 0x7a980" identifier + number_literal) ))))) )) (argument_list "(&piStack_a0)" ( (pointer_expression "&piStack_a0" & identifier) ))))) ;) (expression_statement "uVar11 = uStack_ac;" (assignment_expression "uVar11 = uStack_ac" identifier = identifier) ;) (expression_statement "puVar13 = puStack_a8;" (assignment_expression "puVar13 = puStack_a8" identifier = identifier) ;) (expression_statement "puVar15 = puStack_a4;" (assignment_expression "puVar15 = puStack_a4" identifier = identifier) ;) (expression_statement "puStack_a8 = (undefined4 *)iStack_b0;" (assignment_expression "puStack_a8 = (undefined4 *)iStack_b0" identifier = (cast_expression "(undefined4 *)iStack_b0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7d8c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7d8c)" ( (binary_expression "apcStack_b8[0] + -0x7d8c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_a4 = puVar5;" (assignment_expression "puStack_a4 = puVar5" identifier = identifier) ;) (if_statement "if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" if (parenthesized_expression "((int)uVar23 < (int)uVar11)" ( (binary_expression "(int)uVar23 < (int)uVar11" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }" { (expression_statement "*(uint *)(puVar27 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar27 + 0x10)" * (cast_expression "(uint *)(puVar27 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x10)" ( (binary_expression "puVar27 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15)" identifier = (call_expression "(*pcVar28)(puVar5,puVar13,uVar11,puVar15)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(puVar5,puVar13,uVar11,puVar15)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) }) (else_clause "else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" else (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" { (expression_statement "*(uint *)(puVar27 + 0x10) = uVar11;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar11" (pointer_expression "*(uint *)(puVar27 + 0x10)" * (cast_expression "(uint *)(puVar27 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x10)" ( (binary_expression "puVar27 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13)" identifier = (call_expression "(*pcVar28)(puVar5,puVar15,uVar23,puVar13)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(puVar5,puVar15,uVar23,puVar13)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);" (assignment_expression "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0)" identifier = (binary_expression "(int)puStack_a8 - (uint)(iVar16 == 0)" (cast_expression "(int)puStack_a8" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))))) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puStack_a4;" (assignment_expression "puVar13 = puStack_a4" identifier = identifier) ;) (if_statement "if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" if (parenthesized_expression "((int)uVar18 < (int)uVar11)" ( (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" { (expression_statement "puVar13 = puStack_a4 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puStack_a4 + (uVar11 - uVar18)" identifier = (binary_expression "puStack_a4 + (uVar11 - uVar18)" identifier + (parenthesized_expression "(uVar11 - uVar18)" ( (binary_expression "uVar11 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar14 = uVar11 - 1;" (assignment_expression "iVar14 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 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 = *puVar13;" (assignment_expression "uVar29 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar5 + 1;" (assignment_expression "puVar15 = 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 "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar29 = *puVar13;" (assignment_expression "uVar29 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5 = puVar15;" (assignment_expression "puVar5 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar11 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar11 - 1)" identifier = (binary_expression "puVar4 + (uVar11 - 1)" identifier + (parenthesized_expression "(uVar11 - 1)" ( (binary_expression "uVar11 - 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] + puVar10[2]) - (uint)(iVar16 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (parenthesized_expression "(param_3[2] + puVar10[2])" ( (binary_expression "param_3[2] + puVar10[2]" (subscript_expression "param_3[2]" identifier [ number_literal ]) + (subscript_expression "puVar10[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))))) ;) (if_statement "if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\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      uVar11 = -uVar11;\n    }" { (expression_statement "uVar11 = -uVar11;" (assignment_expression "uVar11 = -uVar11" identifier = (unary_expression "-uVar11" - identifier)) ;) })) (expression_statement "param_1[1] = uVar11;" (assignment_expression "param_1[1] = uVar11" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar17 = piStack_a0;" (assignment_expression "piVar17 = piStack_a0" identifier = identifier) ;) (if_statement "if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" if (parenthesized_expression "(piStack_a0 != (int *)0x0)" ( (binary_expression "piStack_a0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" { (expression_statement "(**(code **)(apcStack_b8[0] + -0x7a2c))();" (call_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))()" (parenthesized_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))" ( (pointer_expression "**(code **)(apcStack_b8[0] + -0x7a2c)" * (pointer_expression "*(code **)(apcStack_b8[0] + -0x7a2c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7a2c)" ( (binary_expression "apcStack_b8[0] + -0x7a2c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_9c == *piVar24) {\n    return;\n  }" if (parenthesized_expression "(iStack_9c == *piVar24)" ( (binary_expression "iStack_9c == *piVar24" identifier == (pointer_expression "*piVar24" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7b70)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7b70)" ( (binary_expression "apcStack_b8[0] + -0x7b70" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar29 = 0x1cbf4;" (assignment_expression "uVar29 = 0x1cbf4" identifier = number_literal) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440" (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar28 + 0x82440" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar27 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar27 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar27 + -0x14)" * (cast_expression "(uint **)(puVar27 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar27 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar27 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar27 + -8)" * (cast_expression "(undefined4 **)(puVar27 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar27 + -0xc) = puVar10;" (assignment_expression "*(undefined4 **)(puVar27 + -0xc) = puVar10" (pointer_expression "*(undefined4 **)(puVar27 + -0xc)" * (cast_expression "(undefined4 **)(puVar27 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar27 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar27 + -0x10)" * (cast_expression "(uint *)(puVar27 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar27 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar27 + -0x18)" * (cast_expression "(uint *)(puVar27 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar27 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar27 + -0x1c)" * (cast_expression "(uint *)(puVar27 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = puVar15[1];" (assignment_expression "iVar16 = puVar15[1]" identifier = (subscript_expression "puVar15[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar11 == 0) || (iVar16 == 0))" ( (binary_expression "(uVar11 == 0) || (iVar16 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" { (expression_statement "piVar17[1] = 0;" (assignment_expression "piVar17[1] = 0" (subscript_expression "piVar17[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17[2] = 0;" (assignment_expression "piVar17[2] = 0" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }" { (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" identifier = (subscript_expression "puVar15[3]" identifier [ number_literal ])) ;) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" identifier = (cast_expression "(uint *)piVar17[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = -iVar16 - iVar19;" (assignment_expression "iVar6 = -iVar16 - iVar19" identifier = (binary_expression "-iVar16 - iVar19" (unary_expression "-iVar16" - identifier) - identifier)) ;) (expression_statement "iVar14 = -iVar16;" (assignment_expression "iVar14 = -iVar16" identifier = (unary_expression "-iVar16" - identifier)) ;) (if_statement "if (iVar6 < 1) goto LAB_0001cda8;" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cda8;" goto statement_identifier ;)) (labeled_statement "LAB_0001cc68:\n    iVar9 = iVar6 + -1;" statement_identifier : (expression_statement "iVar9 = iVar6 + -1;" (assignment_expression "iVar9 = 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)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(iVar8 + iVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar9 * 4)" ( (binary_expression "iVar8 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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 "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) break;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = (uint *)(iVar14 + -8);" (assignment_expression "puVar12 = (uint *)(iVar14 + -8)" identifier = (cast_expression "(uint *)(iVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -8)" ( (binary_expression "iVar14 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar14 = iVar14 + -4;" (assignment_expression "iVar14 = iVar14 + -4" identifier = (binary_expression "iVar14 + -4" identifier + number_literal)) ;) (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)*puVar12" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" ( (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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }" { (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" 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 = (*pcVar26)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar26)(puVar22,iVar6,iVar19)" identifier = (call_expression "(*pcVar26)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * 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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }" { (if_statement "if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" if (parenthesized_expression "(iVar19 < 2)" ( (binary_expression "iVar19 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" { (labeled_statement "LAB_0001cd34:\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 "iVar14 = iVar19 + uVar18;" (assignment_expression "iVar14 = 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 "piVar17[2] = puVar15[2] + uVar18;" (assignment_expression "piVar17[2] = puVar15[2] + uVar18" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (binary_expression "puVar15[2] + uVar18" (subscript_expression "puVar15[2]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto joined_r0x0001cddc;" 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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }" { (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" identifier = number_literal) ;) (expression_statement "puVar12 = puVar22 + 2;" (assignment_expression "puVar12 = puVar22 + 2" identifier = (binary_expression "puVar22 + 2" identifier + number_literal)) ;) (do_statement "do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);" do (compound_statement "{\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        }" { (if_statement "if (iVar14 == iVar19) goto LAB_0001cd34;" if (parenthesized_expression "(iVar14 == iVar19)" ( (binary_expression "iVar14 == iVar19" identifier == identifier) )) (goto_statement "goto LAB_0001cd34;" goto statement_identifier ;)) (expression_statement "uVar18 = *puVar12;" (assignment_expression "uVar18 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uVar18 + 1;" (assignment_expression "*puVar12 = uVar18 + 1" (pointer_expression "*puVar12" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 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 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" else (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" { (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" identifier = (subscript_expression "puVar15[3]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar16 - iVar19;" (assignment_expression "iVar6 = iVar16 - iVar19" identifier = (binary_expression "iVar16 - iVar19" identifier - identifier)) ;) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" identifier = (cast_expression "(uint *)piVar17[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = iVar16;" (assignment_expression "iVar14 = iVar16" identifier = identifier) ;) (if_statement "if (0 < iVar6) goto LAB_0001cc68;" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_0001cc68;" goto statement_identifier ;)) (labeled_statement "LAB_0001cda8:\n    iVar19 = iVar14;" statement_identifier : (expression_statement "iVar19 = iVar14;" (assignment_expression "iVar19 = iVar14" identifier = identifier) ;)) (expression_statement "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" identifier = (call_expression "(**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a4a4))" ( (pointer_expression "**(code **)(pcVar28 + 0x7a4a4)" * (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" identifier + number_literal) ))))) )) (argument_list "(puVar22,iVar8,iVar19)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar14 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar14 = 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 "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (binary_expression "puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar15[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_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" statement_identifier : (if_statement "if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar14 = -iVar14;\n  }" { (expression_statement "iVar14 = -iVar14;" (assignment_expression "iVar14 = -iVar14" identifier = (unary_expression "-iVar14" - identifier)) ;) }))) (expression_statement "piVar17[1] = iVar14;" (assignment_expression "piVar17[1] = iVar14" (subscript_expression "piVar17[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "void __gmpf_sub_ui(mpf_ptr sum,mpf_srcptr u,ulong 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_struct *p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  __mpf_struct *p_Var12;\n  mp_limb_t *pmVar13;\n  __mpf_struct *p_Var14;\n  int *piVar15;\n  uint uVar16;\n  mp_limb_t mVar17;\n  uint uVar18;\n  mp_limb_t mVar19;\n  uint uVar20;\n  uint *puVar21;\n  uint uVar22;\n  int *piVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  code *pcVar27;\n  undefined4 uVar28;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  __mpf_struct *p_Stack_a8;\n  __mpf_struct *p_Stack_a4;\n  mp_limb_t *pmStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  mpf_srcptr p_Stack_58;\n  __mpf_struct _Stack_54;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  mp_limb_t vl;\n  __mpf_struct vv;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  iVar3 = *(int *)PTR___stack_chk_guard_00097540;\n  if (v == 0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  pcVar27 = __gmpf_ui_sub;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar2;\n  piVar15 = *(int **)(puVar24 + 0x7ac60);\n  iStack_44 = *piVar15;\n  p_Var8 = (__mpf_struct *)v;\n  pcStack_3c = pcVar27;\n  if (u == (mpf_srcptr)0x0) {\n    (**(code **)(puVar24 + 0x7aa00))();\n  }\n  else {\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }\n  if (iStack_44 == *piVar15) {\n    return;\n  }\n  pcVar27 = *(code **)(puVar24 + 0x7abf0);\n  (*pcVar27)();\n  apcStack_b8[0] = pcVar27 + 0x826d0;\n  puVar26 = auStack_d0;\n  piVar23 = *(int **)(pcVar27 + 0x7abd0);\n  uVar18 = ((__mpf_struct *)v)->_mp_size;\n  iStack_9c = *piVar23;\n  uVar16 = sum->_mp_prec;\n  uVar20 = p_Var8->_mp_size;\n  uVar5 = -uVar18;\n  if (-1 < (int)uVar18) {\n    uVar5 = uVar18;\n  }\n  uVar9 = uVar20;\n  if ((int)uVar20 < 0) {\n    uVar9 = -uVar20;\n  }\n  p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d;\n  p_Var12 = (__mpf_struct *)p_Var8->_mp_d;\n  uVar22 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);\n    uVar22 = uVar16;\n  }\n  if ((int)uVar16 < (int)uVar9) {\n    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);\n    uVar9 = uVar16;\n  }\n  piStack_98 = piVar15;\n  if ((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)) {\n    sum->_mp_size = 0;\n    sum->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);\n    p_Var14 = (__mpf_struct *)v;\n    puVar26 = auStack_d0;\n  }\n  else {\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar23) {\n    return;\n  }\n  pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar28 = 0x1cbf4;\n  (*pcVar27)();\n  *(code **)(puVar26 + -0x28) = pcVar27 + 0x82440;\n  *(mpf_ptr *)(puVar26 + -0x14) = sum;\n  *(undefined4 *)(puVar26 + -4) = uVar28;\n  *(ulong *)(puVar26 + -8) = v;\n  *(__mpf_struct **)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar20;\n  *(uint *)(puVar26 + -0x18) = uVar18;\n  *(uint *)(puVar26 + -0x1c) = uVar16;\n  mVar19 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar19 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar19 < 0) {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar21 = (uint *)pmVar4[3];\n    iVar3 = -mVar19 - mVar17;\n    mVar11 = -mVar19;\n    if (iVar3 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);\n    uVar18 = *puVar21;\n    *puVar21 = uVar16 + uVar18;\n    if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }\n  }\n  else {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }\n  mVar11 = mVar17 + (uVar5 != 0);\n  puVar21[mVar17] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cddc:\n  if ((int)mVar19 < 0) {\n    mVar11 = -mVar11;\n  }\n  pmVar4[1] = mVar11;\n  return;\n}\n\n" (function_definition "void __gmpf_sub_ui(mpf_ptr sum,mpf_srcptr u,ulong 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_struct *p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  __mpf_struct *p_Var12;\n  mp_limb_t *pmVar13;\n  __mpf_struct *p_Var14;\n  int *piVar15;\n  uint uVar16;\n  mp_limb_t mVar17;\n  uint uVar18;\n  mp_limb_t mVar19;\n  uint uVar20;\n  uint *puVar21;\n  uint uVar22;\n  int *piVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  code *pcVar27;\n  undefined4 uVar28;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  __mpf_struct *p_Stack_a8;\n  __mpf_struct *p_Stack_a4;\n  mp_limb_t *pmStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  mpf_srcptr p_Stack_58;\n  __mpf_struct _Stack_54;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  mp_limb_t vl;\n  __mpf_struct vv;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  iVar3 = *(int *)PTR___stack_chk_guard_00097540;\n  if (v == 0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  pcVar27 = __gmpf_ui_sub;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar2;\n  piVar15 = *(int **)(puVar24 + 0x7ac60);\n  iStack_44 = *piVar15;\n  p_Var8 = (__mpf_struct *)v;\n  pcStack_3c = pcVar27;\n  if (u == (mpf_srcptr)0x0) {\n    (**(code **)(puVar24 + 0x7aa00))();\n  }\n  else {\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }\n  if (iStack_44 == *piVar15) {\n    return;\n  }\n  pcVar27 = *(code **)(puVar24 + 0x7abf0);\n  (*pcVar27)();\n  apcStack_b8[0] = pcVar27 + 0x826d0;\n  puVar26 = auStack_d0;\n  piVar23 = *(int **)(pcVar27 + 0x7abd0);\n  uVar18 = ((__mpf_struct *)v)->_mp_size;\n  iStack_9c = *piVar23;\n  uVar16 = sum->_mp_prec;\n  uVar20 = p_Var8->_mp_size;\n  uVar5 = -uVar18;\n  if (-1 < (int)uVar18) {\n    uVar5 = uVar18;\n  }\n  uVar9 = uVar20;\n  if ((int)uVar20 < 0) {\n    uVar9 = -uVar20;\n  }\n  p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d;\n  p_Var12 = (__mpf_struct *)p_Var8->_mp_d;\n  uVar22 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);\n    uVar22 = uVar16;\n  }\n  if ((int)uVar16 < (int)uVar9) {\n    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);\n    uVar9 = uVar16;\n  }\n  piStack_98 = piVar15;\n  if ((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)) {\n    sum->_mp_size = 0;\n    sum->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);\n    p_Var14 = (__mpf_struct *)v;\n    puVar26 = auStack_d0;\n  }\n  else {\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar23) {\n    return;\n  }\n  pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar28 = 0x1cbf4;\n  (*pcVar27)();\n  *(code **)(puVar26 + -0x28) = pcVar27 + 0x82440;\n  *(mpf_ptr *)(puVar26 + -0x14) = sum;\n  *(undefined4 *)(puVar26 + -4) = uVar28;\n  *(ulong *)(puVar26 + -8) = v;\n  *(__mpf_struct **)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar20;\n  *(uint *)(puVar26 + -0x18) = uVar18;\n  *(uint *)(puVar26 + -0x1c) = uVar16;\n  mVar19 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar19 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar19 < 0) {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar21 = (uint *)pmVar4[3];\n    iVar3 = -mVar19 - mVar17;\n    mVar11 = -mVar19;\n    if (iVar3 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);\n    uVar18 = *puVar21;\n    *puVar21 = uVar16 + uVar18;\n    if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }\n  }\n  else {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }\n  mVar11 = mVar17 + (uVar5 != 0);\n  puVar21[mVar17] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cddc:\n  if ((int)mVar19 < 0) {\n    mVar11 = -mVar11;\n  }\n  pmVar4[1] = mVar11;\n  return;\n}" primitive_type (function_declarator "__gmpf_sub_ui(mpf_ptr sum,mpf_srcptr u,ulong v)" identifier (parameter_list "(mpf_ptr sum,mpf_srcptr u,ulong v)" ( (parameter_declaration "mpf_ptr sum" type_identifier identifier) , (parameter_declaration "mpf_srcptr u" type_identifier identifier) , (parameter_declaration "ulong 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_struct *p_Var8;\n  uint uVar9;\n  uint *puVar10;\n  mp_limb_t mVar11;\n  __mpf_struct *p_Var12;\n  mp_limb_t *pmVar13;\n  __mpf_struct *p_Var14;\n  int *piVar15;\n  uint uVar16;\n  mp_limb_t mVar17;\n  uint uVar18;\n  mp_limb_t mVar19;\n  uint uVar20;\n  uint *puVar21;\n  uint uVar22;\n  int *piVar23;\n  undefined *puVar24;\n  code *pcVar25;\n  undefined1 *puVar26;\n  code *pcVar27;\n  undefined4 uVar28;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  __mpf_struct *p_Stack_a8;\n  __mpf_struct *p_Stack_a4;\n  mp_limb_t *pmStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  mpf_srcptr p_Stack_58;\n  __mpf_struct _Stack_54;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  mp_limb_t vl;\n  __mpf_struct vv;\n  \n  puVar2 = PTR___stack_chk_guard_00097540;\n  iVar3 = *(int *)PTR___stack_chk_guard_00097540;\n  if (v == 0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }\n  if (iVar3 == *(int *)puVar2) {\n    return;\n  }\n  pcVar27 = __gmpf_ui_sub;\n  puVar24 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar2;\n  piVar15 = *(int **)(puVar24 + 0x7ac60);\n  iStack_44 = *piVar15;\n  p_Var8 = (__mpf_struct *)v;\n  pcStack_3c = pcVar27;\n  if (u == (mpf_srcptr)0x0) {\n    (**(code **)(puVar24 + 0x7aa00))();\n  }\n  else {\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }\n  if (iStack_44 == *piVar15) {\n    return;\n  }\n  pcVar27 = *(code **)(puVar24 + 0x7abf0);\n  (*pcVar27)();\n  apcStack_b8[0] = pcVar27 + 0x826d0;\n  puVar26 = auStack_d0;\n  piVar23 = *(int **)(pcVar27 + 0x7abd0);\n  uVar18 = ((__mpf_struct *)v)->_mp_size;\n  iStack_9c = *piVar23;\n  uVar16 = sum->_mp_prec;\n  uVar20 = p_Var8->_mp_size;\n  uVar5 = -uVar18;\n  if (-1 < (int)uVar18) {\n    uVar5 = uVar18;\n  }\n  uVar9 = uVar20;\n  if ((int)uVar20 < 0) {\n    uVar9 = -uVar20;\n  }\n  p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d;\n  p_Var12 = (__mpf_struct *)p_Var8->_mp_d;\n  uVar22 = uVar5;\n  if ((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);\n    uVar22 = uVar16;\n  }\n  if ((int)uVar16 < (int)uVar9) {\n    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);\n    uVar9 = uVar16;\n  }\n  piStack_98 = piVar15;\n  if ((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)) {\n    sum->_mp_size = 0;\n    sum->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);\n    p_Var14 = (__mpf_struct *)v;\n    puVar26 = auStack_d0;\n  }\n  else {\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar23) {\n    return;\n  }\n  pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar28 = 0x1cbf4;\n  (*pcVar27)();\n  *(code **)(puVar26 + -0x28) = pcVar27 + 0x82440;\n  *(mpf_ptr *)(puVar26 + -0x14) = sum;\n  *(undefined4 *)(puVar26 + -4) = uVar28;\n  *(ulong *)(puVar26 + -8) = v;\n  *(__mpf_struct **)(puVar26 + -0xc) = p_Var8;\n  *(uint *)(puVar26 + -0x10) = uVar20;\n  *(uint *)(puVar26 + -0x18) = uVar18;\n  *(uint *)(puVar26 + -0x1c) = uVar16;\n  mVar19 = p_Var14->_mp_size;\n  if ((uVar9 == 0) || (mVar19 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }\n  if ((int)mVar19 < 0) {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar21 = (uint *)pmVar4[3];\n    iVar3 = -mVar19 - mVar17;\n    mVar11 = -mVar19;\n    if (iVar3 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);\n    uVar18 = *puVar21;\n    *puVar21 = uVar16 + uVar18;\n    if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }\n  }\n  else {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }\n  mVar11 = mVar17 + (uVar5 != 0);\n  puVar21[mVar17] = uVar5;\n  pmVar4[2] = p_Var14->_mp_exp + (uint)(uVar5 != 0);\njoined_r0x0001cddc:\n  if ((int)mVar19 < 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_struct *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * 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_struct *p_Var12;" type_identifier (pointer_declarator "*p_Var12" * identifier) ;) (declaration "mp_limb_t *pmVar13;" type_identifier (pointer_declarator "*pmVar13" * identifier) ;) (declaration "__mpf_struct *p_Var14;" type_identifier (pointer_declarator "*p_Var14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "mp_limb_t mVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "mp_limb_t mVar19;" type_identifier identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "uint *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "uint uVar22;" type_identifier identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "undefined4 uVar28;" type_identifier identifier ;) (declaration "undefined1 auStack_d0 [24];" type_identifier (array_declarator "auStack_d0 [24]" identifier [ number_literal ]) ;) (declaration "code *apcStack_b8 [2];" type_identifier (pointer_declarator "*apcStack_b8 [2]" * (array_declarator "apcStack_b8 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_b0;" primitive_type identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "__mpf_struct *p_Stack_a8;" type_identifier (pointer_declarator "*p_Stack_a8" * identifier) ;) (declaration "__mpf_struct *p_Stack_a4;" type_identifier (pointer_declarator "*p_Stack_a4" * identifier) ;) (declaration "mp_limb_t *pmStack_a0;" type_identifier (pointer_declarator "*pmStack_a0" * identifier) ;) (declaration "int iStack_9c;" primitive_type identifier ;) (declaration "int *piStack_98;" primitive_type (pointer_declarator "*piStack_98" * identifier) ;) (declaration "mpf_srcptr p_Stack_58;" type_identifier identifier ;) (declaration "__mpf_struct _Stack_54;" type_identifier identifier ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "undefined *puStack_40;" type_identifier (pointer_declarator "*puStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "mp_limb_t vl;" type_identifier identifier ;) (declaration "__mpf_struct vv;" type_identifier identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar2 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (v == 0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }" if (parenthesized_expression "(v == 0)" ( (binary_expression "v == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___gmpf_set_00097574)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_set_00097574)();" (call_expression "(*(code *)PTR___gmpf_set_00097574)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_00097574)" ( (pointer_expression "*(code *)PTR___gmpf_set_00097574" * (cast_expression "(code *)PTR___gmpf_set_00097574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }" else (compound_statement "{\n    vv._mp_d = &vl;\n    p_Var8 = &vv;\n    vv._mp_size = 1;\n    vv._mp_exp = 1;\n    vl = v;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    v = (ulong)p_Var8;\n  }" { (expression_statement "vv._mp_d = &vl;" (assignment_expression "vv._mp_d = &vl" (field_expression "vv._mp_d" identifier . field_identifier) = (pointer_expression "&vl" & identifier)) ;) (expression_statement "p_Var8 = &vv;" (assignment_expression "p_Var8 = &vv" identifier = (pointer_expression "&vv" & identifier)) ;) (expression_statement "vv._mp_size = 1;" (assignment_expression "vv._mp_size = 1" (field_expression "vv._mp_size" identifier . field_identifier) = number_literal) ;) (expression_statement "vv._mp_exp = 1;" (assignment_expression "vv._mp_exp = 1" (field_expression "vv._mp_exp" identifier . field_identifier) = number_literal) ;) (expression_statement "vl = v;" (assignment_expression "vl = v" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "v = (ulong)p_Var8;" (assignment_expression "v = (ulong)p_Var8" identifier = (cast_expression "(ulong)p_Var8" ( (type_descriptor "ulong" type_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 "pcVar27 = __gmpf_ui_sub;" (assignment_expression "pcVar27 = __gmpf_ui_sub" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar24 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_40 = puVar2;" (assignment_expression "puStack_40 = puVar2" identifier = identifier) ;) (expression_statement "piVar15 = *(int **)(puVar24 + 0x7ac60);" (assignment_expression "piVar15 = *(int **)(puVar24 + 0x7ac60)" identifier = (pointer_expression "*(int **)(puVar24 + 0x7ac60)" * (cast_expression "(int **)(puVar24 + 0x7ac60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7ac60)" ( (binary_expression "puVar24 + 0x7ac60" identifier + number_literal) ))))) ;) (expression_statement "iStack_44 = *piVar15;" (assignment_expression "iStack_44 = *piVar15" identifier = (pointer_expression "*piVar15" * identifier)) ;) (expression_statement "p_Var8 = (__mpf_struct *)v;" (assignment_expression "p_Var8 = (__mpf_struct *)v" identifier = (cast_expression "(__mpf_struct *)v" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pcStack_3c = pcVar27;" (assignment_expression "pcStack_3c = pcVar27" identifier = identifier) ;) (if_statement "if (u == (mpf_srcptr)0x0) {\n    (**(code **)(puVar24 + 0x7aa00))();\n  }\n  else {\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }" if (parenthesized_expression "(u == (mpf_srcptr)0x0)" ( (binary_expression "u == (mpf_srcptr)0x0" identifier == (cast_expression "(mpf_srcptr)0x0" ( (type_descriptor "mpf_srcptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    (**(code **)(puVar24 + 0x7aa00))();\n  }" { (expression_statement "(**(code **)(puVar24 + 0x7aa00))();" (call_expression "(**(code **)(puVar24 + 0x7aa00))()" (parenthesized_expression "(**(code **)(puVar24 + 0x7aa00))" ( (pointer_expression "**(code **)(puVar24 + 0x7aa00)" * (pointer_expression "*(code **)(puVar24 + 0x7aa00)" * (cast_expression "(code **)(puVar24 + 0x7aa00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7aa00)" ( (binary_expression "puVar24 + 0x7aa00" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }" else (compound_statement "{\n    _Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;\n    p_Var14 = &_Stack_54;\n    _Stack_54._mp_size = 1;\n    _Stack_54._mp_exp = 1;\n    p_Stack_58 = u;\n    (**(code **)(puVar24 + 0x7a97c))();\n    v = (ulong)p_Var14;\n  }" { (expression_statement "_Stack_54._mp_d = (mp_limb_t *)&p_Stack_58;" (assignment_expression "_Stack_54._mp_d = (mp_limb_t *)&p_Stack_58" (field_expression "_Stack_54._mp_d" identifier . field_identifier) = (cast_expression "(mp_limb_t *)&p_Stack_58" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p_Stack_58" & identifier))) ;) (expression_statement "p_Var14 = &_Stack_54;" (assignment_expression "p_Var14 = &_Stack_54" identifier = (pointer_expression "&_Stack_54" & identifier)) ;) (expression_statement "_Stack_54._mp_size = 1;" (assignment_expression "_Stack_54._mp_size = 1" (field_expression "_Stack_54._mp_size" identifier . field_identifier) = number_literal) ;) (expression_statement "_Stack_54._mp_exp = 1;" (assignment_expression "_Stack_54._mp_exp = 1" (field_expression "_Stack_54._mp_exp" identifier . field_identifier) = number_literal) ;) (expression_statement "p_Stack_58 = u;" (assignment_expression "p_Stack_58 = u" identifier = identifier) ;) (expression_statement "(**(code **)(puVar24 + 0x7a97c))();" (call_expression "(**(code **)(puVar24 + 0x7a97c))()" (parenthesized_expression "(**(code **)(puVar24 + 0x7a97c))" ( (pointer_expression "**(code **)(puVar24 + 0x7a97c)" * (pointer_expression "*(code **)(puVar24 + 0x7a97c)" * (cast_expression "(code **)(puVar24 + 0x7a97c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7a97c)" ( (binary_expression "puVar24 + 0x7a97c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "v = (ulong)p_Var14;" (assignment_expression "v = (ulong)p_Var14" identifier = (cast_expression "(ulong)p_Var14" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (if_statement "if (iStack_44 == *piVar15) {\n    return;\n  }" if (parenthesized_expression "(iStack_44 == *piVar15)" ( (binary_expression "iStack_44 == *piVar15" identifier == (pointer_expression "*piVar15" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar27 = *(code **)(puVar24 + 0x7abf0);" (assignment_expression "pcVar27 = *(code **)(puVar24 + 0x7abf0)" identifier = (pointer_expression "*(code **)(puVar24 + 0x7abf0)" * (cast_expression "(code **)(puVar24 + 0x7abf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x7abf0)" ( (binary_expression "puVar24 + 0x7abf0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar27)();" (call_expression "(*pcVar27)()" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "apcStack_b8[0] = pcVar27 + 0x826d0;" (assignment_expression "apcStack_b8[0] = pcVar27 + 0x826d0" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) = (binary_expression "pcVar27 + 0x826d0" identifier + number_literal)) ;) (expression_statement "puVar26 = auStack_d0;" (assignment_expression "puVar26 = auStack_d0" identifier = identifier) ;) (expression_statement "piVar23 = *(int **)(pcVar27 + 0x7abd0);" (assignment_expression "piVar23 = *(int **)(pcVar27 + 0x7abd0)" identifier = (pointer_expression "*(int **)(pcVar27 + 0x7abd0)" * (cast_expression "(int **)(pcVar27 + 0x7abd0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7abd0)" ( (binary_expression "pcVar27 + 0x7abd0" identifier + number_literal) ))))) ;) (expression_statement "uVar18 = ((__mpf_struct *)v)->_mp_size;" (assignment_expression "uVar18 = ((__mpf_struct *)v)->_mp_size" identifier = (field_expression "((__mpf_struct *)v)->_mp_size" (parenthesized_expression "((__mpf_struct *)v)" ( (cast_expression "(__mpf_struct *)v" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "iStack_9c = *piVar23;" (assignment_expression "iStack_9c = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "uVar16 = sum->_mp_prec;" (assignment_expression "uVar16 = sum->_mp_prec" identifier = (field_expression "sum->_mp_prec" identifier -> field_identifier)) ;) (expression_statement "uVar20 = p_Var8->_mp_size;" (assignment_expression "uVar20 = p_Var8->_mp_size" identifier = (field_expression "p_Var8->_mp_size" identifier -> field_identifier)) ;) (expression_statement "uVar5 = -uVar18;" (assignment_expression "uVar5 = -uVar18" identifier = (unary_expression "-uVar18" - identifier)) ;) (if_statement "if (-1 < (int)uVar18) {\n    uVar5 = uVar18;\n  }" if (parenthesized_expression "(-1 < (int)uVar18)" ( (binary_expression "-1 < (int)uVar18" number_literal < (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar18;\n  }" { (expression_statement "uVar5 = uVar18;" (assignment_expression "uVar5 = uVar18" identifier = identifier) ;) })) (expression_statement "uVar9 = uVar20;" (assignment_expression "uVar9 = uVar20" identifier = identifier) ;) (if_statement "if ((int)uVar20 < 0) {\n    uVar9 = -uVar20;\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    uVar9 = -uVar20;\n  }" { (expression_statement "uVar9 = -uVar20;" (assignment_expression "uVar9 = -uVar20" identifier = (unary_expression "-uVar20" - identifier)) ;) })) (expression_statement "p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d;" (assignment_expression "p_Var14 = (__mpf_struct *)((__mpf_struct *)v)->_mp_d" identifier = (cast_expression "(__mpf_struct *)((__mpf_struct *)v)->_mp_d" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((__mpf_struct *)v)->_mp_d" (parenthesized_expression "((__mpf_struct *)v)" ( (cast_expression "(__mpf_struct *)v" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) ;) (expression_statement "p_Var12 = (__mpf_struct *)p_Var8->_mp_d;" (assignment_expression "p_Var12 = (__mpf_struct *)p_Var8->_mp_d" identifier = (cast_expression "(__mpf_struct *)p_Var8->_mp_d" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var8->_mp_d" identifier -> field_identifier))) ;) (expression_statement "uVar22 = uVar5;" (assignment_expression "uVar22 = uVar5" identifier = identifier) ;) (if_statement "if ((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0) {\n    p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);\n    uVar22 = uVar16;\n  }" if (parenthesized_expression "((mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0)" ( (binary_expression "(mp_limb_t *)(uint)((int)uVar16 < (int)uVar5) != (mp_limb_t *)0x0" (cast_expression "(mp_limb_t *)(uint)((int)uVar16 < (int)uVar5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar16 < (int)uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar16 < (int)uVar5)" ( (binary_expression "(int)uVar16 < (int)uVar5" (cast_expression "(int)uVar16" ( (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_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);\n    uVar22 = uVar16;\n  }" { (expression_statement "p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4);" (assignment_expression "p_Var14 = (__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4)" identifier = (cast_expression "(__mpf_struct *)((int)p_Var14 + (uVar5 - uVar16) * 4)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var14 + (uVar5 - uVar16) * 4)" ( (binary_expression "(int)p_Var14 + (uVar5 - uVar16) * 4" (cast_expression "(int)p_Var14" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar5 - uVar16) * 4" (parenthesized_expression "(uVar5 - uVar16)" ( (binary_expression "uVar5 - uVar16" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar22 = uVar16;" (assignment_expression "uVar22 = uVar16" identifier = identifier) ;) })) (if_statement "if ((int)uVar16 < (int)uVar9) {\n    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);\n    uVar9 = uVar16;\n  }" if (parenthesized_expression "((int)uVar16 < (int)uVar9)" ( (binary_expression "(int)uVar16 < (int)uVar9" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);\n    uVar9 = uVar16;\n  }" { (expression_statement "p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4);" (assignment_expression "p_Var12 = (__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4)" identifier = (cast_expression "(__mpf_struct *)((int)p_Var12 + (uVar9 - uVar16) * 4)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Var12 + (uVar9 - uVar16) * 4)" ( (binary_expression "(int)p_Var12 + (uVar9 - uVar16) * 4" (cast_expression "(int)p_Var12" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar9 - uVar16) * 4" (parenthesized_expression "(uVar9 - uVar16)" ( (binary_expression "uVar9 - uVar16" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" identifier = identifier) ;) })) (expression_statement "piStack_98 = piVar15;" (assignment_expression "piStack_98 = piVar15" identifier = identifier) ;) (if_statement "if ((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)) {\n    sum->_mp_size = 0;\n    sum->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);\n    p_Var14 = (__mpf_struct *)v;\n    puVar26 = auStack_d0;\n  }\n  else {\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" if (parenthesized_expression "((uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0))" ( (binary_expression "(uVar22 == 0) || (iVar3 = uVar22 + uVar9, uVar9 == 0)" (parenthesized_expression "(uVar22 == 0)" ( (binary_expression "uVar22 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = uVar22 + uVar9, uVar9 == 0)" ( (comma_expression "iVar3 = uVar22 + uVar9, uVar9 == 0" (assignment_expression "iVar3 = uVar22 + uVar9" identifier = (binary_expression "uVar22 + uVar9" identifier + identifier)) , (binary_expression "uVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    sum->_mp_size = 0;\n    sum->_mp_exp = 0;\n    pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);\n    p_Var14 = (__mpf_struct *)v;\n    puVar26 = auStack_d0;\n  }" { (expression_statement "sum->_mp_size = 0;" (assignment_expression "sum->_mp_size = 0" (field_expression "sum->_mp_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "sum->_mp_exp = 0;" (assignment_expression "sum->_mp_exp = 0" (field_expression "sum->_mp_exp" identifier -> field_identifier) = number_literal) ;) (expression_statement "pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5);" (assignment_expression "pmVar4 = (mp_limb_t *)(uint)((int)uVar16 < (int)uVar5)" identifier = (cast_expression "(mp_limb_t *)(uint)((int)uVar16 < (int)uVar5)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)((int)uVar16 < (int)uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar16 < (int)uVar5)" ( (binary_expression "(int)uVar16 < (int)uVar5" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) (expression_statement "p_Var14 = (__mpf_struct *)v;" (assignment_expression "p_Var14 = (__mpf_struct *)v" identifier = (cast_expression "(__mpf_struct *)v" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar26 = auStack_d0;" (assignment_expression "puVar26 = auStack_d0" identifier = identifier) ;) }) (else_clause "else {\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" else (compound_statement "{\n    pmStack_a0 = (mp_limb_t *)0x0;\n    if ((uint)(iVar3 * 4) < 0x7f01) {\n      iVar7 = -(iVar3 * 4 + 7U & 0xfffffff8);\n      puVar26 = auStack_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }\n    pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    p_Stack_a4 = (__mpf_struct *)pmVar4;\n    if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }\n    uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);\n    uVar16 = uVar16 + 1;\n    p_Var12 = p_Stack_a4;\n    if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }\n    iVar7 = uVar9 - 1;\n    if (uVar9 != 0) {\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }\n    uVar18 = uVar18 ^ uVar20;\n    sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);\n    if ((int)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }\n    sum->_mp_size = uVar9;\n    pmVar4 = pmStack_a0;\n    if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" { (expression_statement "pmStack_a0 = (mp_limb_t *)0x0;" (assignment_expression "pmStack_a0 = (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_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)iVar3;\n    }\n    else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\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_d0 + iVar7;\n      pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);\n      p_Stack_a8 = (__mpf_struct *)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_d0 + iVar7;" (assignment_expression "puVar26 = auStack_d0 + iVar7" identifier = (binary_expression "auStack_d0 + iVar7" identifier + identifier)) ;) (expression_statement "pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7);" (assignment_expression "pmVar4 = (mp_limb_t *)((int)apcStack_b8 + iVar7)" identifier = (cast_expression "(mp_limb_t *)((int)apcStack_b8 + iVar7)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apcStack_b8 + iVar7)" ( (binary_expression "(int)apcStack_b8 + iVar7" (cast_expression "(int)apcStack_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "p_Stack_a8 = (__mpf_struct *)iVar3;" (assignment_expression "p_Stack_a8 = (__mpf_struct *)iVar3" identifier = (cast_expression "(__mpf_struct *)iVar3" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }" else (compound_statement "{\n      iStack_b0 = iVar3;\n      uStack_ac = uVar9;\n      p_Stack_a8 = p_Var12;\n      p_Stack_a4 = p_Var14;\n      pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);\n      uVar9 = uStack_ac;\n      p_Var12 = p_Stack_a8;\n      p_Var14 = p_Stack_a4;\n      p_Stack_a8 = (__mpf_struct *)iStack_b0;\n    }" { (expression_statement "iStack_b0 = iVar3;" (assignment_expression "iStack_b0 = iVar3" identifier = identifier) ;) (expression_statement "uStack_ac = uVar9;" (assignment_expression "uStack_ac = uVar9" identifier = identifier) ;) (expression_statement "p_Stack_a8 = p_Var12;" (assignment_expression "p_Stack_a8 = p_Var12" identifier = identifier) ;) (expression_statement "p_Stack_a4 = p_Var14;" (assignment_expression "p_Stack_a4 = p_Var14" identifier = identifier) ;) (expression_statement "pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0);" (assignment_expression "pmVar4 = (mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0)" identifier = (cast_expression "(mp_limb_t *)(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0)" ( (type_descriptor "mp_limb_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar27 + 0x7a980))(&pmStack_a0)" (parenthesized_expression "(**(code **)(pcVar27 + 0x7a980))" ( (pointer_expression "**(code **)(pcVar27 + 0x7a980)" * (pointer_expression "*(code **)(pcVar27 + 0x7a980)" * (cast_expression "(code **)(pcVar27 + 0x7a980)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7a980)" ( (binary_expression "pcVar27 + 0x7a980" identifier + number_literal) ))))) )) (argument_list "(&pmStack_a0)" ( (pointer_expression "&pmStack_a0" & identifier) ))))) ;) (expression_statement "uVar9 = uStack_ac;" (assignment_expression "uVar9 = uStack_ac" identifier = identifier) ;) (expression_statement "p_Var12 = p_Stack_a8;" (assignment_expression "p_Var12 = p_Stack_a8" identifier = identifier) ;) (expression_statement "p_Var14 = p_Stack_a4;" (assignment_expression "p_Var14 = p_Stack_a4" identifier = identifier) ;) (expression_statement "p_Stack_a8 = (__mpf_struct *)iStack_b0;" (assignment_expression "p_Stack_a8 = (__mpf_struct *)iStack_b0" identifier = (cast_expression "(__mpf_struct *)iStack_b0" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c);" (assignment_expression "pcVar27 = *(code **)(apcStack_b8[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7d8c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7d8c)" ( (binary_expression "apcStack_b8[0] + -0x7d8c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "p_Stack_a4 = (__mpf_struct *)pmVar4;" (assignment_expression "p_Stack_a4 = (__mpf_struct *)pmVar4" identifier = (cast_expression "(__mpf_struct *)pmVar4" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((int)uVar22 < (int)uVar9) {\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }\n    else {\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }" if (parenthesized_expression "((int)uVar22 < (int)uVar9)" ( (binary_expression "(int)uVar22 < (int)uVar9" (cast_expression "(int)uVar22" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar26 + 0x10) = uVar22;\n      iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);\n      p_Var14 = p_Var12;\n    }" { (expression_statement "*(uint *)(puVar26 + 0x10) = uVar22;" (assignment_expression "*(uint *)(puVar26 + 0x10) = uVar22" (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 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14);" (assignment_expression "iVar3 = (*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14)" identifier = (call_expression "(*pcVar27)(pmVar4,p_Var12,uVar9,p_Var14)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * 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 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);\n    }" else (compound_statement "{\n      *(uint *)(puVar26 + 0x10) = uVar9;\n      iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,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 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12);" (assignment_expression "iVar3 = (*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12)" identifier = (call_expression "(*pcVar27)(pmVar4,p_Var14,uVar22,p_Var12)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(pmVar4,p_Var14,uVar22,p_Var12)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0);" (assignment_expression "uVar9 = (int)p_Stack_a8 - (uint)(iVar3 == 0)" identifier = (binary_expression "(int)p_Stack_a8 - (uint)(iVar3 == 0)" (cast_expression "(int)p_Stack_a8" ( (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 "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (expression_statement "p_Var12 = p_Stack_a4;" (assignment_expression "p_Var12 = p_Stack_a4" identifier = identifier) ;) (if_statement "if ((int)uVar16 < (int)uVar9) {\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }" if (parenthesized_expression "((int)uVar16 < (int)uVar9)" ( (binary_expression "(int)uVar16 < (int)uVar9" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);\n      uVar9 = uVar16;\n    }" { (expression_statement "p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4);" (assignment_expression "p_Var12 = (__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4)" identifier = (cast_expression "(__mpf_struct *)((int)p_Stack_a4 + (uVar9 - uVar16) * 4)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p_Stack_a4 + (uVar9 - uVar16) * 4)" ( (binary_expression "(int)p_Stack_a4 + (uVar9 - uVar16) * 4" (cast_expression "(int)p_Stack_a4" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uVar9 - uVar16) * 4" (parenthesized_expression "(uVar9 - uVar16)" ( (binary_expression "uVar9 - uVar16" identifier - identifier) )) * number_literal)) )))) ;) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" 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 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      pmVar6 = sum->_mp_d;\n      mVar19 = *(mp_limb_t *)p_Var12;\n      pmVar4 = pmVar6;\n      if (iVar7 != 0) {\n        do {\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);\n        pmVar6 = pmVar6 + (uVar9 - 1);\n      }\n      *pmVar6 = mVar19;\n    }" { (expression_statement "pmVar6 = sum->_mp_d;" (assignment_expression "pmVar6 = sum->_mp_d" identifier = (field_expression "sum->_mp_d" identifier -> field_identifier)) ;) (expression_statement "mVar19 = *(mp_limb_t *)p_Var12;" (assignment_expression "mVar19 = *(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_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(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_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(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_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        } while (iVar7 != 0);" do (compound_statement "{\n          p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);\n          p_Var14 = (__mpf_struct *)(pmVar4 + 1);\n          *pmVar4 = mVar19;\n          iVar7 = iVar7 + -1;\n          mVar19 = *(mp_limb_t *)p_Var12;\n          pmVar4 = (mp_limb_t *)p_Var14;\n        }" { (expression_statement "p_Var12 = (__mpf_struct *)((int)p_Var12 + 4);" (assignment_expression "p_Var12 = (__mpf_struct *)((int)p_Var12 + 4)" identifier = (cast_expression "(__mpf_struct *)((int)p_Var12 + 4)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((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_struct *)(pmVar4 + 1);" (assignment_expression "p_Var14 = (__mpf_struct *)(pmVar4 + 1)" identifier = (cast_expression "(__mpf_struct *)(pmVar4 + 1)" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmVar4 + 1)" ( (binary_expression "pmVar4 + 1" identifier + number_literal) )))) ;) (expression_statement "*pmVar4 = mVar19;" (assignment_expression "*pmVar4 = mVar19" (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 "mVar19 = *(mp_limb_t *)p_Var12;" (assignment_expression "mVar19 = *(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 = mVar19;" (assignment_expression "*pmVar6 = mVar19" (pointer_expression "*pmVar6" * identifier) = identifier) ;) })) (expression_statement "uVar18 = uVar18 ^ uVar20;" (assignment_expression "uVar18 = uVar18 ^ uVar20" identifier = (binary_expression "uVar18 ^ uVar20" identifier ^ identifier)) ;) (expression_statement "sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0);" (assignment_expression "sum->_mp_exp = (((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0)" (field_expression "sum->_mp_exp" identifier -> field_identifier) = (binary_expression "(((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp) - (uint)(iVar3 == 0)" (parenthesized_expression "(((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp)" ( (binary_expression "((__mpf_struct *)v)->_mp_exp + p_Var8->_mp_exp" (field_expression "((__mpf_struct *)v)->_mp_exp" (parenthesized_expression "((__mpf_struct *)v)" ( (cast_expression "(__mpf_struct *)v" ( (type_descriptor "__mpf_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) 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)uVar18 < 0) {\n      uVar9 = -uVar9;\n    }" if (parenthesized_expression "((int)uVar18 < 0)" ( (binary_expression "(int)uVar18 < 0" (cast_expression "(int)uVar18" ( (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 "sum->_mp_size = uVar9;" (assignment_expression "sum->_mp_size = uVar9" (field_expression "sum->_mp_size" identifier -> field_identifier) = identifier) ;) (expression_statement "pmVar4 = pmStack_a0;" (assignment_expression "pmVar4 = pmStack_a0" identifier = identifier) ;) (if_statement "if (pmStack_a0 != (mp_limb_t *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" if (parenthesized_expression "(pmStack_a0 != (mp_limb_t *)0x0)" ( (binary_expression "pmStack_a0 != (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 **)(apcStack_b8[0] + -0x7a2c))();\n    }" { (expression_statement "(**(code **)(apcStack_b8[0] + -0x7a2c))();" (call_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))()" (parenthesized_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))" ( (pointer_expression "**(code **)(apcStack_b8[0] + -0x7a2c)" * (pointer_expression "*(code **)(apcStack_b8[0] + -0x7a2c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7a2c)" ( (binary_expression "apcStack_b8[0] + -0x7a2c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_9c == *piVar23) {\n    return;\n  }" if (parenthesized_expression "(iStack_9c == *piVar23)" ( (binary_expression "iStack_9c == *piVar23" identifier == (pointer_expression "*piVar23" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70);" (assignment_expression "pcVar27 = *(code **)(apcStack_b8[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7b70)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7b70)" ( (binary_expression "apcStack_b8[0] + -0x7b70" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar28 = 0x1cbf4;" (assignment_expression "uVar28 = 0x1cbf4" identifier = number_literal) ;) (expression_statement "(*pcVar27)();" (call_expression "(*pcVar27)()" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -0x28) = pcVar27 + 0x82440;" (assignment_expression "*(code **)(puVar26 + -0x28) = pcVar27 + 0x82440" (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 "pcVar27 + 0x82440" identifier + number_literal)) ;) (expression_statement "*(mpf_ptr *)(puVar26 + -0x14) = sum;" (assignment_expression "*(mpf_ptr *)(puVar26 + -0x14) = sum" (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) = uVar28;" (assignment_expression "*(undefined4 *)(puVar26 + -4) = uVar28" (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 "*(ulong *)(puVar26 + -8) = v;" (assignment_expression "*(ulong *)(puVar26 + -8) = v" (pointer_expression "*(ulong *)(puVar26 + -8)" * (cast_expression "(ulong *)(puVar26 + -8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(__mpf_struct **)(puVar26 + -0xc) = p_Var8;" (assignment_expression "*(__mpf_struct **)(puVar26 + -0xc) = p_Var8" (pointer_expression "*(__mpf_struct **)(puVar26 + -0xc)" * (cast_expression "(__mpf_struct **)(puVar26 + -0xc)" ( (type_descriptor "__mpf_struct **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar26 + -0x10) = uVar20;" (assignment_expression "*(uint *)(puVar26 + -0x10) = uVar20" (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) = uVar18;" (assignment_expression "*(uint *)(puVar26 + -0x18) = uVar18" (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) = uVar16;" (assignment_expression "*(uint *)(puVar26 + -0x1c) = uVar16" (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 "mVar19 = p_Var14->_mp_size;" (assignment_expression "mVar19 = p_Var14->_mp_size" identifier = (field_expression "p_Var14->_mp_size" identifier -> field_identifier)) ;) (if_statement "if ((uVar9 == 0) || (mVar19 == 0)) {\n    pmVar4[1] = 0;\n    pmVar4[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar9 == 0) || (mVar19 == 0))" ( (binary_expression "(uVar9 == 0) || (mVar19 == 0)" (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(mVar19 == 0)" ( (binary_expression "mVar19 == 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)mVar19 < 0) {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar21 = (uint *)pmVar4[3];\n    iVar3 = -mVar19 - mVar17;\n    mVar11 = -mVar19;\n    if (iVar3 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);\n    uVar18 = *puVar21;\n    *puVar21 = uVar16 + uVar18;\n    if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }\n  }\n  else {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }" if (parenthesized_expression "((int)mVar19 < 0)" ( (binary_expression "(int)mVar19 < 0" (cast_expression "(int)mVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    puVar21 = (uint *)pmVar4[3];\n    iVar3 = -mVar19 - mVar17;\n    mVar11 = -mVar19;\n    if (iVar3 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar7 = iVar3 + -1;\n    lVar1 = (ulonglong)uVar9 * (ulonglong)pmVar6[iVar7];\n    pmVar13 = pmVar6 + iVar3;\n    while( true ) {\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }\n    uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17);\n    uVar18 = *puVar21;\n    *puVar21 = uVar16 + uVar18;\n    if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }\n  }" { (expression_statement "mVar17 = *pmVar4;" (assignment_expression "mVar17 = *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 "puVar21 = (uint *)pmVar4[3];" (assignment_expression "puVar21 = (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 = -mVar19 - mVar17;" (assignment_expression "iVar3 = -mVar19 - mVar17" identifier = (binary_expression "-mVar19 - mVar17" (unary_expression "-mVar19" - identifier) - identifier)) ;) (expression_statement "mVar11 = -mVar19;" (assignment_expression "mVar11 = -mVar19" identifier = (unary_expression "-mVar19" - identifier)) ;) (if_statement "if (iVar3 < 1) goto LAB_0001cda8;" if (parenthesized_expression "(iVar3 < 1)" ( (binary_expression "iVar3 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cda8;" goto statement_identifier ;)) (labeled_statement "LAB_0001cc68:\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      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar7 = iVar7 + -1;\n      pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n      if (iVar7 == -1) break;\n      puVar10 = pmVar13 + -2;\n      pmVar13 = pmVar13 + -1;\n      lVar1 = lVar1 + ((ulonglong)uVar9 * (ulonglong)*puVar10 >> 0x20);\n      uVar16 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar25 = *(code **)(pcVar27 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));\n    }" { (expression_statement "uVar16 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar16 = (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 **)(pcVar27 + 0x7a4a4);" (assignment_expression "pcVar25 = *(code **)(pcVar27 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar27 + 0x7a4a4)" * (cast_expression "(code **)(pcVar27 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7a4a4)" ( (binary_expression "pcVar27 + 0x7a4a4" 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 "uVar16 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar16 = (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 **)(pcVar27 + 0x7a4a4);\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 **)(pcVar27 + 0x7a4a4);\n        break;\n      }" { (expression_statement "pcVar25 = *(code **)(pcVar27 + 0x7a4a4);" (assignment_expression "pcVar25 = *(code **)(pcVar27 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar27 + 0x7a4a4)" * (cast_expression "(code **)(pcVar27 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7a4a4)" ( (binary_expression "pcVar27 + 0x7a4a4" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10));" (assignment_expression "lVar1 = CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10))" identifier = (call_expression "CONCAT44(uVar16,(int)((ulonglong)uVar9 * (ulonglong)*puVar10))" identifier (argument_list "(uVar16,(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)(puVar21,pmVar6 + iVar3,mVar17);" (assignment_expression "uVar5 = (*pcVar25)(puVar21,pmVar6 + iVar3,mVar17)" identifier = (call_expression "(*pcVar25)(puVar21,pmVar6 + iVar3,mVar17)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(puVar21,pmVar6 + iVar3,mVar17)" ( identifier , (binary_expression "pmVar6 + iVar3" identifier + identifier) , identifier )))) ;) (expression_statement "uVar18 = *puVar21;" (assignment_expression "uVar18 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "*puVar21 = uVar16 + uVar18;" (assignment_expression "*puVar21 = uVar16 + uVar18" (pointer_expression "*puVar21" * identifier) = (binary_expression "uVar16 + uVar18" identifier + identifier)) ;) (if_statement "if (uVar16 + uVar18 < uVar16) {\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }" if (parenthesized_expression "(uVar16 + uVar18 < uVar16)" ( (binary_expression "uVar16 + uVar18 < uVar16" (binary_expression "uVar16 + uVar18" identifier + identifier) < identifier) )) (compound_statement "{\n      if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }\n      uVar16 = puVar21[1];\n      puVar21[1] = uVar16 + 1;\n      if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }\n    }" { (if_statement "if ((int)mVar17 < 2) {\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }" if (parenthesized_expression "((int)mVar17 < 2)" ( (binary_expression "(int)mVar17 < 2" (cast_expression "(int)mVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);\n        mVar11 = mVar17 + uVar16;\n        puVar21[mVar17] = uVar5 + 1;\n        pmVar4[2] = p_Var14->_mp_exp + uVar16;\n        goto joined_r0x0001cddc;\n      }" { (labeled_statement "LAB_0001cd34:\n        uVar16 = (uint)(uVar5 + 1 != 0);" statement_identifier : (expression_statement "uVar16 = (uint)(uVar5 + 1 != 0);" (assignment_expression "uVar16 = (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 = mVar17 + uVar16;" (assignment_expression "mVar11 = mVar17 + uVar16" identifier = (binary_expression "mVar17 + uVar16" identifier + identifier)) ;) (expression_statement "puVar21[mVar17] = uVar5 + 1;" (assignment_expression "puVar21[mVar17] = uVar5 + 1" (subscript_expression "puVar21[mVar17]" identifier [ identifier ]) = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "pmVar4[2] = p_Var14->_mp_exp + uVar16;" (assignment_expression "pmVar4[2] = p_Var14->_mp_exp + uVar16" (subscript_expression "pmVar4[2]" identifier [ number_literal ]) = (binary_expression "p_Var14->_mp_exp + uVar16" (field_expression "p_Var14->_mp_exp" identifier -> field_identifier) + identifier)) ;) (goto_statement "goto joined_r0x0001cddc;" goto statement_identifier ;) })) (expression_statement "uVar16 = puVar21[1];" (assignment_expression "uVar16 = puVar21[1]" identifier = (subscript_expression "puVar21[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[1] = uVar16 + 1;" (assignment_expression "puVar21[1] = uVar16 + 1" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (if_statement "if (uVar16 + 1 == 0) {\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }" if (parenthesized_expression "(uVar16 + 1 == 0)" ( (binary_expression "uVar16 + 1 == 0" (binary_expression "uVar16 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        mVar11 = 2;\n        puVar10 = puVar21 + 2;\n        do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);\n      }" { (expression_statement "mVar11 = 2;" (assignment_expression "mVar11 = 2" identifier = number_literal) ;) (expression_statement "puVar10 = puVar21 + 2;" (assignment_expression "puVar10 = puVar21 + 2" identifier = (binary_expression "puVar21 + 2" identifier + number_literal)) ;) (do_statement "do {\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        } while (uVar16 + 1 == 0);" do (compound_statement "{\n          if (mVar11 == mVar17) goto LAB_0001cd34;\n          uVar16 = *puVar10;\n          mVar11 = mVar11 + 1;\n          *puVar10 = uVar16 + 1;\n          puVar10 = puVar10 + 1;\n        }" { (if_statement "if (mVar11 == mVar17) goto LAB_0001cd34;" if (parenthesized_expression "(mVar11 == mVar17)" ( (binary_expression "mVar11 == mVar17" identifier == identifier) )) (goto_statement "goto LAB_0001cd34;" goto statement_identifier ;)) (expression_statement "uVar16 = *puVar10;" (assignment_expression "uVar16 = *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 = uVar16 + 1;" (assignment_expression "*puVar10 = uVar16 + 1" (pointer_expression "*puVar10" * identifier) = (binary_expression "uVar16 + 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 "(uVar16 + 1 == 0)" ( (binary_expression "uVar16 + 1 == 0" (binary_expression "uVar16 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }) (else_clause "else {\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }" else (compound_statement "{\n    mVar17 = *pmVar4;\n    pmVar6 = p_Var14->_mp_d;\n    iVar3 = mVar19 - mVar17;\n    puVar21 = (uint *)pmVar4[3];\n    mVar11 = mVar19;\n    if (0 < iVar3) goto LAB_0001cc68;\nLAB_0001cda8:\n    mVar17 = mVar11;\n    uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);\n  }" { (expression_statement "mVar17 = *pmVar4;" (assignment_expression "mVar17 = *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 = mVar19 - mVar17;" (assignment_expression "iVar3 = mVar19 - mVar17" identifier = (binary_expression "mVar19 - mVar17" identifier - identifier)) ;) (expression_statement "puVar21 = (uint *)pmVar4[3];" (assignment_expression "puVar21 = (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 = mVar19;" (assignment_expression "mVar11 = mVar19" identifier = identifier) ;) (if_statement "if (0 < iVar3) goto LAB_0001cc68;" if (parenthesized_expression "(0 < iVar3)" ( (binary_expression "0 < iVar3" number_literal < identifier) )) (goto_statement "goto LAB_0001cc68;" goto statement_identifier ;)) (labeled_statement "LAB_0001cda8:\n    mVar17 = mVar11;" statement_identifier : (expression_statement "mVar17 = mVar11;" (assignment_expression "mVar17 = mVar11" identifier = identifier) ;)) (expression_statement "uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17);" (assignment_expression "uVar5 = (**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17)" identifier = (call_expression "(**(code **)(pcVar27 + 0x7a4a4))(puVar21,pmVar6,mVar17)" (parenthesized_expression "(**(code **)(pcVar27 + 0x7a4a4))" ( (pointer_expression "**(code **)(pcVar27 + 0x7a4a4)" * (pointer_expression "*(code **)(pcVar27 + 0x7a4a4)" * (cast_expression "(code **)(pcVar27 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7a4a4)" ( (binary_expression "pcVar27 + 0x7a4a4" identifier + number_literal) ))))) )) (argument_list "(puVar21,pmVar6,mVar17)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "mVar11 = mVar17 + (uVar5 != 0);" (assignment_expression "mVar11 = mVar17 + (uVar5 != 0)" identifier = (binary_expression "mVar17 + (uVar5 != 0)" identifier + (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )))) ;) (expression_statement "puVar21[mVar17] = uVar5;" (assignment_expression "puVar21[mVar17] = uVar5" (subscript_expression "puVar21[mVar17]" 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_r0x0001cddc:\n  if ((int)mVar19 < 0) {\n    mVar11 = -mVar11;\n  }" statement_identifier : (if_statement "if ((int)mVar19 < 0) {\n    mVar11 = -mVar11;\n  }" if (parenthesized_expression "((int)mVar19 < 0)" ( (binary_expression "(int)mVar19 < 0" (cast_expression "(int)mVar19" ( (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_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\n  return;\n}\n\n" (function_definition "void __gmpf_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\n  return;\n}" primitive_type (function_declarator "__gmpf_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\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 iVar9;" primitive_type identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * 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 "undefined1 *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "undefined4 uVar29;" type_identifier identifier ;) (declaration "undefined1 auStack_d0 [24];" type_identifier (array_declarator "auStack_d0 [24]" identifier [ number_literal ]) ;) (declaration "code *apcStack_b8 [2];" type_identifier (pointer_declarator "*apcStack_b8 [2]" * (array_declarator "apcStack_b8 [2]" identifier [ number_literal ])) ;) (declaration "int iStack_b0;" primitive_type identifier ;) (declaration "uint uStack_ac;" type_identifier identifier ;) (declaration "undefined4 *puStack_a8;" type_identifier (pointer_declarator "*puStack_a8" * identifier) ;) (declaration "undefined4 *puStack_a4;" type_identifier (pointer_declarator "*puStack_a4" * identifier) ;) (declaration "int *piStack_a0;" primitive_type (pointer_declarator "*piStack_a0" * identifier) ;) (declaration "int iStack_9c;" primitive_type identifier ;) (declaration "int *piStack_98;" primitive_type (pointer_declarator "*piStack_98" * identifier) ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "undefined4 uStack_54;" type_identifier identifier ;) (declaration "undefined4 uStack_50;" type_identifier identifier ;) (declaration "undefined4 uStack_4c;" type_identifier identifier ;) (declaration "int *piStack_48;" primitive_type (pointer_declarator "*piStack_48" * identifier) ;) (declaration "int iStack_44;" primitive_type identifier ;) (declaration "undefined *puStack_40;" type_identifier (pointer_declarator "*puStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "undefined4 *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 **local_10;" type_identifier (pointer_declarator "**local_10" * (pointer_declarator "*local_10" * identifier)) ;) (declaration "int local_c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" if (parenthesized_expression "(param_3 == (undefined4 *)0x0)" ( (binary_expression "param_3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR___gmpf_set_00097574)();\n  }" { (expression_statement "(*(code *)PTR___gmpf_set_00097574)();" (call_expression "(*(code *)PTR___gmpf_set_00097574)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_00097574)" ( (pointer_expression "*(code *)PTR___gmpf_set_00097574" * (cast_expression "(code *)PTR___gmpf_set_00097574" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" else (compound_statement "{\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" { (expression_statement "local_10 = &local_20;" (assignment_expression "local_10 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "puVar10 = &uStack_1c;" (assignment_expression "puVar10 = &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_3;" (assignment_expression "local_20 = param_3" identifier = identifier) ;) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" ( (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" * (cast_expression "(code *)PTR___gmpf_sub_0009725c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_3 = puVar10;" (assignment_expression "param_3 = puVar10" identifier = identifier) ;) }))) (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 "pcVar28 = __gmpf_ui_sub;" (assignment_expression "pcVar28 = __gmpf_ui_sub" identifier = identifier) ;) (expression_statement "puVar25 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_000974d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_40 = puVar3;" (assignment_expression "puStack_40 = puVar3" identifier = identifier) ;) (expression_statement "piVar17 = *(int **)(puVar25 + 0x7ac60);" (assignment_expression "piVar17 = *(int **)(puVar25 + 0x7ac60)" identifier = (pointer_expression "*(int **)(puVar25 + 0x7ac60)" * (cast_expression "(int **)(puVar25 + 0x7ac60)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7ac60)" ( (binary_expression "puVar25 + 0x7ac60" identifier + number_literal) ))))) ;) (expression_statement "iStack_44 = *piVar17;" (assignment_expression "iStack_44 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "puVar10 = param_3;" (assignment_expression "puVar10 = param_3" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar28;" (assignment_expression "pcStack_3c = pcVar28" identifier = identifier) ;) (if_statement "if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    (**(code **)(puVar25 + 0x7aa00))();\n  }" { (expression_statement "(**(code **)(puVar25 + 0x7aa00))();" (call_expression "(**(code **)(puVar25 + 0x7aa00))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7aa00))" ( (pointer_expression "**(code **)(puVar25 + 0x7aa00)" * (pointer_expression "*(code **)(puVar25 + 0x7aa00)" * (cast_expression "(code **)(puVar25 + 0x7aa00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7aa00)" ( (binary_expression "puVar25 + 0x7aa00" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }) (else_clause "else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" else (compound_statement "{\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" { (expression_statement "piStack_48 = &iStack_58;" (assignment_expression "piStack_48 = &iStack_58" identifier = (pointer_expression "&iStack_58" & identifier)) ;) (expression_statement "param_3 = &uStack_54;" (assignment_expression "param_3 = &uStack_54" identifier = (pointer_expression "&uStack_54" & identifier)) ;) (expression_statement "uStack_50 = 1;" (assignment_expression "uStack_50 = 1" identifier = number_literal) ;) (expression_statement "uStack_4c = 1;" (assignment_expression "uStack_4c = 1" identifier = number_literal) ;) (expression_statement "iStack_58 = param_2;" (assignment_expression "iStack_58 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(puVar25 + 0x7a97c))();" (call_expression "(**(code **)(puVar25 + 0x7a97c))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7a97c))" ( (pointer_expression "**(code **)(puVar25 + 0x7a97c)" * (pointer_expression "*(code **)(puVar25 + 0x7a97c)" * (cast_expression "(code **)(puVar25 + 0x7a97c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7a97c)" ( (binary_expression "puVar25 + 0x7a97c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (if_statement "if (iStack_44 == *piVar17) {\n    return;\n  }" if (parenthesized_expression "(iStack_44 == *piVar17)" ( (binary_expression "iStack_44 == *piVar17" identifier == (pointer_expression "*piVar17" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = *(code **)(puVar25 + 0x7abf0);" (assignment_expression "pcVar28 = *(code **)(puVar25 + 0x7abf0)" identifier = (pointer_expression "*(code **)(puVar25 + 0x7abf0)" * (cast_expression "(code **)(puVar25 + 0x7abf0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar25 + 0x7abf0)" ( (binary_expression "puVar25 + 0x7abf0" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "apcStack_b8[0] = pcVar28 + 0x826d0;" (assignment_expression "apcStack_b8[0] = pcVar28 + 0x826d0" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) = (binary_expression "pcVar28 + 0x826d0" identifier + number_literal)) ;) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" identifier = identifier) ;) (expression_statement "piVar24 = *(int **)(pcVar28 + 0x7abd0);" (assignment_expression "piVar24 = *(int **)(pcVar28 + 0x7abd0)" identifier = (pointer_expression "*(int **)(pcVar28 + 0x7abd0)" * (cast_expression "(int **)(pcVar28 + 0x7abd0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7abd0)" ( (binary_expression "pcVar28 + 0x7abd0" 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 "iStack_9c = *piVar24;" (assignment_expression "iStack_9c = *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 = puVar10[1];" (assignment_expression "uVar21 = puVar10[1]" identifier = (subscript_expression "puVar10[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 "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" identifier = identifier) ;) (if_statement "if ((int)uVar21 < 0) {\n    uVar11 = -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    uVar11 = -uVar21;\n  }" { (expression_statement "uVar11 = -uVar21;" (assignment_expression "uVar11 = -uVar21" identifier = (unary_expression "-uVar21" - identifier)) ;) })) (expression_statement "puVar15 = (undefined4 *)param_3[3];" (assignment_expression "puVar15 = (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 "puVar13 = (undefined4 *)puVar10[3];" (assignment_expression "puVar13 = (undefined4 *)puVar10[3]" identifier = (cast_expression "(undefined4 *)puVar10[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[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    puVar15 = puVar15 + (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    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" { (expression_statement "puVar15 = puVar15 + (uVar7 - uVar18);" (assignment_expression "puVar15 = puVar15 + (uVar7 - uVar18)" identifier = (binary_expression "puVar15 + (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)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" if (parenthesized_expression "((int)uVar18 < (int)uVar11)" ( (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" { (expression_statement "puVar13 = puVar13 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puVar13 + (uVar11 - uVar18)" identifier = (binary_expression "puVar13 + (uVar11 - uVar18)" identifier + (parenthesized_expression "(uVar11 - uVar18)" ( (binary_expression "uVar11 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "piStack_98 = piVar17;" (assignment_expression "piStack_98 = piVar17" identifier = identifier) ;) (if_statement "if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" if (parenthesized_expression "((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0))" ( (binary_expression "(uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)" (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar16 = uVar23 + uVar11, uVar11 == 0)" ( (comma_expression "iVar16 = uVar23 + uVar11, uVar11 == 0" (assignment_expression "iVar16 = uVar23 + uVar11" identifier = (binary_expression "uVar23 + uVar11" identifier + identifier)) , (binary_expression "uVar11 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\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 "piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar17 = (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 "puVar15 = param_3;" (assignment_expression "puVar15 = param_3" identifier = identifier) ;) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" identifier = identifier) ;) }) (else_clause "else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" else (compound_statement "{\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" { (expression_statement "piStack_a0 = (int *)0x0;" (assignment_expression "piStack_a0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" if (parenthesized_expression "((uint)(iVar16 * 4) < 0x7f01)" ( (binary_expression "(uint)(iVar16 * 4) < 0x7f01" (call_expression "(uint)(iVar16 * 4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 * 4)" ( (binary_expression "iVar16 * 4" identifier * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }" { (expression_statement "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8)" identifier = (unary_expression "-(iVar16 * 4 + 7U & 0xfffffff8)" - (parenthesized_expression "(iVar16 * 4 + 7U & 0xfffffff8)" ( (binary_expression "iVar16 * 4 + 7U & 0xfffffff8" (binary_expression "iVar16 * 4 + 7U" (binary_expression "iVar16 * 4" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar27 = auStack_d0 + iVar14;" (assignment_expression "puVar27 = auStack_d0 + iVar14" identifier = (binary_expression "auStack_d0 + iVar14" identifier + identifier)) ;) (expression_statement "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);" (assignment_expression "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14)" identifier = (cast_expression "(undefined4 *)((int)apcStack_b8 + iVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)apcStack_b8 + iVar14)" ( (binary_expression "(int)apcStack_b8 + iVar14" (cast_expression "(int)apcStack_b8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puStack_a8 = (undefined4 *)iVar16;" (assignment_expression "puStack_a8 = (undefined4 *)iVar16" identifier = (cast_expression "(undefined4 *)iVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" else (compound_statement "{\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" { (expression_statement "iStack_b0 = iVar16;" (assignment_expression "iStack_b0 = iVar16" identifier = identifier) ;) (expression_statement "uStack_ac = uVar11;" (assignment_expression "uStack_ac = uVar11" identifier = identifier) ;) (expression_statement "puStack_a8 = puVar13;" (assignment_expression "puStack_a8 = puVar13" identifier = identifier) ;) (expression_statement "puStack_a4 = puVar15;" (assignment_expression "puStack_a4 = puVar15" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" identifier = (cast_expression "(undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a980))" ( (pointer_expression "**(code **)(pcVar28 + 0x7a980)" * (pointer_expression "*(code **)(pcVar28 + 0x7a980)" * (cast_expression "(code **)(pcVar28 + 0x7a980)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a980)" ( (binary_expression "pcVar28 + 0x7a980" identifier + number_literal) ))))) )) (argument_list "(&piStack_a0)" ( (pointer_expression "&piStack_a0" & identifier) ))))) ;) (expression_statement "uVar11 = uStack_ac;" (assignment_expression "uVar11 = uStack_ac" identifier = identifier) ;) (expression_statement "puVar13 = puStack_a8;" (assignment_expression "puVar13 = puStack_a8" identifier = identifier) ;) (expression_statement "puVar15 = puStack_a4;" (assignment_expression "puVar15 = puStack_a4" identifier = identifier) ;) (expression_statement "puStack_a8 = (undefined4 *)iStack_b0;" (assignment_expression "puStack_a8 = (undefined4 *)iStack_b0" identifier = (cast_expression "(undefined4 *)iStack_b0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7d8c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7d8c)" ( (binary_expression "apcStack_b8[0] + -0x7d8c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "puStack_a4 = puVar5;" (assignment_expression "puStack_a4 = puVar5" identifier = identifier) ;) (if_statement "if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" if (parenthesized_expression "((int)uVar23 < (int)uVar11)" ( (binary_expression "(int)uVar23 < (int)uVar11" (cast_expression "(int)uVar23" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }" { (expression_statement "*(uint *)(puVar27 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar27 + 0x10)" * (cast_expression "(uint *)(puVar27 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x10)" ( (binary_expression "puVar27 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15)" identifier = (call_expression "(*pcVar28)(puVar5,puVar13,uVar11,puVar15)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(puVar5,puVar13,uVar11,puVar15)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" identifier = identifier) ;) }) (else_clause "else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" else (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" { (expression_statement "*(uint *)(puVar27 + 0x10) = uVar11;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar11" (pointer_expression "*(uint *)(puVar27 + 0x10)" * (cast_expression "(uint *)(puVar27 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x10)" ( (binary_expression "puVar27 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13)" identifier = (call_expression "(*pcVar28)(puVar5,puVar15,uVar23,puVar13)" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "(puVar5,puVar15,uVar23,puVar13)" ( identifier , identifier , identifier , identifier )))) ;) }))) (expression_statement "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);" (assignment_expression "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0)" identifier = (binary_expression "(int)puStack_a8 - (uint)(iVar16 == 0)" (cast_expression "(int)puStack_a8" ( (type_descriptor "int" primitive_type) ) identifier) - (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))))) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar13 = puStack_a4;" (assignment_expression "puVar13 = puStack_a4" identifier = identifier) ;) (if_statement "if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" if (parenthesized_expression "((int)uVar18 < (int)uVar11)" ( (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" { (expression_statement "puVar13 = puStack_a4 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puStack_a4 + (uVar11 - uVar18)" identifier = (binary_expression "puStack_a4 + (uVar11 - uVar18)" identifier + (parenthesized_expression "(uVar11 - uVar18)" ( (binary_expression "uVar11 - uVar18" identifier - identifier) )))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) })) (expression_statement "iVar14 = uVar11 - 1;" (assignment_expression "iVar14 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 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 = *puVar13;" (assignment_expression "uVar29 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" identifier = identifier) ;) (if_statement "if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" { (do_statement "do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);" do (compound_statement "{\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        }" { (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar15 = puVar5 + 1;" (assignment_expression "puVar15 = 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 "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" identifier = (binary_expression "iVar14 + -1" identifier + number_literal)) ;) (expression_statement "uVar29 = *puVar13;" (assignment_expression "uVar29 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5 = puVar15;" (assignment_expression "puVar5 = puVar15" identifier = identifier) ;) }) while (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) ;) (expression_statement "puVar4 = puVar4 + (uVar11 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar11 - 1)" identifier = (binary_expression "puVar4 + (uVar11 - 1)" identifier + (parenthesized_expression "(uVar11 - 1)" ( (binary_expression "uVar11 - 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] + puVar10[2]) - (uint)(iVar16 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "(param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (parenthesized_expression "(param_3[2] + puVar10[2])" ( (binary_expression "param_3[2] + puVar10[2]" (subscript_expression "param_3[2]" identifier [ number_literal ]) + (subscript_expression "puVar10[2]" identifier [ number_literal ])) )) - (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))))) ;) (if_statement "if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\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      uVar11 = -uVar11;\n    }" { (expression_statement "uVar11 = -uVar11;" (assignment_expression "uVar11 = -uVar11" identifier = (unary_expression "-uVar11" - identifier)) ;) })) (expression_statement "param_1[1] = uVar11;" (assignment_expression "param_1[1] = uVar11" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar17 = piStack_a0;" (assignment_expression "piVar17 = piStack_a0" identifier = identifier) ;) (if_statement "if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" if (parenthesized_expression "(piStack_a0 != (int *)0x0)" ( (binary_expression "piStack_a0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" { (expression_statement "(**(code **)(apcStack_b8[0] + -0x7a2c))();" (call_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))()" (parenthesized_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))" ( (pointer_expression "**(code **)(apcStack_b8[0] + -0x7a2c)" * (pointer_expression "*(code **)(apcStack_b8[0] + -0x7a2c)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7a2c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7a2c)" ( (binary_expression "apcStack_b8[0] + -0x7a2c" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) }))) (if_statement "if (iStack_9c == *piVar24) {\n    return;\n  }" if (parenthesized_expression "(iStack_9c == *piVar24)" ( (binary_expression "iStack_9c == *piVar24" identifier == (pointer_expression "*piVar24" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70)" identifier = (pointer_expression "*(code **)(apcStack_b8[0] + -0x7b70)" * (cast_expression "(code **)(apcStack_b8[0] + -0x7b70)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(apcStack_b8[0] + -0x7b70)" ( (binary_expression "apcStack_b8[0] + -0x7b70" (subscript_expression "apcStack_b8[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar29 = 0x1cbf4;" (assignment_expression "uVar29 = 0x1cbf4" identifier = number_literal) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440" (pointer_expression "*(code **)(puVar27 + -0x28)" * (cast_expression "(code **)(puVar27 + -0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x28)" ( (binary_expression "puVar27 + -0x28" identifier + number_literal) )))) = (binary_expression "pcVar28 + 0x82440" identifier + number_literal)) ;) (expression_statement "*(uint **)(puVar27 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar27 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar27 + -0x14)" * (cast_expression "(uint **)(puVar27 + -0x14)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0x14)" ( (binary_expression "puVar27 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" * (cast_expression "(undefined4 *)(puVar27 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -4)" ( (binary_expression "puVar27 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar27 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar27 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar27 + -8)" * (cast_expression "(undefined4 **)(puVar27 + -8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -8)" ( (binary_expression "puVar27 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar27 + -0xc) = puVar10;" (assignment_expression "*(undefined4 **)(puVar27 + -0xc) = puVar10" (pointer_expression "*(undefined4 **)(puVar27 + -0xc)" * (cast_expression "(undefined4 **)(puVar27 + -0xc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + -0xc)" ( (binary_expression "puVar27 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar27 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar27 + -0x10)" * (cast_expression "(uint *)(puVar27 + -0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x10)" ( (binary_expression "puVar27 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar27 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar27 + -0x18)" * (cast_expression "(uint *)(puVar27 + -0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x18)" ( (binary_expression "puVar27 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(puVar27 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar27 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar27 + -0x1c)" * (cast_expression "(uint *)(puVar27 + -0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + -0x1c)" ( (binary_expression "puVar27 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = puVar15[1];" (assignment_expression "iVar16 = puVar15[1]" identifier = (subscript_expression "puVar15[1]" identifier [ number_literal ])) ;) (if_statement "if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" if (parenthesized_expression "((uVar11 == 0) || (iVar16 == 0))" ( (binary_expression "(uVar11 == 0) || (iVar16 == 0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) ))) )) (compound_statement "{\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" { (expression_statement "piVar17[1] = 0;" (assignment_expression "piVar17[1] = 0" (subscript_expression "piVar17[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar17[2] = 0;" (assignment_expression "piVar17[2] = 0" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }" { (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" identifier = (subscript_expression "puVar15[3]" identifier [ number_literal ])) ;) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" identifier = (cast_expression "(uint *)piVar17[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = -iVar16 - iVar19;" (assignment_expression "iVar6 = -iVar16 - iVar19" identifier = (binary_expression "-iVar16 - iVar19" (unary_expression "-iVar16" - identifier) - identifier)) ;) (expression_statement "iVar14 = -iVar16;" (assignment_expression "iVar14 = -iVar16" identifier = (unary_expression "-iVar16" - identifier)) ;) (if_statement "if (iVar6 < 1) goto LAB_0001cda8;" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0001cda8;" goto statement_identifier ;)) (labeled_statement "LAB_0001cc68:\n    iVar9 = iVar6 + -1;" statement_identifier : (expression_statement "iVar9 = iVar6 + -1;" (assignment_expression "iVar9 = 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)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(ulonglong)" ( identifier ))) * (cast_expression "(uint *)(iVar8 + iVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar9 * 4)" ( (binary_expression "iVar8 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" identifier = identifier) ;) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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 "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) ;) (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) break;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar12 = (uint *)(iVar14 + -8);" (assignment_expression "puVar12 = (uint *)(iVar14 + -8)" identifier = (cast_expression "(uint *)(iVar14 + -8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + -8)" ( (binary_expression "iVar14 + -8" identifier + number_literal) )))) ;) (expression_statement "iVar14 = iVar14 + -4;" (assignment_expression "iVar14 = iVar14 + -4" identifier = (binary_expression "iVar14 + -4" identifier + number_literal)) ;) (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)*puVar12" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" ( (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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }" { (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" identifier = (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" 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 = (*pcVar26)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar26)(puVar22,iVar6,iVar19)" identifier = (call_expression "(*pcVar26)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * 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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }" { (if_statement "if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" if (parenthesized_expression "(iVar19 < 2)" ( (binary_expression "iVar19 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" { (labeled_statement "LAB_0001cd34:\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 "iVar14 = iVar19 + uVar18;" (assignment_expression "iVar14 = 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 "piVar17[2] = puVar15[2] + uVar18;" (assignment_expression "piVar17[2] = puVar15[2] + uVar18" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (binary_expression "puVar15[2] + uVar18" (subscript_expression "puVar15[2]" identifier [ number_literal ]) + identifier)) ;) (goto_statement "goto joined_r0x0001cddc;" 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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }" { (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" identifier = number_literal) ;) (expression_statement "puVar12 = puVar22 + 2;" (assignment_expression "puVar12 = puVar22 + 2" identifier = (binary_expression "puVar22 + 2" identifier + number_literal)) ;) (do_statement "do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);" do (compound_statement "{\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        }" { (if_statement "if (iVar14 == iVar19) goto LAB_0001cd34;" if (parenthesized_expression "(iVar14 == iVar19)" ( (binary_expression "iVar14 == iVar19" identifier == identifier) )) (goto_statement "goto LAB_0001cd34;" goto statement_identifier ;)) (expression_statement "uVar18 = *puVar12;" (assignment_expression "uVar18 = *puVar12" identifier = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = uVar18 + 1;" (assignment_expression "*puVar12 = uVar18 + 1" (pointer_expression "*puVar12" * identifier) = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 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 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" else (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" { (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" identifier = (pointer_expression "*piVar17" * identifier)) ;) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" identifier = (subscript_expression "puVar15[3]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = iVar16 - iVar19;" (assignment_expression "iVar6 = iVar16 - iVar19" identifier = (binary_expression "iVar16 - iVar19" identifier - identifier)) ;) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" identifier = (cast_expression "(uint *)piVar17[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar14 = iVar16;" (assignment_expression "iVar14 = iVar16" identifier = identifier) ;) (if_statement "if (0 < iVar6) goto LAB_0001cc68;" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (goto_statement "goto LAB_0001cc68;" goto statement_identifier ;)) (labeled_statement "LAB_0001cda8:\n    iVar19 = iVar14;" statement_identifier : (expression_statement "iVar19 = iVar14;" (assignment_expression "iVar19 = iVar14" identifier = identifier) ;)) (expression_statement "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" identifier = (call_expression "(**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a4a4))" ( (pointer_expression "**(code **)(pcVar28 + 0x7a4a4)" * (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" * (cast_expression "(code **)(pcVar28 + 0x7a4a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar28 + 0x7a4a4)" ( (binary_expression "pcVar28 + 0x7a4a4" identifier + number_literal) ))))) )) (argument_list "(puVar22,iVar8,iVar19)" ( identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar14 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar14 = 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 "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (binary_expression "puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar15[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_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" statement_identifier : (if_statement "if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar14 = -iVar14;\n  }" { (expression_statement "iVar14 = -iVar14;" (assignment_expression "iVar14 = -iVar14" identifier = (unary_expression "-iVar14" - identifier)) ;) }))) (expression_statement "piVar17[1] = iVar14;" (assignment_expression "piVar17[1] = iVar14" (subscript_expression "piVar17[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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ;) (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 * (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }) (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 ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (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 ( ))) ;) }) (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 * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * 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 = (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) ;) })) (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 { (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_sub_ui(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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\n  return;\n}" (primitive_type "void") (function_declarator "__gmpf_sub_ui(uint *param_1,int param_2,undefined4 *param_3)" (identifier "__gmpf_sub_ui") (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 iVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  uint *puVar12;\n  undefined4 *puVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  int iVar16;\n  int *piVar17;\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  undefined1 *puVar27;\n  code *pcVar28;\n  undefined4 uVar29;\n  undefined1 auStack_d0 [24];\n  code *apcStack_b8 [2];\n  int iStack_b0;\n  uint uStack_ac;\n  undefined4 *puStack_a8;\n  undefined4 *puStack_a4;\n  int *piStack_a0;\n  int iStack_9c;\n  int *piStack_98;\n  int iStack_58;\n  undefined4 uStack_54;\n  undefined4 uStack_50;\n  undefined4 uStack_4c;\n  int *piStack_48;\n  int iStack_44;\n  undefined *puStack_40;\n  code *pcStack_3c;\n  undefined4 *local_20;\n  undefined4 uStack_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 **local_10;\n  int local_c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  local_c = *(int *)PTR___stack_chk_guard_00097540;\n  if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }\n  if (local_c == *(int *)puVar3) {\n    return;\n  }\n  pcVar28 = __gmpf_ui_sub;\n  puVar25 = PTR___stack_chk_fail_000974d0;\n  (*(code *)PTR___stack_chk_fail_000974d0)();\n  puStack_40 = puVar3;\n  piVar17 = *(int **)(puVar25 + 0x7ac60);\n  iStack_44 = *piVar17;\n  puVar10 = param_3;\n  pcStack_3c = pcVar28;\n  if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }\n  if (iStack_44 == *piVar17) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar25 + 0x7abf0);\n  (*pcVar28)();\n  apcStack_b8[0] = pcVar28 + 0x826d0;\n  puVar27 = auStack_d0;\n  piVar24 = *(int **)(pcVar28 + 0x7abd0);\n  uVar20 = param_3[1];\n  iStack_9c = *piVar24;\n  uVar18 = *param_1;\n  uVar21 = puVar10[1];\n  uVar7 = -uVar20;\n  if (-1 < (int)uVar20) {\n    uVar7 = uVar20;\n  }\n  uVar11 = uVar21;\n  if ((int)uVar21 < 0) {\n    uVar11 = -uVar21;\n  }\n  puVar15 = (undefined4 *)param_3[3];\n  puVar13 = (undefined4 *)puVar10[3];\n  uVar23 = uVar7;\n  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {\n    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }\n  if ((int)uVar18 < (int)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }\n  piStack_98 = piVar17;\n  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }\n  if (iStack_9c == *piVar24) {\n    return;\n  }\n  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);\n  uVar29 = 0x1cbf4;\n  (*pcVar28)();\n  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;\n  *(uint **)(puVar27 + -0x14) = param_1;\n  *(undefined4 *)(puVar27 + -4) = uVar29;\n  *(undefined4 **)(puVar27 + -8) = param_3;\n  *(undefined4 **)(puVar27 + -0xc) = puVar10;\n  *(uint *)(puVar27 + -0x10) = uVar21;\n  *(uint *)(puVar27 + -0x18) = uVar20;\n  *(uint *)(puVar27 + -0x1c) = uVar18;\n  iVar16 = puVar15[1];\n  if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }\n  if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }\n  iVar14 = iVar19 + (uint)(uVar7 != 0);\n  puVar22[iVar19] = uVar7;\n  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);\njoined_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }\n  piVar17[1] = iVar14;\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 iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (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 "undefined1 *puVar27;" (type_identifier "undefined1") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "code *pcVar28;" (type_identifier "code") (pointer_declarator "*pcVar28" (* "*") (identifier "pcVar28")) (; ";")) (declaration "undefined4 uVar29;" (type_identifier "undefined4") (identifier "uVar29") (; ";")) (declaration "undefined1 auStack_d0 [24];" (type_identifier "undefined1") (array_declarator "auStack_d0 [24]" (identifier "auStack_d0") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "code *apcStack_b8 [2];" (type_identifier "code") (pointer_declarator "*apcStack_b8 [2]" (* "*") (array_declarator "apcStack_b8 [2]" (identifier "apcStack_b8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "int iStack_b0;" (primitive_type "int") (identifier "iStack_b0") (; ";")) (declaration "uint uStack_ac;" (type_identifier "uint") (identifier "uStack_ac") (; ";")) (declaration "undefined4 *puStack_a8;" (type_identifier "undefined4") (pointer_declarator "*puStack_a8" (* "*") (identifier "puStack_a8")) (; ";")) (declaration "undefined4 *puStack_a4;" (type_identifier "undefined4") (pointer_declarator "*puStack_a4" (* "*") (identifier "puStack_a4")) (; ";")) (declaration "int *piStack_a0;" (primitive_type "int") (pointer_declarator "*piStack_a0" (* "*") (identifier "piStack_a0")) (; ";")) (declaration "int iStack_9c;" (primitive_type "int") (identifier "iStack_9c") (; ";")) (declaration "int *piStack_98;" (primitive_type "int") (pointer_declarator "*piStack_98" (* "*") (identifier "piStack_98")) (; ";")) (declaration "int iStack_58;" (primitive_type "int") (identifier "iStack_58") (; ";")) (declaration "undefined4 uStack_54;" (type_identifier "undefined4") (identifier "uStack_54") (; ";")) (declaration "undefined4 uStack_50;" (type_identifier "undefined4") (identifier "uStack_50") (; ";")) (declaration "undefined4 uStack_4c;" (type_identifier "undefined4") (identifier "uStack_4c") (; ";")) (declaration "int *piStack_48;" (primitive_type "int") (pointer_declarator "*piStack_48" (* "*") (identifier "piStack_48")) (; ";")) (declaration "int iStack_44;" (primitive_type "int") (identifier "iStack_44") (; ";")) (declaration "undefined *puStack_40;" (type_identifier "undefined") (pointer_declarator "*puStack_40" (* "*") (identifier "puStack_40")) (; ";")) (declaration "code *pcStack_3c;" (type_identifier "code") (pointer_declarator "*pcStack_3c" (* "*") (identifier "pcStack_3c")) (; ";")) (declaration "undefined4 *local_20;" (type_identifier "undefined4") (pointer_declarator "*local_20" (* "*") (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 "undefined4 **local_10;" (type_identifier "undefined4") (pointer_declarator "**local_10" (* "*") (pointer_declarator "*local_10" (* "*") (identifier "local_10"))) (; ";")) (declaration "int local_c;" (primitive_type "int") (identifier "local_c") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "local_c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_c = *(int *)PTR___stack_chk_guard_00097540" (identifier "local_c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (if_statement "if (param_3 == (undefined4 *)0x0) {\n    (*(code *)PTR___gmpf_set_00097574)();\n  }\n  else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" (if "if") (parenthesized_expression "(param_3 == (undefined4 *)0x0)" (( "(") (binary_expression "param_3 == (undefined4 *)0x0" (identifier "param_3") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*(code *)PTR___gmpf_set_00097574)();\n  }" ({ "{") (expression_statement "(*(code *)PTR___gmpf_set_00097574)();" (call_expression "(*(code *)PTR___gmpf_set_00097574)()" (parenthesized_expression "(*(code *)PTR___gmpf_set_00097574)" (( "(") (pointer_expression "*(code *)PTR___gmpf_set_00097574" (* "*") (cast_expression "(code *)PTR___gmpf_set_00097574" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_set_00097574"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\n  }" (else "else") (compound_statement "{\n    local_10 = &local_20;\n    puVar10 = &uStack_1c;\n    local_18 = 1;\n    local_14 = 1;\n    local_20 = param_3;\n    (*(code *)PTR___gmpf_sub_0009725c)();\n    param_3 = puVar10;\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 "puVar10 = &uStack_1c;" (assignment_expression "puVar10 = &uStack_1c" (identifier "puVar10") (= "=") (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_3;" (assignment_expression "local_20 = param_3" (identifier "local_20") (= "=") (identifier "param_3")) (; ";")) (expression_statement "(*(code *)PTR___gmpf_sub_0009725c)();" (call_expression "(*(code *)PTR___gmpf_sub_0009725c)()" (parenthesized_expression "(*(code *)PTR___gmpf_sub_0009725c)" (( "(") (pointer_expression "*(code *)PTR___gmpf_sub_0009725c" (* "*") (cast_expression "(code *)PTR___gmpf_sub_0009725c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpf_sub_0009725c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_3 = puVar10;" (assignment_expression "param_3 = puVar10" (identifier "param_3") (= "=") (identifier "puVar10")) (; ";")) (} "}")))) (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 "pcVar28 = __gmpf_ui_sub;" (assignment_expression "pcVar28 = __gmpf_ui_sub" (identifier "pcVar28") (= "=") (identifier "__gmpf_ui_sub")) (; ";")) (expression_statement "puVar25 = PTR___stack_chk_fail_000974d0;" (assignment_expression "puVar25 = PTR___stack_chk_fail_000974d0" (identifier "puVar25") (= "=") (identifier "PTR___stack_chk_fail_000974d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_40 = puVar3;" (assignment_expression "puStack_40 = puVar3" (identifier "puStack_40") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "piVar17 = *(int **)(puVar25 + 0x7ac60);" (assignment_expression "piVar17 = *(int **)(puVar25 + 0x7ac60)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(puVar25 + 0x7ac60)" (* "*") (cast_expression "(int **)(puVar25 + 0x7ac60)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x7ac60)" (( "(") (binary_expression "puVar25 + 0x7ac60" (identifier "puVar25") (+ "+") (number_literal "0x7ac60")) () ")"))))) (; ";")) (expression_statement "iStack_44 = *piVar17;" (assignment_expression "iStack_44 = *piVar17" (identifier "iStack_44") (= "=") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) (; ";")) (expression_statement "puVar10 = param_3;" (assignment_expression "puVar10 = param_3" (identifier "puVar10") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pcStack_3c = pcVar28;" (assignment_expression "pcStack_3c = pcVar28" (identifier "pcStack_3c") (= "=") (identifier "pcVar28")) (; ";")) (if_statement "if (param_2 == 0) {\n    (**(code **)(puVar25 + 0x7aa00))();\n  }\n  else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(puVar25 + 0x7aa00))();\n  }" ({ "{") (expression_statement "(**(code **)(puVar25 + 0x7aa00))();" (call_expression "(**(code **)(puVar25 + 0x7aa00))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7aa00))" (( "(") (pointer_expression "**(code **)(puVar25 + 0x7aa00)" (* "*") (pointer_expression "*(code **)(puVar25 + 0x7aa00)" (* "*") (cast_expression "(code **)(puVar25 + 0x7aa00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x7aa00)" (( "(") (binary_expression "puVar25 + 0x7aa00" (identifier "puVar25") (+ "+") (number_literal "0x7aa00")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" (else "else") (compound_statement "{\n    piStack_48 = &iStack_58;\n    param_3 = &uStack_54;\n    uStack_50 = 1;\n    uStack_4c = 1;\n    iStack_58 = param_2;\n    (**(code **)(puVar25 + 0x7a97c))();\n  }" ({ "{") (expression_statement "piStack_48 = &iStack_58;" (assignment_expression "piStack_48 = &iStack_58" (identifier "piStack_48") (= "=") (pointer_expression "&iStack_58" (& "&") (identifier "iStack_58"))) (; ";")) (expression_statement "param_3 = &uStack_54;" (assignment_expression "param_3 = &uStack_54" (identifier "param_3") (= "=") (pointer_expression "&uStack_54" (& "&") (identifier "uStack_54"))) (; ";")) (expression_statement "uStack_50 = 1;" (assignment_expression "uStack_50 = 1" (identifier "uStack_50") (= "=") (number_literal "1")) (; ";")) (expression_statement "uStack_4c = 1;" (assignment_expression "uStack_4c = 1" (identifier "uStack_4c") (= "=") (number_literal "1")) (; ";")) (expression_statement "iStack_58 = param_2;" (assignment_expression "iStack_58 = param_2" (identifier "iStack_58") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(**(code **)(puVar25 + 0x7a97c))();" (call_expression "(**(code **)(puVar25 + 0x7a97c))()" (parenthesized_expression "(**(code **)(puVar25 + 0x7a97c))" (( "(") (pointer_expression "**(code **)(puVar25 + 0x7a97c)" (* "*") (pointer_expression "*(code **)(puVar25 + 0x7a97c)" (* "*") (cast_expression "(code **)(puVar25 + 0x7a97c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x7a97c)" (( "(") (binary_expression "puVar25 + 0x7a97c" (identifier "puVar25") (+ "+") (number_literal "0x7a97c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (iStack_44 == *piVar17) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_44 == *piVar17)" (( "(") (binary_expression "iStack_44 == *piVar17" (identifier "iStack_44") (== "==") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar28 = *(code **)(puVar25 + 0x7abf0);" (assignment_expression "pcVar28 = *(code **)(puVar25 + 0x7abf0)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(puVar25 + 0x7abf0)" (* "*") (cast_expression "(code **)(puVar25 + 0x7abf0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar25 + 0x7abf0)" (( "(") (binary_expression "puVar25 + 0x7abf0" (identifier "puVar25") (+ "+") (number_literal "0x7abf0")) () ")"))))) (; ";")) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "apcStack_b8[0] = pcVar28 + 0x826d0;" (assignment_expression "apcStack_b8[0] = pcVar28 + 0x826d0" (subscript_expression "apcStack_b8[0]" (identifier "apcStack_b8") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "pcVar28 + 0x826d0" (identifier "pcVar28") (+ "+") (number_literal "0x826d0"))) (; ";")) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" (identifier "puVar27") (= "=") (identifier "auStack_d0")) (; ";")) (expression_statement "piVar24 = *(int **)(pcVar28 + 0x7abd0);" (assignment_expression "piVar24 = *(int **)(pcVar28 + 0x7abd0)" (identifier "piVar24") (= "=") (pointer_expression "*(int **)(pcVar28 + 0x7abd0)" (* "*") (cast_expression "(int **)(pcVar28 + 0x7abd0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar28 + 0x7abd0)" (( "(") (binary_expression "pcVar28 + 0x7abd0" (identifier "pcVar28") (+ "+") (number_literal "0x7abd0")) () ")"))))) (; ";")) (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 "iStack_9c = *piVar24;" (assignment_expression "iStack_9c = *piVar24" (identifier "iStack_9c") (= "=") (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 = puVar10[1];" (assignment_expression "uVar21 = puVar10[1]" (identifier "uVar21") (= "=") (subscript_expression "puVar10[1]" (identifier "puVar10") ([ "[") (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 "uVar11 = uVar21;" (assignment_expression "uVar11 = uVar21" (identifier "uVar11") (= "=") (identifier "uVar21")) (; ";")) (if_statement "if ((int)uVar21 < 0) {\n    uVar11 = -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    uVar11 = -uVar21;\n  }" ({ "{") (expression_statement "uVar11 = -uVar21;" (assignment_expression "uVar11 = -uVar21" (identifier "uVar11") (= "=") (unary_expression "-uVar21" (- "-") (identifier "uVar21"))) (; ";")) (} "}"))) (expression_statement "puVar15 = (undefined4 *)param_3[3];" (assignment_expression "puVar15 = (undefined4 *)param_3[3]" (identifier "puVar15") (= "=") (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 "puVar13 = (undefined4 *)puVar10[3];" (assignment_expression "puVar13 = (undefined4 *)puVar10[3]" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)puVar10[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[3]" (identifier "puVar10") ([ "[") (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    puVar15 = puVar15 + (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    puVar15 = puVar15 + (uVar7 - uVar18);\n    uVar23 = uVar18;\n  }" ({ "{") (expression_statement "puVar15 = puVar15 + (uVar7 - uVar18);" (assignment_expression "puVar15 = puVar15 + (uVar7 - uVar18)" (identifier "puVar15") (= "=") (binary_expression "puVar15 + (uVar7 - uVar18)" (identifier "puVar15") (+ "+") (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)uVar11) {\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" (if "if") (parenthesized_expression "((int)uVar18 < (int)uVar11)" (( "(") (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n    puVar13 = puVar13 + (uVar11 - uVar18);\n    uVar11 = uVar18;\n  }" ({ "{") (expression_statement "puVar13 = puVar13 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puVar13 + (uVar11 - uVar18)" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uVar11 - uVar18)" (identifier "puVar13") (+ "+") (parenthesized_expression "(uVar11 - uVar18)" (( "(") (binary_expression "uVar11 - uVar18" (identifier "uVar11") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" (identifier "uVar11") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "piStack_98 = piVar17;" (assignment_expression "piStack_98 = piVar17" (identifier "piStack_98") (= "=") (identifier "piVar17")) (; ";")) (if_statement "if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\n  }\n  else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" (if "if") (parenthesized_expression "((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0))" (( "(") (binary_expression "(uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)" (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar16 = uVar23 + uVar11, uVar11 == 0)" (( "(") (comma_expression "iVar16 = uVar23 + uVar11, uVar11 == 0" (assignment_expression "iVar16 = uVar23 + uVar11" (identifier "iVar16") (= "=") (binary_expression "uVar23 + uVar11" (identifier "uVar23") (+ "+") (identifier "uVar11"))) (, ",") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    param_1[1] = 0;\n    param_1[2] = 0;\n    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);\n    puVar15 = param_3;\n    puVar27 = auStack_d0;\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 "piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);" (assignment_expression "piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7)" (identifier "piVar17") (= "=") (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 "puVar15 = param_3;" (assignment_expression "puVar15 = param_3" (identifier "puVar15") (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar27 = auStack_d0;" (assignment_expression "puVar27 = auStack_d0" (identifier "puVar27") (= "=") (identifier "auStack_d0")) (; ";")) (} "}")) (else_clause "else {\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" (else "else") (compound_statement "{\n    piStack_a0 = (int *)0x0;\n    if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }\n    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);\n    puStack_a4 = puVar5;\n    if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }\n    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);\n    uVar18 = uVar18 + 1;\n    puVar13 = puStack_a4;\n    if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }\n    iVar14 = uVar11 - 1;\n    if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }\n    uVar20 = uVar20 ^ uVar21;\n    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);\n    if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\n    }\n    param_1[1] = uVar11;\n    piVar17 = piStack_a0;\n    if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }\n  }" ({ "{") (expression_statement "piStack_a0 = (int *)0x0;" (assignment_expression "piStack_a0 = (int *)0x0" (identifier "piStack_a0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((uint)(iVar16 * 4) < 0x7f01) {\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }\n    else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" (if "if") (parenthesized_expression "((uint)(iVar16 * 4) < 0x7f01)" (( "(") (binary_expression "(uint)(iVar16 * 4) < 0x7f01" (call_expression "(uint)(iVar16 * 4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar16 * 4)" (( "(") (binary_expression "iVar16 * 4" (identifier "iVar16") (* "*") (number_literal "4")) () ")"))) (< "<") (number_literal "0x7f01")) () ")")) (compound_statement "{\n      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);\n      puVar27 = auStack_d0 + iVar14;\n      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);\n      puStack_a8 = (undefined4 *)iVar16;\n    }" ({ "{") (expression_statement "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);" (assignment_expression "iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8)" (identifier "iVar14") (= "=") (unary_expression "-(iVar16 * 4 + 7U & 0xfffffff8)" (- "-") (parenthesized_expression "(iVar16 * 4 + 7U & 0xfffffff8)" (( "(") (binary_expression "iVar16 * 4 + 7U & 0xfffffff8" (binary_expression "iVar16 * 4 + 7U" (binary_expression "iVar16 * 4" (identifier "iVar16") (* "*") (number_literal "4")) (+ "+") (number_literal "7U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar27 = auStack_d0 + iVar14;" (assignment_expression "puVar27 = auStack_d0 + iVar14" (identifier "puVar27") (= "=") (binary_expression "auStack_d0 + iVar14" (identifier "auStack_d0") (+ "+") (identifier "iVar14"))) (; ";")) (expression_statement "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);" (assignment_expression "puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)((int)apcStack_b8 + iVar14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)apcStack_b8 + iVar14)" (( "(") (binary_expression "(int)apcStack_b8 + iVar14" (cast_expression "(int)apcStack_b8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "apcStack_b8")) (+ "+") (identifier "iVar14")) () ")")))) (; ";")) (expression_statement "puStack_a8 = (undefined4 *)iVar16;" (assignment_expression "puStack_a8 = (undefined4 *)iVar16" (identifier "puStack_a8") (= "=") (cast_expression "(undefined4 *)iVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iVar16"))) (; ";")) (} "}")) (else_clause "else {\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" (else "else") (compound_statement "{\n      iStack_b0 = iVar16;\n      uStack_ac = uVar11;\n      puStack_a8 = puVar13;\n      puStack_a4 = puVar15;\n      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);\n      uVar11 = uStack_ac;\n      puVar13 = puStack_a8;\n      puVar15 = puStack_a4;\n      puStack_a8 = (undefined4 *)iStack_b0;\n    }" ({ "{") (expression_statement "iStack_b0 = iVar16;" (assignment_expression "iStack_b0 = iVar16" (identifier "iStack_b0") (= "=") (identifier "iVar16")) (; ";")) (expression_statement "uStack_ac = uVar11;" (assignment_expression "uStack_ac = uVar11" (identifier "uStack_ac") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "puStack_a8 = puVar13;" (assignment_expression "puStack_a8 = puVar13" (identifier "puStack_a8") (= "=") (identifier "puVar13")) (; ";")) (expression_statement "puStack_a4 = puVar15;" (assignment_expression "puStack_a4 = puVar15" (identifier "puStack_a4") (= "=") (identifier "puVar15")) (; ";")) (expression_statement "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);" (assignment_expression "puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar28 + 0x7a980))(&piStack_a0)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a980))" (( "(") (pointer_expression "**(code **)(pcVar28 + 0x7a980)" (* "*") (pointer_expression "*(code **)(pcVar28 + 0x7a980)" (* "*") (cast_expression "(code **)(pcVar28 + 0x7a980)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar28 + 0x7a980)" (( "(") (binary_expression "pcVar28 + 0x7a980" (identifier "pcVar28") (+ "+") (number_literal "0x7a980")) () ")"))))) () ")")) (argument_list "(&piStack_a0)" (( "(") (pointer_expression "&piStack_a0" (& "&") (identifier "piStack_a0")) () ")"))))) (; ";")) (expression_statement "uVar11 = uStack_ac;" (assignment_expression "uVar11 = uStack_ac" (identifier "uVar11") (= "=") (identifier "uStack_ac")) (; ";")) (expression_statement "puVar13 = puStack_a8;" (assignment_expression "puVar13 = puStack_a8" (identifier "puVar13") (= "=") (identifier "puStack_a8")) (; ";")) (expression_statement "puVar15 = puStack_a4;" (assignment_expression "puVar15 = puStack_a4" (identifier "puVar15") (= "=") (identifier "puStack_a4")) (; ";")) (expression_statement "puStack_a8 = (undefined4 *)iStack_b0;" (assignment_expression "puStack_a8 = (undefined4 *)iStack_b0" (identifier "puStack_a8") (= "=") (cast_expression "(undefined4 *)iStack_b0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "iStack_b0"))) (; ";")) (} "}")))) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(apcStack_b8[0] + -0x7d8c)" (* "*") (cast_expression "(code **)(apcStack_b8[0] + -0x7d8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apcStack_b8[0] + -0x7d8c)" (( "(") (binary_expression "apcStack_b8[0] + -0x7d8c" (subscript_expression "apcStack_b8[0]" (identifier "apcStack_b8") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7d8c")) () ")"))))) (; ";")) (expression_statement "puStack_a4 = puVar5;" (assignment_expression "puStack_a4 = puVar5" (identifier "puStack_a4") (= "=") (identifier "puVar5")) (; ";")) (if_statement "if ((int)uVar23 < (int)uVar11) {\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }\n    else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" (if "if") (parenthesized_expression "((int)uVar23 < (int)uVar11)" (( "(") (binary_expression "(int)uVar23 < (int)uVar11" (cast_expression "(int)uVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar23")) (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar23;\n      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);\n      puVar15 = puVar13;\n    }" ({ "{") (expression_statement "*(uint *)(puVar27 + 0x10) = uVar23;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar23" (pointer_expression "*(uint *)(puVar27 + 0x10)" (* "*") (cast_expression "(uint *)(puVar27 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + 0x10)" (( "(") (binary_expression "puVar27 + 0x10" (identifier "puVar27") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar23")) (; ";")) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15)" (identifier "iVar16") (= "=") (call_expression "(*pcVar28)(puVar5,puVar13,uVar11,puVar15)" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "(puVar5,puVar13,uVar11,puVar15)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar13") (, ",") (identifier "uVar11") (, ",") (identifier "puVar15") () ")")))) (; ";")) (expression_statement "puVar15 = puVar13;" (assignment_expression "puVar15 = puVar13" (identifier "puVar15") (= "=") (identifier "puVar13")) (; ";")) (} "}")) (else_clause "else {\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" (else "else") (compound_statement "{\n      *(uint *)(puVar27 + 0x10) = uVar11;\n      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);\n    }" ({ "{") (expression_statement "*(uint *)(puVar27 + 0x10) = uVar11;" (assignment_expression "*(uint *)(puVar27 + 0x10) = uVar11" (pointer_expression "*(uint *)(puVar27 + 0x10)" (* "*") (cast_expression "(uint *)(puVar27 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + 0x10)" (( "(") (binary_expression "puVar27 + 0x10" (identifier "puVar27") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);" (assignment_expression "iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13)" (identifier "iVar16") (= "=") (call_expression "(*pcVar28)(puVar5,puVar15,uVar23,puVar13)" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "(puVar5,puVar15,uVar23,puVar13)" (( "(") (identifier "puVar5") (, ",") (identifier "puVar15") (, ",") (identifier "uVar23") (, ",") (identifier "puVar13") () ")")))) (; ";")) (} "}")))) (expression_statement "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);" (assignment_expression "uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0)" (identifier "uVar11") (= "=") (binary_expression "(int)puStack_a8 - (uint)(iVar16 == 0)" (cast_expression "(int)puStack_a8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_a8")) (- "-") (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (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 "puVar13 = puStack_a4;" (assignment_expression "puVar13 = puStack_a4" (identifier "puVar13") (= "=") (identifier "puStack_a4")) (; ";")) (if_statement "if ((int)uVar18 < (int)uVar11) {\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" (if "if") (parenthesized_expression "((int)uVar18 < (int)uVar11)" (( "(") (binary_expression "(int)uVar18 < (int)uVar11" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n      puVar13 = puStack_a4 + (uVar11 - uVar18);\n      uVar11 = uVar18;\n    }" ({ "{") (expression_statement "puVar13 = puStack_a4 + (uVar11 - uVar18);" (assignment_expression "puVar13 = puStack_a4 + (uVar11 - uVar18)" (identifier "puVar13") (= "=") (binary_expression "puStack_a4 + (uVar11 - uVar18)" (identifier "puStack_a4") (+ "+") (parenthesized_expression "(uVar11 - uVar18)" (( "(") (binary_expression "uVar11 - uVar18" (identifier "uVar11") (- "-") (identifier "uVar18")) () ")")))) (; ";")) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" (identifier "uVar11") (= "=") (identifier "uVar18")) (; ";")) (} "}"))) (expression_statement "iVar14 = uVar11 - 1;" (assignment_expression "iVar14 = uVar11 - 1" (identifier "iVar14") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar11 != 0) {\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }\n      *puVar4 = uVar29;\n    }" (if "if") (parenthesized_expression "(uVar11 != 0)" (( "(") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar4 = (undefined4 *)param_1[3];\n      uVar29 = *puVar13;\n      puVar5 = puVar4;\n      if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 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 = *puVar13;" (assignment_expression "uVar29 = *puVar13" (identifier "uVar29") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar5 = puVar4;" (assignment_expression "puVar5 = puVar4" (identifier "puVar5") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (iVar14 != 0) {\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);\n        puVar4 = puVar4 + (uVar11 - 1);\n      }" ({ "{") (do_statement "do {\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        } while (iVar14 != 0);" (do "do") (compound_statement "{\n          puVar13 = puVar13 + 1;\n          puVar15 = puVar5 + 1;\n          *puVar5 = uVar29;\n          iVar14 = iVar14 + -1;\n          uVar29 = *puVar13;\n          puVar5 = puVar15;\n        }" ({ "{") (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar15 = puVar5 + 1;" (assignment_expression "puVar15 = puVar5 + 1" (identifier "puVar15") (= "=") (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 "iVar14 = iVar14 + -1;" (assignment_expression "iVar14 = iVar14 + -1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + -1" (identifier "iVar14") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar29 = *puVar13;" (assignment_expression "uVar29 = *puVar13" (identifier "uVar29") (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar5 = puVar15;" (assignment_expression "puVar5 = puVar15" (identifier "puVar5") (= "=") (identifier "puVar15")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "puVar4 = puVar4 + (uVar11 - 1);" (assignment_expression "puVar4 = puVar4 + (uVar11 - 1)" (identifier "puVar4") (= "=") (binary_expression "puVar4 + (uVar11 - 1)" (identifier "puVar4") (+ "+") (parenthesized_expression "(uVar11 - 1)" (( "(") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (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] + puVar10[2]) - (uint)(iVar16 == 0);" (assignment_expression "param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(param_3[2] + puVar10[2]) - (uint)(iVar16 == 0)" (parenthesized_expression "(param_3[2] + puVar10[2])" (( "(") (binary_expression "param_3[2] + puVar10[2]" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (+ "+") (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]"))) () ")")) (- "-") (call_expression "(uint)(iVar16 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")"))))) (; ";")) (if_statement "if ((int)uVar20 < 0) {\n      uVar11 = -uVar11;\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      uVar11 = -uVar11;\n    }" ({ "{") (expression_statement "uVar11 = -uVar11;" (assignment_expression "uVar11 = -uVar11" (identifier "uVar11") (= "=") (unary_expression "-uVar11" (- "-") (identifier "uVar11"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = uVar11;" (assignment_expression "param_1[1] = uVar11" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "piVar17 = piStack_a0;" (assignment_expression "piVar17 = piStack_a0" (identifier "piVar17") (= "=") (identifier "piStack_a0")) (; ";")) (if_statement "if (piStack_a0 != (int *)0x0) {\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" (if "if") (parenthesized_expression "(piStack_a0 != (int *)0x0)" (( "(") (binary_expression "piStack_a0 != (int *)0x0" (identifier "piStack_a0") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (**(code **)(apcStack_b8[0] + -0x7a2c))();\n    }" ({ "{") (expression_statement "(**(code **)(apcStack_b8[0] + -0x7a2c))();" (call_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))()" (parenthesized_expression "(**(code **)(apcStack_b8[0] + -0x7a2c))" (( "(") (pointer_expression "**(code **)(apcStack_b8[0] + -0x7a2c)" (* "*") (pointer_expression "*(code **)(apcStack_b8[0] + -0x7a2c)" (* "*") (cast_expression "(code **)(apcStack_b8[0] + -0x7a2c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apcStack_b8[0] + -0x7a2c)" (( "(") (binary_expression "apcStack_b8[0] + -0x7a2c" (subscript_expression "apcStack_b8[0]" (identifier "apcStack_b8") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7a2c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (iStack_9c == *piVar24) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_9c == *piVar24)" (( "(") (binary_expression "iStack_9c == *piVar24" (identifier "iStack_9c") (== "==") (pointer_expression "*piVar24" (* "*") (identifier "piVar24"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);" (assignment_expression "pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(apcStack_b8[0] + -0x7b70)" (* "*") (cast_expression "(code **)(apcStack_b8[0] + -0x7b70)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(apcStack_b8[0] + -0x7b70)" (( "(") (binary_expression "apcStack_b8[0] + -0x7b70" (subscript_expression "apcStack_b8[0]" (identifier "apcStack_b8") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0x7b70")) () ")"))))) (; ";")) (expression_statement "uVar29 = 0x1cbf4;" (assignment_expression "uVar29 = 0x1cbf4" (identifier "uVar29") (= "=") (number_literal "0x1cbf4")) (; ";")) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;" (assignment_expression "*(code **)(puVar27 + -0x28) = pcVar28 + 0x82440" (pointer_expression "*(code **)(puVar27 + -0x28)" (* "*") (cast_expression "(code **)(puVar27 + -0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x28)" (( "(") (binary_expression "puVar27 + -0x28" (identifier "puVar27") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (binary_expression "pcVar28 + 0x82440" (identifier "pcVar28") (+ "+") (number_literal "0x82440"))) (; ";")) (expression_statement "*(uint **)(puVar27 + -0x14) = param_1;" (assignment_expression "*(uint **)(puVar27 + -0x14) = param_1" (pointer_expression "*(uint **)(puVar27 + -0x14)" (* "*") (cast_expression "(uint **)(puVar27 + -0x14)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0x14)" (( "(") (binary_expression "puVar27 + -0x14" (identifier "puVar27") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar27 + -4) = uVar29;" (assignment_expression "*(undefined4 *)(puVar27 + -4) = uVar29" (pointer_expression "*(undefined4 *)(puVar27 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar27 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -4)" (( "(") (binary_expression "puVar27 + -4" (identifier "puVar27") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "*(undefined4 **)(puVar27 + -8) = param_3;" (assignment_expression "*(undefined4 **)(puVar27 + -8) = param_3" (pointer_expression "*(undefined4 **)(puVar27 + -8)" (* "*") (cast_expression "(undefined4 **)(puVar27 + -8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -8)" (( "(") (binary_expression "puVar27 + -8" (identifier "puVar27") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "*(undefined4 **)(puVar27 + -0xc) = puVar10;" (assignment_expression "*(undefined4 **)(puVar27 + -0xc) = puVar10" (pointer_expression "*(undefined4 **)(puVar27 + -0xc)" (* "*") (cast_expression "(undefined4 **)(puVar27 + -0xc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + -0xc)" (( "(") (binary_expression "puVar27 + -0xc" (identifier "puVar27") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "puVar10")) (; ";")) (expression_statement "*(uint *)(puVar27 + -0x10) = uVar21;" (assignment_expression "*(uint *)(puVar27 + -0x10) = uVar21" (pointer_expression "*(uint *)(puVar27 + -0x10)" (* "*") (cast_expression "(uint *)(puVar27 + -0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x10)" (( "(") (binary_expression "puVar27 + -0x10" (identifier "puVar27") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "uVar21")) (; ";")) (expression_statement "*(uint *)(puVar27 + -0x18) = uVar20;" (assignment_expression "*(uint *)(puVar27 + -0x18) = uVar20" (pointer_expression "*(uint *)(puVar27 + -0x18)" (* "*") (cast_expression "(uint *)(puVar27 + -0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x18)" (( "(") (binary_expression "puVar27 + -0x18" (identifier "puVar27") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "*(uint *)(puVar27 + -0x1c) = uVar18;" (assignment_expression "*(uint *)(puVar27 + -0x1c) = uVar18" (pointer_expression "*(uint *)(puVar27 + -0x1c)" (* "*") (cast_expression "(uint *)(puVar27 + -0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + -0x1c)" (( "(") (binary_expression "puVar27 + -0x1c" (identifier "puVar27") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "iVar16 = puVar15[1];" (assignment_expression "iVar16 = puVar15[1]" (identifier "iVar16") (= "=") (subscript_expression "puVar15[1]" (identifier "puVar15") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((uVar11 == 0) || (iVar16 == 0)) {\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" (if "if") (parenthesized_expression "((uVar11 == 0) || (iVar16 == 0))" (( "(") (binary_expression "(uVar11 == 0) || (iVar16 == 0)" (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    piVar17[1] = 0;\n    piVar17[2] = 0;\n    return;\n  }" ({ "{") (expression_statement "piVar17[1] = 0;" (assignment_expression "piVar17[1] = 0" (subscript_expression "piVar17[1]" (identifier "piVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17[2] = 0;" (assignment_expression "piVar17[2] = 0" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar16 < 0) {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }\n  else {\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" (if "if") (parenthesized_expression "(iVar16 < 0)" (( "(") (binary_expression "iVar16 < 0" (identifier "iVar16") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    puVar22 = (uint *)piVar17[3];\n    iVar6 = -iVar16 - iVar19;\n    iVar14 = -iVar16;\n    if (iVar6 < 1) goto LAB_0001cda8;\nLAB_0001cc68:\n    iVar9 = iVar6 + -1;\n    iVar6 = iVar8 + iVar6 * 4;\n    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);\n    iVar14 = iVar6;\n    while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }\n      lVar1 = CONCAT44(uVar18,(int)uVar2);\n    }\n    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);\n    uVar20 = *puVar22;\n    *puVar22 = uVar18 + uVar20;\n    if (uVar18 + uVar20 < uVar18) {\n      if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" (identifier "iVar19") (= "=") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) (; ";")) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" (identifier "iVar8") (= "=") (subscript_expression "puVar15[3]" (identifier "puVar15") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" (identifier "puVar22") (= "=") (cast_expression "(uint *)piVar17[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar17[3]" (identifier "piVar17") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar6 = -iVar16 - iVar19;" (assignment_expression "iVar6 = -iVar16 - iVar19" (identifier "iVar6") (= "=") (binary_expression "-iVar16 - iVar19" (unary_expression "-iVar16" (- "-") (identifier "iVar16")) (- "-") (identifier "iVar19"))) (; ";")) (expression_statement "iVar14 = -iVar16;" (assignment_expression "iVar14 = -iVar16" (identifier "iVar14") (= "=") (unary_expression "-iVar16" (- "-") (identifier "iVar16"))) (; ";")) (if_statement "if (iVar6 < 1) goto LAB_0001cda8;" (if "if") (parenthesized_expression "(iVar6 < 1)" (( "(") (binary_expression "iVar6 < 1" (identifier "iVar6") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0001cda8;" (goto "goto") (statement_identifier "LAB_0001cda8") (; ";"))) (labeled_statement "LAB_0001cc68:\n    iVar9 = iVar6 + -1;" (statement_identifier "LAB_0001cc68") (: ":") (expression_statement "iVar9 = iVar6 + -1;" (assignment_expression "iVar9 = iVar6 + -1" (identifier "iVar9") (= "=") (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)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);" (assignment_expression "lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4)" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (* "*") (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")"))) (* "*") (cast_expression "(uint *)(iVar8 + iVar9 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + iVar9 * 4)" (( "(") (binary_expression "iVar8 + iVar9 * 4" (identifier "iVar8") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" (identifier "iVar14") (= "=") (identifier "iVar6")) (; ";")) (while_statement "while( true ) {\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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      iVar9 = iVar9 + -1;\n      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n      if (iVar9 == -1) break;\n      puVar12 = (uint *)(iVar14 + -8);\n      iVar14 = iVar14 + -4;\n      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;\n      lVar1 = lVar1 + (uVar2 >> 0x20);\n      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);\n      if ((int)lVar1 != -1) {\n        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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 "iVar9 = iVar9 + -1;" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" (identifier "pcVar26") (= "=") (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" (* "*") (cast_expression "(code **)(pcVar28 + 0x7a4a4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar28 + 0x7a4a4)" (( "(") (binary_expression "pcVar28 + 0x7a4a4" (identifier "pcVar28") (+ "+") (number_literal "0x7a4a4")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) break;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar12 = (uint *)(iVar14 + -8);" (assignment_expression "puVar12 = (uint *)(iVar14 + -8)" (identifier "puVar12") (= "=") (cast_expression "(uint *)(iVar14 + -8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + -8)" (( "(") (binary_expression "iVar14 + -8" (identifier "iVar14") (+ "+") (number_literal "-8")) () ")")))) (; ";")) (expression_statement "iVar14 = iVar14 + -4;" (assignment_expression "iVar14 = iVar14 + -4" (identifier "iVar14") (= "=") (binary_expression "iVar14 + -4" (identifier "iVar14") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)uVar11 * (ulonglong)*puVar12" (binary_expression "(ulonglong)uVar11 * (ulonglong)" (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (* "*") (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")"))) (* "*") (identifier "puVar12"))) (; ";")) (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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\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        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);\n        break;\n      }" ({ "{") (expression_statement "pcVar26 = *(code **)(pcVar28 + 0x7a4a4);" (assignment_expression "pcVar26 = *(code **)(pcVar28 + 0x7a4a4)" (identifier "pcVar26") (= "=") (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" (* "*") (cast_expression "(code **)(pcVar28 + 0x7a4a4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar28 + 0x7a4a4)" (( "(") (binary_expression "pcVar28 + 0x7a4a4" (identifier "pcVar28") (+ "+") (number_literal "0x7a4a4")) () ")"))))) (; ";")) (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 = (*pcVar26)(puVar22,iVar6,iVar19);" (assignment_expression "uVar7 = (*pcVar26)(puVar22,iVar6,iVar19)" (identifier "uVar7") (= "=") (call_expression "(*pcVar26)(puVar22,iVar6,iVar19)" (parenthesized_expression "(*pcVar26)" (( "(") (pointer_expression "*pcVar26" (* "*") (identifier "pcVar26")) () ")")) (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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\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_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }\n      uVar18 = puVar22[1];\n      puVar22[1] = uVar18 + 1;\n      if (uVar18 + 1 == 0) {\n        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }\n    }" ({ "{") (if_statement "if (iVar19 < 2) {\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" (if "if") (parenthesized_expression "(iVar19 < 2)" (( "(") (binary_expression "iVar19 < 2" (identifier "iVar19") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);\n        iVar14 = iVar19 + uVar18;\n        puVar22[iVar19] = uVar7 + 1;\n        piVar17[2] = puVar15[2] + uVar18;\n        goto joined_r0x0001cddc;\n      }" ({ "{") (labeled_statement "LAB_0001cd34:\n        uVar18 = (uint)(uVar7 + 1 != 0);" (statement_identifier "LAB_0001cd34") (: ":") (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 "iVar14 = iVar19 + uVar18;" (assignment_expression "iVar14 = iVar19 + uVar18" (identifier "iVar14") (= "=") (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 "piVar17[2] = puVar15[2] + uVar18;" (assignment_expression "piVar17[2] = puVar15[2] + uVar18" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar15[2] + uVar18" (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "uVar18"))) (; ";")) (goto_statement "goto joined_r0x0001cddc;" (goto "goto") (statement_identifier "joined_r0x0001cddc") (; ";")) (} "}"))) (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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 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        iVar14 = 2;\n        puVar12 = puVar22 + 2;\n        do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);\n      }" ({ "{") (expression_statement "iVar14 = 2;" (assignment_expression "iVar14 = 2" (identifier "iVar14") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar12 = puVar22 + 2;" (assignment_expression "puVar12 = puVar22 + 2" (identifier "puVar12") (= "=") (binary_expression "puVar22 + 2" (identifier "puVar22") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        } while (uVar18 + 1 == 0);" (do "do") (compound_statement "{\n          if (iVar14 == iVar19) goto LAB_0001cd34;\n          uVar18 = *puVar12;\n          iVar14 = iVar14 + 1;\n          *puVar12 = uVar18 + 1;\n          puVar12 = puVar12 + 1;\n        }" ({ "{") (if_statement "if (iVar14 == iVar19) goto LAB_0001cd34;" (if "if") (parenthesized_expression "(iVar14 == iVar19)" (( "(") (binary_expression "iVar14 == iVar19" (identifier "iVar14") (== "==") (identifier "iVar19")) () ")")) (goto_statement "goto LAB_0001cd34;" (goto "goto") (statement_identifier "LAB_0001cd34") (; ";"))) (expression_statement "uVar18 = *puVar12;" (assignment_expression "uVar18 = *puVar12" (identifier "uVar18") (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar12 = uVar18 + 1;" (assignment_expression "*puVar12 = uVar18 + 1" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(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 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" (else "else") (compound_statement "{\n    iVar19 = *piVar17;\n    iVar8 = puVar15[3];\n    iVar6 = iVar16 - iVar19;\n    puVar22 = (uint *)piVar17[3];\n    iVar14 = iVar16;\n    if (0 < iVar6) goto LAB_0001cc68;\nLAB_0001cda8:\n    iVar19 = iVar14;\n    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);\n  }" ({ "{") (expression_statement "iVar19 = *piVar17;" (assignment_expression "iVar19 = *piVar17" (identifier "iVar19") (= "=") (pointer_expression "*piVar17" (* "*") (identifier "piVar17"))) (; ";")) (expression_statement "iVar8 = puVar15[3];" (assignment_expression "iVar8 = puVar15[3]" (identifier "iVar8") (= "=") (subscript_expression "puVar15[3]" (identifier "puVar15") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar6 = iVar16 - iVar19;" (assignment_expression "iVar6 = iVar16 - iVar19" (identifier "iVar6") (= "=") (binary_expression "iVar16 - iVar19" (identifier "iVar16") (- "-") (identifier "iVar19"))) (; ";")) (expression_statement "puVar22 = (uint *)piVar17[3];" (assignment_expression "puVar22 = (uint *)piVar17[3]" (identifier "puVar22") (= "=") (cast_expression "(uint *)piVar17[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar17[3]" (identifier "piVar17") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "iVar14 = iVar16;" (assignment_expression "iVar14 = iVar16" (identifier "iVar14") (= "=") (identifier "iVar16")) (; ";")) (if_statement "if (0 < iVar6) goto LAB_0001cc68;" (if "if") (parenthesized_expression "(0 < iVar6)" (( "(") (binary_expression "0 < iVar6" (number_literal "0") (< "<") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_0001cc68;" (goto "goto") (statement_identifier "LAB_0001cc68") (; ";"))) (labeled_statement "LAB_0001cda8:\n    iVar19 = iVar14;" (statement_identifier "LAB_0001cda8") (: ":") (expression_statement "iVar19 = iVar14;" (assignment_expression "iVar19 = iVar14" (identifier "iVar19") (= "=") (identifier "iVar14")) (; ";"))) (expression_statement "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);" (assignment_expression "uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" (identifier "uVar7") (= "=") (call_expression "(**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19)" (parenthesized_expression "(**(code **)(pcVar28 + 0x7a4a4))" (( "(") (pointer_expression "**(code **)(pcVar28 + 0x7a4a4)" (* "*") (pointer_expression "*(code **)(pcVar28 + 0x7a4a4)" (* "*") (cast_expression "(code **)(pcVar28 + 0x7a4a4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar28 + 0x7a4a4)" (( "(") (binary_expression "pcVar28 + 0x7a4a4" (identifier "pcVar28") (+ "+") (number_literal "0x7a4a4")) () ")"))))) () ")")) (argument_list "(puVar22,iVar8,iVar19)" (( "(") (identifier "puVar22") (, ",") (identifier "iVar8") (, ",") (identifier "iVar19") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar14 = iVar19 + (uint)(uVar7 != 0);" (assignment_expression "iVar14 = iVar19 + (uint)(uVar7 != 0)" (identifier "iVar14") (= "=") (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 "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);" (assignment_expression "piVar17[2] = puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "puVar15[2] + (uint)(uVar7 != 0)" (subscript_expression "puVar15[2]" (identifier "puVar15") ([ "[") (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_r0x0001cddc:\n  if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" (statement_identifier "joined_r0x0001cddc") (: ":") (if_statement "if (iVar16 < 0) {\n    iVar14 = -iVar14;\n  }" (if "if") (parenthesized_expression "(iVar16 < 0)" (( "(") (binary_expression "iVar16 < 0" (identifier "iVar16") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar14 = -iVar14;\n  }" ({ "{") (expression_statement "iVar14 = -iVar14;" (assignment_expression "iVar14 = -iVar14" (identifier "iVar14") (= "=") (unary_expression "-iVar14" (- "-") (identifier "iVar14"))) (; ";")) (} "}")))) (expression_statement "piVar17[1] = iVar14;" (assignment_expression "piVar17[1] = iVar14" (subscript_expression "piVar17[1]" (identifier "piVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar14")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (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: (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: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) 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))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (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)))) 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: (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)))))) (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: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (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: (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))))) (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 (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 iVar9;
  undefined4 *puVar10;
  uint uVar11;
  uint *puVar12;
  undefined4 *puVar13;
  int iVar14;
  undefined4 *puVar15;
  int iVar16;
  int *piVar17;
  uint uVar18;
  int iVar19;
  uint uVar20;
  uint uVar21;
  uint *puVar22;
  uint uVar23;
  int *piVar24;
  undefined *puVar25;
  code *pcVar26;
  undefined1 *puVar27;
  code *pcVar28;
  undefined4 uVar29;
  undefined1 auStack_d0 [24];
  code *apcStack_b8 [2];
  int iStack_b0;
  uint uStack_ac;
  undefined4 *puStack_a8;
  undefined4 *puStack_a4;
  int *piStack_a0;
  int iStack_9c;
  int *piStack_98;
  int iStack_58;
  undefined4 uStack_54;
  undefined4 uStack_50;
  undefined4 uStack_4c;
  int *piStack_48;
  int iStack_44;
  undefined *puStack_40;
  code *pcStack_3c;
  undefined4 *local_20;
  undefined4 uStack_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 **local_10;
  int local_c;
  
  puVar3 = PTR___stack_chk_guard_00097540;
  local_c = *(int *)PTR___stack_chk_guard_00097540;
  if (param_3 == (undefined4 *)0x0) {
    (*(code *)PTR___gmpf_set_00097574)();
  }
  else {
    local_10 = &local_20;
    puVar10 = &uStack_1c;
    local_18 = 1;
    local_14 = 1;
    local_20 = param_3;
    (*(code *)PTR___gmpf_sub_0009725c)();
    param_3 = puVar10;
  }
  if (local_c == *(int *)puVar3) {
    return;
  }
  pcVar28 = __gmpf_ui_sub;
  puVar25 = PTR___stack_chk_fail_000974d0;
  (*(code *)PTR___stack_chk_fail_000974d0)();
  puStack_40 = puVar3;
  piVar17 = *(int **)(puVar25 + 0x7ac60);
  iStack_44 = *piVar17;
  puVar10 = param_3;
  pcStack_3c = pcVar28;
  if (param_2 == 0) {
    (**(code **)(puVar25 + 0x7aa00))();
  }
  else {
    piStack_48 = &iStack_58;
    param_3 = &uStack_54;
    uStack_50 = 1;
    uStack_4c = 1;
    iStack_58 = param_2;
    (**(code **)(puVar25 + 0x7a97c))();
  }
  if (iStack_44 == *piVar17) {
    return;
  }
  pcVar28 = *(code **)(puVar25 + 0x7abf0);
  (*pcVar28)();
  apcStack_b8[0] = pcVar28 + 0x826d0;
  puVar27 = auStack_d0;
  piVar24 = *(int **)(pcVar28 + 0x7abd0);
  uVar20 = param_3[1];
  iStack_9c = *piVar24;
  uVar18 = *param_1;
  uVar21 = puVar10[1];
  uVar7 = -uVar20;
  if (-1 < (int)uVar20) {
    uVar7 = uVar20;
  }
  uVar11 = uVar21;
  if ((int)uVar21 < 0) {
    uVar11 = -uVar21;
  }
  puVar15 = (undefined4 *)param_3[3];
  puVar13 = (undefined4 *)puVar10[3];
  uVar23 = uVar7;
  if ((int *)(uint)((int)uVar18 < (int)uVar7) != (int *)0x0) {
    puVar15 = puVar15 + (uVar7 - uVar18);
    uVar23 = uVar18;
  }
  if ((int)uVar18 < (int)uVar11) {
    puVar13 = puVar13 + (uVar11 - uVar18);
    uVar11 = uVar18;
  }
  piStack_98 = piVar17;
  if ((uVar23 == 0) || (iVar16 = uVar23 + uVar11, uVar11 == 0)) {
    param_1[1] = 0;
    param_1[2] = 0;
    piVar17 = (int *)(uint)((int)uVar18 < (int)uVar7);
    puVar15 = param_3;
    puVar27 = auStack_d0;
  }
  else {
    piStack_a0 = (int *)0x0;
    if ((uint)(iVar16 * 4) < 0x7f01) {
      iVar14 = -(iVar16 * 4 + 7U & 0xfffffff8);
      puVar27 = auStack_d0 + iVar14;
      puVar5 = (undefined4 *)((int)apcStack_b8 + iVar14);
      puStack_a8 = (undefined4 *)iVar16;
    }
    else {
      iStack_b0 = iVar16;
      uStack_ac = uVar11;
      puStack_a8 = puVar13;
      puStack_a4 = puVar15;
      puVar5 = (undefined4 *)(**(code **)(pcVar28 + 0x7a980))(&piStack_a0);
      uVar11 = uStack_ac;
      puVar13 = puStack_a8;
      puVar15 = puStack_a4;
      puStack_a8 = (undefined4 *)iStack_b0;
    }
    pcVar28 = *(code **)(apcStack_b8[0] + -0x7d8c);
    puStack_a4 = puVar5;
    if ((int)uVar23 < (int)uVar11) {
      *(uint *)(puVar27 + 0x10) = uVar23;
      iVar16 = (*pcVar28)(puVar5,puVar13,uVar11,puVar15);
      puVar15 = puVar13;
    }
    else {
      *(uint *)(puVar27 + 0x10) = uVar11;
      iVar16 = (*pcVar28)(puVar5,puVar15,uVar23,puVar13);
    }
    uVar11 = (int)puStack_a8 - (uint)(iVar16 == 0);
    uVar18 = uVar18 + 1;
    puVar13 = puStack_a4;
    if ((int)uVar18 < (int)uVar11) {
      puVar13 = puStack_a4 + (uVar11 - uVar18);
      uVar11 = uVar18;
    }
    iVar14 = uVar11 - 1;
    if (uVar11 != 0) {
      puVar4 = (undefined4 *)param_1[3];
      uVar29 = *puVar13;
      puVar5 = puVar4;
      if (iVar14 != 0) {
        do {
          puVar13 = puVar13 + 1;
          puVar15 = puVar5 + 1;
          *puVar5 = uVar29;
          iVar14 = iVar14 + -1;
          uVar29 = *puVar13;
          puVar5 = puVar15;
        } while (iVar14 != 0);
        puVar4 = puVar4 + (uVar11 - 1);
      }
      *puVar4 = uVar29;
    }
    uVar20 = uVar20 ^ uVar21;
    param_1[2] = (param_3[2] + puVar10[2]) - (uint)(iVar16 == 0);
    if ((int)uVar20 < 0) {
      uVar11 = -uVar11;
    }
    param_1[1] = uVar11;
    piVar17 = piStack_a0;
    if (piStack_a0 != (int *)0x0) {
      (**(code **)(apcStack_b8[0] + -0x7a2c))();
    }
  }
  if (iStack_9c == *piVar24) {
    return;
  }
  pcVar28 = *(code **)(apcStack_b8[0] + -0x7b70);
  uVar29 = 0x1cbf4;
  (*pcVar28)();
  *(code **)(puVar27 + -0x28) = pcVar28 + 0x82440;
  *(uint **)(puVar27 + -0x14) = param_1;
  *(undefined4 *)(puVar27 + -4) = uVar29;
  *(undefined4 **)(puVar27 + -8) = param_3;
  *(undefined4 **)(puVar27 + -0xc) = puVar10;
  *(uint *)(puVar27 + -0x10) = uVar21;
  *(uint *)(puVar27 + -0x18) = uVar20;
  *(uint *)(puVar27 + -0x1c) = uVar18;
  iVar16 = puVar15[1];
  if ((uVar11 == 0) || (iVar16 == 0)) {
    piVar17[1] = 0;
    piVar17[2] = 0;
    return;
  }
  if (iVar16 < 0) {
    iVar19 = *piVar17;
    iVar8 = puVar15[3];
    puVar22 = (uint *)piVar17[3];
    iVar6 = -iVar16 - iVar19;
    iVar14 = -iVar16;
    if (iVar6 < 1) goto LAB_0001cda8;
LAB_0001cc68:
    iVar9 = iVar6 + -1;
    iVar6 = iVar8 + iVar6 * 4;
    lVar1 = (ulonglong)uVar11 * (ulonglong)*(uint *)(iVar8 + iVar9 * 4);
    iVar14 = iVar6;
    while( true ) {
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      iVar9 = iVar9 + -1;
      pcVar26 = *(code **)(pcVar28 + 0x7a4a4);
      if (iVar9 == -1) break;
      puVar12 = (uint *)(iVar14 + -8);
      iVar14 = iVar14 + -4;
      uVar2 = (ulonglong)uVar11 * (ulonglong)*puVar12;
      lVar1 = lVar1 + (uVar2 >> 0x20);
      uVar18 = (uint)((ulonglong)lVar1 >> 0x20);
      if ((int)lVar1 != -1) {
        pcVar26 = *(code **)(pcVar28 + 0x7a4a4);
        break;
      }
      lVar1 = CONCAT44(uVar18,(int)uVar2);
    }
    uVar7 = (*pcVar26)(puVar22,iVar6,iVar19);
    uVar20 = *puVar22;
    *puVar22 = uVar18 + uVar20;
    if (uVar18 + uVar20 < uVar18) {
      if (iVar19 < 2) {
LAB_0001cd34:
        uVar18 = (uint)(uVar7 + 1 != 0);
        iVar14 = iVar19 + uVar18;
        puVar22[iVar19] = uVar7 + 1;
        piVar17[2] = puVar15[2] + uVar18;
        goto joined_r0x0001cddc;
      }
      uVar18 = puVar22[1];
      puVar22[1] = uVar18 + 1;
      if (uVar18 + 1 == 0) {
        iVar14 = 2;
        puVar12 = puVar22 + 2;
        do {
          if (iVar14 == iVar19) goto LAB_0001cd34;
          uVar18 = *puVar12;
          iVar14 = iVar14 + 1;
          *puVar12 = uVar18 + 1;
          puVar12 = puVar12 + 1;
        } while (uVar18 + 1 == 0);
      }
    }
  }
  else {
    iVar19 = *piVar17;
    iVar8 = puVar15[3];
    iVar6 = iVar16 - iVar19;
    puVar22 = (uint *)piVar17[3];
    iVar14 = iVar16;
    if (0 < iVar6) goto LAB_0001cc68;
LAB_0001cda8:
    iVar19 = iVar14;
    uVar7 = (**(code **)(pcVar28 + 0x7a4a4))(puVar22,iVar8,iVar19);
  }
  iVar14 = iVar19 + (uint)(uVar7 != 0);
  puVar22[iVar19] = uVar7;
  piVar17[2] = puVar15[2] + (uint)(uVar7 != 0);
joined_r0x0001cddc:
  if (iVar16 < 0) {
    iVar14 = -iVar14;
  }
  piVar17[1] = iVar14;
  return;
}

