
mp_limb_t __gmpn_div_qr_1(mp_ptr qp,mp_limb_t *qh,mp_srcptr up,mp_size_t n,mp_limb_t d)

{
  byte bVar1;
  bool bVar2;
  longlong lVar3;
  undefined *puVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  mp_limb_t mVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  uint uVar15;
  uint uVar16;
  uint uVar17;
  
  iVar14 = n + -1;
  uVar15 = up[iVar14];
  if ((int)d < 0) {
    uVar12 = uVar15 < d ^ 1;
    *qh = uVar12;
    mVar8 = d;
    if (uVar12 == 0) {
      mVar8 = 0;
    }
    uVar15 = uVar15 - mVar8;
    if (2 < iVar14) {
      uVar12 = d >> 0x10;
      if (uVar12 == 0) {
        trap(7);
      }
      uVar11 = ~d / uVar12;
      uVar10 = (d & 0xffff) * uVar11;
      uVar6 = ~d % uVar12 << 0x10 | 0xffff;
      uVar5 = uVar11;
      if (uVar6 < uVar10) {
        uVar6 = uVar6 + d;
        uVar5 = uVar11 - 1;
        if ((d <= uVar6) && (uVar6 < uVar10)) {
          uVar5 = uVar11 - 2;
          uVar6 = uVar6 + d;
        }
      }
      if (uVar12 == 0) {
        trap(7);
      }
      uVar7 = (uVar6 - uVar10) / uVar12;
      uVar11 = (d & 0xffff) * uVar7;
      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;
      uVar10 = d + uVar6;
      uVar12 = uVar7;
      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {
        uVar12 = uVar7 - 2;
      }
      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)
                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);
      return mVar8;
    }
    uVar12 = 0;
  }
  else {
    if (d < 0x10000) {
      iVar13 = 9;
      if (d < 0x100) {
        iVar13 = 1;
      }
    }
    else {
      iVar13 = 0x19;
      if (d < 0x1000000) {
        iVar13 = 0x11;
      }
    }
    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];
    uVar12 = 0x21 - ((uint)bVar1 + iVar13);
    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);
    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;
    d = d << (uVar12 & 0x1f);
    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;
    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);
    uVar6 = d >> 0x10;
    uVar10 = d & 0xffff;
    if (2 < iVar14) {
      if (uVar6 == 0) {
        trap(7);
      }
      uVar16 = ~d / uVar6;
      uVar9 = uVar16 * uVar10;
      uVar7 = ~d % uVar6 << 0x10 | 0xffff;
      uVar11 = uVar16;
      if (uVar7 < uVar9) {
        uVar7 = uVar7 + d;
        uVar11 = uVar16 - 1;
        if ((uVar7 < d) || (uVar9 <= uVar7)) {
          if (uVar6 == 0) {
            trap(7);
          }
          uVar16 = (uVar7 - uVar9) / uVar6;
          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;
          bVar2 = uVar6 < uVar16 * uVar10;
          if (bVar2) {
            mVar8 = FUN_0006fd90(bVar2,d + uVar6);
            return mVar8;
          }
          goto LAB_0006f944;
        }
        uVar11 = uVar16 - 2;
        uVar7 = uVar7 + d;
      }
      if (uVar6 == 0) {
        trap(7);
      }
      uVar17 = (uVar7 - uVar9) / uVar6;
      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;
      uVar7 = d + uVar6;
      uVar16 = uVar17;
      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&
         (uVar7 < uVar17 * uVar10)) {
        uVar16 = uVar17 - 2;
      }
LAB_0006f944:
      uVar16 = uVar11 << 0x10 | uVar16;
      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);
      iVar13 = (int)((ulonglong)lVar3 >> 0x20);
      uVar5 = uVar5 - d * iVar13;
      uVar6 = (uint)((uint)lVar3 < uVar5);
      uVar15 = d;
      if (uVar6 == 0) {
        uVar15 = 0;
      }
      uVar15 = uVar15 + uVar5;
      mVar8 = iVar13 - uVar6;
      if (d <= uVar15) {
        uVar15 = uVar15 - d;
        mVar8 = mVar8 + 1;
      }
      *qh = mVar8;
      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);
      return uVar15 >> (uVar12 & 0x1f);
    }
    if (uVar6 == 0) {
      trap(7);
    }
    uVar9 = uVar15 / uVar6;
    uVar7 = uVar9 * uVar10;
    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;
    uVar11 = uVar9;
    if (uVar15 < uVar7) {
      uVar15 = uVar15 + d;
      uVar11 = uVar9 - 1;
      if ((d <= uVar15) && (uVar15 < uVar7)) {
        uVar11 = uVar9 - 2;
        uVar15 = uVar15 + d;
      }
    }
    if (uVar6 == 0) {
      trap(7);
    }
    uVar9 = (uVar15 - uVar7) / uVar6;
    uVar10 = uVar9 * uVar10;
    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;
    uVar5 = uVar9;
    if (uVar15 < uVar10) {
      uVar15 = uVar15 + d;
      uVar5 = uVar9 - 1;
      if ((d <= uVar15) && (uVar15 < uVar10)) {
        uVar5 = uVar9 - 2;
        uVar15 = uVar15 + d;
      }
    }
    uVar15 = uVar15 - uVar10;
    *qh = uVar11 << 0x10 | uVar5;
    up = qp;
  }
  uVar5 = d >> 0x10;
  if (iVar14 < 1) goto LAB_0006fbac;
  if (uVar5 == 0) {
    trap(7);
  }
  uVar9 = uVar15 / uVar5;
  uVar7 = d & 0xffff;
  uVar11 = up[n + -2];
  uVar10 = uVar9 * uVar7;
  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;
  uVar6 = uVar9;
  if (uVar15 < uVar10) {
    uVar15 = uVar15 + d;
    uVar6 = uVar9 - 1;
    if ((d <= uVar15) && (uVar15 < uVar10)) {
      uVar6 = uVar9 - 2;
      uVar15 = uVar15 + d;
      goto LAB_0006fa84;
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar16 = (uVar15 - uVar10) / uVar5;
    uVar9 = uVar7 * uVar16;
    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;
    uVar10 = uVar16;
    if (uVar15 < uVar9) goto LAB_0006fab8;
  }
  else {
LAB_0006fa84:
    if (uVar5 == 0) {
      trap(7);
    }
    uVar16 = (uVar15 - uVar10) / uVar5;
    uVar9 = uVar7 * uVar16;
    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;
    uVar10 = uVar16;
    if (uVar15 < uVar9) {
LAB_0006fab8:
      uVar15 = uVar15 + d;
      uVar16 = uVar10 - 1;
      if ((d <= uVar15) && (uVar15 < uVar9)) {
        uVar16 = uVar10 - 2;
        uVar15 = uVar15 + d;
      }
    }
  }
  qp[n + -2] = uVar6 << 0x10 | uVar16;
  uVar15 = uVar15 - uVar9;
  if (n != 3) goto LAB_0006fbac;
  if (uVar5 == 0) {
    trap(7);
  }
  uVar9 = uVar15 / uVar5;
  uVar11 = *up;
  uVar10 = uVar7 * uVar9;
  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;
  uVar6 = uVar9;
  if (uVar15 < uVar10) {
    uVar15 = uVar15 + d;
    uVar6 = uVar9 - 1;
    if ((d <= uVar15) && (uVar15 < uVar10)) {
      uVar6 = uVar9 - 2;
      uVar15 = uVar15 + d;
      goto LAB_0006fb48;
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar9 = (uVar15 - uVar10) / uVar5;
    uVar7 = uVar9 * uVar7;
    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;
    if (uVar15 < uVar7) goto LAB_0006fb7c;
  }
  else {
LAB_0006fb48:
    if (uVar5 == 0) {
      trap(7);
    }
    uVar9 = (uVar15 - uVar10) / uVar5;
    uVar7 = uVar9 * uVar7;
    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;
    if (uVar15 < uVar7) {
LAB_0006fb7c:
      uVar15 = uVar15 + d;
      if ((uVar15 < d) || (uVar7 <= uVar15)) {
        uVar15 = uVar15 - uVar7;
        *qp = uVar6 << 0x10 | uVar9 - 1;
        goto LAB_0006fbac;
      }
      uVar9 = uVar9 - 2;
      uVar15 = uVar15 + d;
    }
  }
  uVar15 = uVar15 - uVar7;
  *qp = uVar6 << 0x10 | uVar9;
LAB_0006fbac:
  return uVar15 >> (uVar12 & 0x1f);
}



uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)

{
  byte bVar1;
  longlong lVar2;
  undefined *puVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  
  iVar12 = param_4 + -1;
  uVar13 = param_3[iVar12];
  if ((int)param_5 < 0) {
    uVar4 = uVar13 < param_5 ^ 1;
    *param_2 = uVar4;
    uVar10 = param_5;
    if (uVar4 == 0) {
      uVar10 = 0;
    }
    uVar13 = uVar13 - uVar10;
    if (2 < iVar12) {
      uVar10 = param_5 >> 0x10;
      if (uVar10 == 0) {
        trap(7);
      }
      uVar9 = ~param_5 / uVar10;
      uVar8 = (param_5 & 0xffff) * uVar9;
      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;
      uVar4 = uVar9;
      if (uVar5 < uVar8) {
        uVar5 = uVar5 + param_5;
        uVar4 = uVar9 - 1;
        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {
          uVar4 = uVar9 - 2;
          uVar5 = uVar5 + param_5;
        }
      }
      if (uVar10 == 0) {
        trap(7);
      }
      uVar6 = (uVar5 - uVar8) / uVar10;
      uVar9 = (param_5 & 0xffff) * uVar6;
      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;
      uVar8 = param_5 + uVar5;
      uVar10 = uVar6;
      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {
        uVar10 = uVar6 - 2;
      }
      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)
                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);
      return uVar13;
    }
    uVar10 = 0;
  }
  else {
    if (param_5 < 0x10000) {
      iVar11 = 9;
      if (param_5 < 0x100) {
        iVar11 = 1;
      }
    }
    else {
      iVar11 = 0x19;
      if (param_5 < 0x1000000) {
        iVar11 = 0x11;
      }
    }
    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];
    uVar10 = 0x21 - ((uint)bVar1 + iVar11);
    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);
    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;
    param_5 = param_5 << (uVar10 & 0x1f);
    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;
    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);
    uVar5 = param_5 >> 0x10;
    uVar8 = param_5 & 0xffff;
    if (2 < iVar12) {
      if (uVar5 == 0) {
        trap(7);
      }
      uVar14 = ~param_5 / uVar5;
      uVar7 = uVar14 * uVar8;
      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;
      uVar9 = uVar14;
      if (uVar6 < uVar7) {
        uVar6 = uVar6 + param_5;
        uVar9 = uVar14 - 1;
        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {
          uVar9 = uVar14 - 2;
          uVar6 = uVar6 + param_5;
          goto LAB_0006f918;
        }
        if (uVar5 == 0) {
          trap(7);
        }
        uVar14 = (uVar6 - uVar7) / uVar5;
        uVar8 = uVar14 * uVar8;
        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;
        uVar5 = uVar14;
        if (uVar8 <= uVar6) goto LAB_0006f944;
      }
      else {
LAB_0006f918:
        if (uVar5 == 0) {
          trap(7);
        }
        uVar14 = (uVar6 - uVar7) / uVar5;
        uVar8 = uVar14 * uVar8;
        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;
        uVar5 = uVar14;
        if (uVar8 <= uVar6) goto LAB_0006f944;
      }
      uVar14 = uVar5 - 1;
      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {
        uVar14 = uVar5 - 2;
      }
LAB_0006f944:
      uVar14 = uVar9 << 0x10 | uVar14;
      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);
      iVar11 = (int)((ulonglong)lVar2 >> 0x20);
      uVar4 = uVar4 - param_5 * iVar11;
      uVar5 = (uint)((uint)lVar2 < uVar4);
      uVar13 = param_5;
      if (uVar5 == 0) {
        uVar13 = 0;
      }
      uVar13 = uVar13 + uVar4;
      uVar5 = iVar11 - uVar5;
      if (param_5 <= uVar13) {
        uVar13 = uVar13 - param_5;
        uVar5 = uVar5 + 1;
      }
      *param_2 = uVar5;
      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);
      return uVar13 >> (uVar10 & 0x1f);
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar7 = uVar13 / uVar5;
    uVar6 = uVar7 * uVar8;
    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;
    uVar9 = uVar7;
    if (uVar13 < uVar6) {
      uVar13 = uVar13 + param_5;
      uVar9 = uVar7 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {
        uVar9 = uVar7 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar6) / uVar5;
    uVar8 = uVar7 * uVar8;
    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;
    uVar4 = uVar7;
    if (uVar13 < uVar8) {
      uVar13 = uVar13 + param_5;
      uVar4 = uVar7 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
        uVar4 = uVar7 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
    uVar13 = uVar13 - uVar8;
    *param_2 = uVar9 << 0x10 | uVar4;
    param_3 = param_1;
  }
  uVar4 = param_5 >> 0x10;
  if (iVar12 < 1) goto LAB_0006fbac;
  if (uVar4 == 0) {
    trap(7);
  }
  uVar7 = uVar13 / uVar4;
  uVar6 = param_5 & 0xffff;
  uVar9 = param_3[param_4 + -2];
  uVar8 = uVar7 * uVar6;
  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;
  uVar5 = uVar7;
  if (uVar13 < uVar8) {
    uVar13 = uVar13 + param_5;
    uVar5 = uVar7 - 1;
    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
      uVar5 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
      goto LAB_0006fa84;
    }
    if (uVar4 == 0) {
      trap(7);
    }
    uVar14 = (uVar13 - uVar8) / uVar4;
    uVar7 = uVar6 * uVar14;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    uVar8 = uVar14;
    if (uVar13 < uVar7) goto LAB_0006fab8;
  }
  else {
LAB_0006fa84:
    if (uVar4 == 0) {
      trap(7);
    }
    uVar14 = (uVar13 - uVar8) / uVar4;
    uVar7 = uVar6 * uVar14;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    uVar8 = uVar14;
    if (uVar13 < uVar7) {
LAB_0006fab8:
      uVar13 = uVar13 + param_5;
      uVar14 = uVar8 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {
        uVar14 = uVar8 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
  }
  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;
  uVar13 = uVar13 - uVar7;
  if (param_4 != 3) goto LAB_0006fbac;
  if (uVar4 == 0) {
    trap(7);
  }
  uVar7 = uVar13 / uVar4;
  uVar9 = *param_3;
  uVar8 = uVar6 * uVar7;
  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;
  uVar5 = uVar7;
  if (uVar13 < uVar8) {
    uVar13 = uVar13 + param_5;
    uVar5 = uVar7 - 1;
    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
      uVar5 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
      goto LAB_0006fb48;
    }
    if (uVar4 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar8) / uVar4;
    uVar6 = uVar7 * uVar6;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    if (uVar13 < uVar6) goto LAB_0006fb7c;
  }
  else {
LAB_0006fb48:
    if (uVar4 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar8) / uVar4;
    uVar6 = uVar7 * uVar6;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    if (uVar13 < uVar6) {
LAB_0006fb7c:
      uVar13 = uVar13 + param_5;
      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {
        uVar13 = uVar13 - uVar6;
        *param_1 = uVar5 << 0x10 | uVar7 - 1;
        goto LAB_0006fbac;
      }
      uVar7 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
    }
  }
  uVar13 = uVar13 - uVar6;
  *param_1 = uVar5 << 0x10 | uVar7;
LAB_0006fbac:
  return uVar13 >> (uVar10 & 0x1f);
}


lui gp,0x3
addiu gp,gp,0x5860
addu gp,gp,t9
addiu sp,sp,-0x48
or t0,a2,zero
sw s4,0x30(sp)
addiu s4,a3,-0x1
sw s7,0x3c(sp)
sll s7,s4,0x2
sw s0,0x20(sp)
sw gp,0x18(sp)
addu v0,a2,s7
sw s8,0x40(sp)
sw s6,0x38(sp)
or s6,a3,zero
sw s5,0x34(sp)
or s5,a1,zero
sw s2,0x28(sp)
or s2,a0,zero
sw ra,0x44(sp)
sw s3,0x2c(sp)
sw s1,0x24(sp)
lw s0,0x58(sp)
bltz s0,0x0006f9f8
_lw s8,0x0(v0)
lui v0,0x1
sltu v0,s0,v0
bne v0,zero,0x0006f9e4
_li v1,0x1
lui v0,0x100
li v1,0x11
li s3,0x19
sltu v0,s0,v0
movn s3,v1,v0
or v0,s3,zero
lw v1,-0x7eb4(gp)
srlv a0,s0,v0
li s1,0x21
lw t9,-0x7ad4(gp)
or a1,t0,zero
addu v1,v1,a0
or a2,s4,zero
or a0,s2,zero
lbu s3,0x0(v1)
addu s3,s3,v0
subu s1,s1,s3
addiu s3,s3,-0x1
jalr t9
_or a3,s1,zero
sllv s0,s0,s1
sllv a3,s8,s1
lw gp,0x18(sp)
slti a0,s4,0x3
or v0,a3,v0
srlv s3,s8,s3
srl v1,s0,0x10
bne a0,zero,0x0006fcd4
_andi t0,s0,0xffff
nor a0,zero,s0
teq v1,zero
divu a0,v1
mflo a2
mfhi a0
mul a3,a2,t0
sll a1,a0,0x10
ori a0,a1,0xffff
sltu a1,a0,a3
beq a1,zero,0x0006f918
_nop
addu a0,a0,s0
sltu a1,a0,s0
bne a1,zero,0x0006fdb8
_addiu t1,a2,-0x1
sltu a1,a0,a3
beq a1,zero,0x0006fdb8
_nop
addiu a2,a2,-0x2
addu a0,a0,s0
subu a0,a0,a3
teq v1,zero
divu a0,v1
mflo v1
mfhi a1
mul t0,v1,t0
sll a1,a1,0x10
ori a1,a1,0xffff
sltu a0,a1,t0
bne a0,zero,0x0006fd90
_addu a1,s0,a1
sll a0,a2,0x10
addiu a3,s3,0x1
or v1,a0,v1
multu s3,v1
mflo a1
mfhi a0
addu a2,v0,a1
addu a3,a3,a0
sltu a0,a2,a1
addu a0,a0,a3
or a3,s0,zero
mul a1,s0,a0
subu v0,v0,a1
sltu a2,a2,v0
movz a3,zero,a2
addu a3,a3,v0
sltu v0,a3,s0
beq v0,zero,0x0006fe9c
_subu a0,a0,a2
lw t9,-0x7b98(gp)
or a2,s4,zero
sw a0,0x0(s5)
or a1,s2,zero
sw v1,0x14(sp)
or a0,s2,zero
jalr t9
_sw s0,0x10(sp)
lw ra,0x44(sp)
srlv v0,v0,s1
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
li s3,0x9
sltiu v0,s0,0x100
movn s3,v1,v0
b 0x0006f86c
_or v0,s3,zero
sltu v1,s8,s0
xori v1,v1,0x1
or a3,s0,zero
sw v1,0x0(a1)
movz a3,zero,v1
slti v0,s4,0x3
beq v0,zero,0x0006fbe0
_subu a3,s8,a3
or s1,zero,zero
blez s4,0x0006fbac
_srl a1,s0,0x10
addiu s7,s7,-0x4
teq a1,zero
divu a3,a1
addu v0,t0,s7
andi t1,s0,0xffff
lw a2,0x0(v0)
srl a0,a2,0x10
mflo a3
mfhi v1
mul v0,a3,t1
sll v1,v1,0x10
or v1,a0,v1
sltu a0,v1,v0
beq a0,zero,0x0006fa84
_nop
addu v1,v1,s0
sltu a0,v1,s0
bne a0,zero,0x0006fdf4
_addiu t2,a3,-0x1
sltu a0,v1,v0
beq a0,zero,0x0006fdf4
_nop
addiu a3,a3,-0x2
addu v1,v1,s0
subu v1,v1,v0
andi a2,a2,0xffff
teq a1,zero
divu v1,a1
mflo v1
mfhi a0
mul v0,t1,v1
sll a0,a0,0x10
or a0,a2,a0
sltu a2,a0,v0
beq a2,zero,0x0006fad8
_nop
addu a0,a0,s0
sltu a2,a0,s0
bne a2,zero,0x0006fdec
_addiu t2,v1,-0x1
sltu a2,a0,v0
beq a2,zero,0x0006fdec
_nop
addiu v1,v1,-0x2
addu a0,a0,s0
sll a3,a3,0x10
addu s7,s2,s7
li a2,0x3
or v1,a3,v1
sw v1,0x0(s7)
bne s6,a2,0x0006fbac
_subu a3,a0,v0
teq a1,zero
divu a3,a1
lw a2,0x0(t0)
srl a0,a2,0x10
mflo a3
mfhi v1
mul v0,t1,a3
sll v1,v1,0x10
or v1,a0,v1
sltu a0,v1,v0
beq a0,zero,0x0006fb48
_nop
addu v1,v1,s0
sltu a0,v1,s0
bne a0,zero,0x0006fe2c
_addiu t0,a3,-0x1
sltu a0,v1,v0
beq a0,zero,0x0006fe2c
_nop
addiu a3,a3,-0x2
addu v1,v1,s0
subu v1,v1,v0
andi a2,a2,0xffff
teq a1,zero
divu v1,a1
mflo v1
mfhi a1
mul t1,v1,t1
sll a1,a1,0x10
or a1,a2,a1
sltu v0,a1,t1
beq v0,zero,0x0006fba0
_sll v0,a3,0x10
addu a1,a1,s0
sltu v0,a1,s0
bne v0,zero,0x0006fe64
_addiu a0,v1,-0x1
sltu v0,a1,t1
beq v0,zero,0x0006fe68
_sll v0,a3,0x10
addiu v1,v1,-0x2
addu a1,a1,s0
sll v0,a3,0x10
subu a3,a1,t1
or v1,v0,v1
sw v1,0x0(s2)
lw ra,0x44(sp)
srlv v0,a3,s1
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
srl a1,s0,0x10
nor v1,zero,s0
teq a1,zero
divu v1,a1
andi a2,s0,0xffff
mflo v1
mfhi a0
mul t1,a2,v1
sll a0,a0,0x10
ori v0,a0,0xffff
sltu a0,v0,t1
beq a0,zero,0x0006fc38
_nop
addu v0,v0,s0
sltu a0,v0,s0
bne a0,zero,0x0006fe84
_addiu t2,v1,-0x1
sltu a0,v0,t1
beq a0,zero,0x0006fe84
_nop
addiu v1,v1,-0x2
addu v0,v0,s0
subu v0,v0,t1
teq a1,zero
divu v0,a1
mflo v0
mfhi a0
mul a2,a2,v0
sll a0,a0,0x10
ori a0,a0,0xffff
sltu a1,a0,a2
beq a1,zero,0x0006fc80
_addu a0,s0,a0
sltu a1,a0,s0
bne a1,zero,0x0006fe7c
_addiu t1,v0,-0x1
sltu a0,a0,a2
beq a0,zero,0x0006fe7c
_nop
addiu v0,v0,-0x2
sll v1,v1,0x10
lw t9,-0x7b98(gp)
sw s0,0x10(sp)
or a2,s4,zero
or v1,v1,v0
sw v1,0x14(sp)
or a0,s2,zero
jalr t9
_or a1,t0,zero
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
teq v1,zero
divu s3,v1
srl a1,v0,0x10
mflo s3
mfhi a2
mul a0,s3,t0
sll a2,a2,0x10
or a1,a2,a1
sltu a2,a1,a0
beq a2,zero,0x0006fd24
_nop
addu a1,a1,s0
sltu a2,a1,s0
bne a2,zero,0x0006fe8c
_addiu a3,s3,-0x1
sltu a2,a1,a0
beq a2,zero,0x0006fe8c
_nop
addiu s3,s3,-0x2
addu a1,a1,s0
subu a1,a1,a0
andi v0,v0,0xffff
teq v1,zero
divu a1,v1
mflo v1
mfhi a1
mul a3,v1,t0
sll a1,a1,0x10
or v0,a1,v0
sltu a0,v0,a3
beq a0,zero,0x0006fd78
_nop
addu v0,v0,s0
sltu a0,v0,s0
bne a0,zero,0x0006fe94
_addiu a1,v1,-0x1
sltu a0,v0,a3
beq a0,zero,0x0006fe94
_nop
addiu v1,v1,-0x2
addu v0,v0,s0
sll s3,s3,0x10
subu a3,v0,a3
or v1,s3,v1
sw v1,0x0(s5)
b 0x0006fa1c
_or t0,s2,zero
sltu a0,a1,s0
bne a0,zero,0x0006fdb0
_addiu a3,v1,-0x1
sltu a1,a1,t0
beq a1,zero,0x0006fdb0
_nop
b 0x0006f944
_addiu v1,v1,-0x2
b 0x0006f944
_or v1,a3,zero
subu a0,a0,a3
teq v1,zero
divu a0,v1
mflo v1
mfhi a1
mul t0,v1,t0
sll a1,a1,0x10
ori a1,a1,0xffff
sltu a0,a1,t0
beq a0,zero,0x0006f944
_or a2,t1,zero
b 0x0006fd90
_addu a1,s0,a1
b 0x0006fad8
_or v1,t2,zero
subu v1,v1,v0
andi a2,a2,0xffff
teq a1,zero
divu v1,a1
mflo v1
mfhi a0
mul v0,t1,v1
sll a0,a0,0x10
or a0,a2,a0
sltu a2,a0,v0
beq a2,zero,0x0006fad8
_or a3,t2,zero
b 0x0006fab8
_addu a0,a0,s0
subu v1,v1,v0
andi a2,a2,0xffff
teq a1,zero
divu v1,a1
mflo v1
mfhi a1
mul t1,v1,t1
sll a1,a1,0x10
or a1,a2,a1
sltu v0,a1,t1
beq v0,zero,0x0006fb9c
_or a3,t0,zero
b 0x0006fb7c
_addu a1,a1,s0
sll v0,a3,0x10
or v1,a0,zero
or v1,v0,v1
subu a3,a1,t1
b 0x0006fbac
_sw v1,0x0(s2)
b 0x0006fc80
_or v0,t1,zero
b 0x0006fc38
_or v1,t2,zero
b 0x0006fd24
_or s3,a3,zero
b 0x0006fd78
_or v1,a1,zero
subu a3,a3,s0
b 0x0006f990
_addiu a0,a0,0x1
(translation_unit "uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)\n\n{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}\n\n" (function_definition "uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)\n\n{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" type_identifier (function_declarator "__gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (expression_statement "iVar12 = param_4 + -1;" (assignment_expression "iVar12 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "uVar13 = param_3[iVar12];" (assignment_expression "uVar13 = param_3[iVar12]" identifier = (subscript_expression "param_3[iVar12]" identifier [ identifier ])) ;) (if_statement "if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }" { (expression_statement "uVar4 = uVar13 < param_5 ^ 1;" (assignment_expression "uVar4 = uVar13 < param_5 ^ 1" identifier = (binary_expression "uVar13 < param_5 ^ 1" (binary_expression "uVar13 < param_5" identifier < identifier) ^ number_literal)) ;) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar10 = param_5;" (assignment_expression "uVar10 = param_5" identifier = identifier) ;) (if_statement "if (uVar4 == 0) {\n      uVar10 = 0;\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar10 = 0;\n    }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) })) (expression_statement "uVar13 = uVar13 - uVar10;" (assignment_expression "uVar13 = uVar13 - uVar10" identifier = (binary_expression "uVar13 - uVar10" identifier - identifier)) ;) (if_statement "if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" if (parenthesized_expression "(2 < iVar12)" ( (binary_expression "2 < iVar12" number_literal < identifier) )) (compound_statement "{\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" { (expression_statement "uVar10 = param_5 >> 0x10;" (assignment_expression "uVar10 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = ~param_5 / uVar10;" (assignment_expression "uVar9 = ~param_5 / uVar10" identifier = (binary_expression "~param_5 / uVar10" (unary_expression "~param_5" ~ identifier) / identifier)) ;) (expression_statement "uVar8 = (param_5 & 0xffff) * uVar9;" (assignment_expression "uVar8 = (param_5 & 0xffff) * uVar9" identifier = (binary_expression "(param_5 & 0xffff) * uVar9" (parenthesized_expression "(param_5 & 0xffff)" ( (binary_expression "param_5 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff" identifier = (binary_expression "~param_5 % uVar10 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar10 << 0x10" (binary_expression "~param_5 % uVar10" (unary_expression "~param_5" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" identifier = identifier) ;) (if_statement "if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" if (parenthesized_expression "(uVar5 < uVar8)" ( (binary_expression "uVar5 < uVar8" identifier < identifier) )) (compound_statement "{\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" { (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" identifier = (binary_expression "uVar5 + param_5" identifier + identifier)) ;) (expression_statement "uVar4 = uVar9 - 1;" (assignment_expression "uVar4 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" if (parenthesized_expression "((param_5 <= uVar5) && (uVar5 < uVar8))" ( (binary_expression "(param_5 <= uVar5) && (uVar5 < uVar8)" (parenthesized_expression "(param_5 <= uVar5)" ( (binary_expression "param_5 <= uVar5" identifier <= identifier) )) && (parenthesized_expression "(uVar5 < uVar8)" ( (binary_expression "uVar5 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" { (expression_statement "uVar4 = uVar9 - 2;" (assignment_expression "uVar4 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" identifier = (binary_expression "uVar5 + param_5" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar6 = (uVar5 - uVar8) / uVar10;" (assignment_expression "uVar6 = (uVar5 - uVar8) / uVar10" identifier = (binary_expression "(uVar5 - uVar8) / uVar10" (parenthesized_expression "(uVar5 - uVar8)" ( (binary_expression "uVar5 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar9 = (param_5 & 0xffff) * uVar6;" (assignment_expression "uVar9 = (param_5 & 0xffff) * uVar6" identifier = (binary_expression "(param_5 & 0xffff) * uVar6" (parenthesized_expression "(param_5 & 0xffff)" ( (binary_expression "param_5 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" identifier = (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10" (binary_expression "(uVar5 - uVar8) % uVar10" (parenthesized_expression "(uVar5 - uVar8)" ( (binary_expression "uVar5 - uVar8" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar8 = param_5 + uVar5;" (assignment_expression "uVar8 = param_5 + uVar5" identifier = (binary_expression "param_5 + uVar5" identifier + identifier)) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (if_statement "if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }" if (parenthesized_expression "(((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9))" ( (binary_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)" (parenthesized_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8))" ( (binary_expression "(uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)" (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) && (parenthesized_expression "(uVar10 = uVar6 - 1, param_5 <= uVar8)" ( (comma_expression "uVar10 = uVar6 - 1, param_5 <= uVar8" (assignment_expression "uVar10 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) , (binary_expression "param_5 <= uVar8" identifier <= identifier)) ))) )) && (parenthesized_expression "(uVar8 < uVar9)" ( (binary_expression "uVar8 < uVar9" identifier < identifier) ))) )) (compound_statement "{\n        uVar10 = uVar6 - 2;\n      }" { (expression_statement "uVar10 = uVar6 - 2;" (assignment_expression "uVar10 = uVar6 - 2" identifier = (binary_expression "uVar6 - 2" identifier - number_literal)) ;) })) (expression_statement "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" identifier = (call_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)" ( (pointer_expression "*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" * (cast_expression "(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" ( identifier , identifier , identifier , identifier , identifier , (binary_expression "uVar4 << 0x10 | uVar10" (binary_expression "uVar4 << 0x10" identifier << number_literal) | identifier) )))) ;) (return_statement "return uVar13;" return identifier ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" else (compound_statement "{\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" { (if_statement "if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" if (parenthesized_expression "(param_5 < 0x10000)" ( (binary_expression "param_5 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }" { (expression_statement "iVar11 = 9;" (assignment_expression "iVar11 = 9" identifier = number_literal) ;) (if_statement "if (param_5 < 0x100) {\n        iVar11 = 1;\n      }" if (parenthesized_expression "(param_5 < 0x100)" ( (binary_expression "param_5 < 0x100" identifier < number_literal) )) (compound_statement "{\n        iVar11 = 1;\n      }" { (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" else (compound_statement "{\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" { (expression_statement "iVar11 = 0x19;" (assignment_expression "iVar11 = 0x19" identifier = number_literal) ;) (if_statement "if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }" if (parenthesized_expression "(param_5 < 0x1000000)" ( (binary_expression "param_5 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n        iVar11 = 0x11;\n      }" { (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];" (assignment_expression "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" identifier = (subscript_expression "PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" identifier [ (binary_expression "param_5 >> iVar11" identifier >> identifier) ])) ;) (expression_statement "uVar10 = 0x21 - ((uint)bVar1 + iVar11);" (assignment_expression "uVar10 = 0x21 - ((uint)bVar1 + iVar11)" identifier = (binary_expression "0x21 - ((uint)bVar1 + iVar11)" number_literal - (parenthesized_expression "((uint)bVar1 + iVar11)" ( (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )))) ;) (expression_statement "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" identifier = (call_expression "(*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009d56c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009d56c" * (cast_expression "(code *)PTR___gmpn_lshift_0009d56c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_3,iVar12,uVar10)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;" (assignment_expression "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8" identifier = identifier) ;) (expression_statement "param_5 = param_5 << (uVar10 & 0x1f);" (assignment_expression "param_5 = param_5 << (uVar10 & 0x1f)" identifier = (binary_expression "param_5 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;" (assignment_expression "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4" identifier = (binary_expression "uVar13 << (uVar10 & 0x1f) | uVar4" (binary_expression "uVar13 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | identifier)) ;) (expression_statement "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);" (assignment_expression "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" identifier = (binary_expression "uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" identifier >> (parenthesized_expression "(((uint)bVar1 + iVar11) - 1 & 0x1f)" ( (binary_expression "((uint)bVar1 + iVar11) - 1 & 0x1f" (binary_expression "((uint)bVar1 + iVar11) - 1" (parenthesized_expression "((uint)bVar1 + iVar11)" ( (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )) - number_literal) & number_literal) )))) ;) (expression_statement "uVar5 = param_5 >> 0x10;" (assignment_expression "uVar5 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar8 = param_5 & 0xffff;" (assignment_expression "uVar8 = param_5 & 0xffff" identifier = (binary_expression "param_5 & 0xffff" identifier & number_literal)) ;) (if_statement "if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" if (parenthesized_expression "(2 < iVar12)" ( (binary_expression "2 < iVar12" number_literal < identifier) )) (compound_statement "{\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" { (if_statement "if (uVar5 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = ~param_5 / uVar5;" (assignment_expression "uVar14 = ~param_5 / uVar5" identifier = (binary_expression "~param_5 / uVar5" (unary_expression "~param_5" ~ identifier) / identifier)) ;) (expression_statement "uVar7 = uVar14 * uVar8;" (assignment_expression "uVar7 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "~param_5 % uVar5 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar5 << 0x10" (binary_expression "~param_5 % uVar5" (unary_expression "~param_5" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (if_statement "if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" if (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" { (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" identifier = (binary_expression "uVar6 + param_5" identifier + identifier)) ;) (expression_statement "uVar9 = uVar14 - 1;" (assignment_expression "uVar9 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" if (parenthesized_expression "((param_5 <= uVar6) && (uVar6 < uVar7))" ( (binary_expression "(param_5 <= uVar6) && (uVar6 < uVar7)" (parenthesized_expression "(param_5 <= uVar6)" ( (binary_expression "param_5 <= uVar6" identifier <= identifier) )) && (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" { (expression_statement "uVar9 = uVar14 - 2;" (assignment_expression "uVar9 = uVar14 - 2" identifier = (binary_expression "uVar14 - 2" identifier - number_literal)) ;) (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" identifier = (binary_expression "uVar6 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006f918;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" identifier = (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" identifier = identifier) ;) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" if (parenthesized_expression "(uVar8 <= uVar6)" ( (binary_expression "uVar8 <= uVar6" identifier <= identifier) )) (goto_statement "goto LAB_0006f944;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" else (compound_statement "{\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" { (labeled_statement "LAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }" statement_identifier : (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" identifier = (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" identifier = identifier) ;) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" if (parenthesized_expression "(uVar8 <= uVar6)" ( (binary_expression "uVar8 <= uVar6" identifier <= identifier) )) (goto_statement "goto LAB_0006f944;" goto statement_identifier ;)) }))) (expression_statement "uVar14 = uVar5 - 1;" (assignment_expression "uVar14 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }" if (parenthesized_expression "((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8))" ( (binary_expression "(param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)" (parenthesized_expression "(param_5 <= param_5 + uVar6)" ( (binary_expression "param_5 <= param_5 + uVar6" identifier <= (binary_expression "param_5 + uVar6" identifier + identifier)) )) && (parenthesized_expression "(param_5 + uVar6 < uVar8)" ( (binary_expression "param_5 + uVar6 < uVar8" (binary_expression "param_5 + uVar6" identifier + identifier) < identifier) ))) )) (compound_statement "{\n        uVar14 = uVar5 - 2;\n      }" { (expression_statement "uVar14 = uVar5 - 2;" (assignment_expression "uVar14 = uVar5 - 2" identifier = (binary_expression "uVar5 - 2" identifier - number_literal)) ;) })) (labeled_statement "LAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;" statement_identifier : (expression_statement "uVar14 = uVar9 << 0x10 | uVar14;" (assignment_expression "uVar14 = uVar9 << 0x10 | uVar14" identifier = (binary_expression "uVar9 << 0x10 | uVar14" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;)) (expression_statement "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);" (assignment_expression "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) + (call_expression "CONCAT44(uVar13 + 1,uVar4)" identifier (argument_list "(uVar13 + 1,uVar4)" ( (binary_expression "uVar13 + 1" identifier + number_literal) , identifier ))))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = uVar4 - param_5 * iVar11;" (assignment_expression "uVar4 = uVar4 - param_5 * iVar11" identifier = (binary_expression "uVar4 - param_5 * iVar11" identifier - (binary_expression "param_5 * iVar11" identifier * identifier))) ;) (expression_statement "uVar5 = (uint)((uint)lVar2 < uVar4);" (assignment_expression "uVar5 = (uint)((uint)lVar2 < uVar4)" identifier = (call_expression "(uint)((uint)lVar2 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar2 < uVar4)" ( (binary_expression "(uint)lVar2 < uVar4" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )))) ;) (expression_statement "uVar13 = param_5;" (assignment_expression "uVar13 = param_5" identifier = identifier) ;) (if_statement "if (uVar5 == 0) {\n        uVar13 = 0;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) })) (expression_statement "uVar13 = uVar13 + uVar4;" (assignment_expression "uVar13 = uVar13 + uVar4" identifier = (binary_expression "uVar13 + uVar4" identifier + identifier)) ;) (expression_statement "uVar5 = iVar11 - uVar5;" (assignment_expression "uVar5 = iVar11 - uVar5" identifier = (binary_expression "iVar11 - uVar5" identifier - identifier)) ;) (if_statement "if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) (compound_statement "{\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" { (expression_statement "uVar13 = uVar13 - param_5;" (assignment_expression "uVar13 = uVar13 - param_5" identifier = (binary_expression "uVar13 - param_5" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);" (assignment_expression "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" identifier = (call_expression "(*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,iVar12,uVar13,param_5,uVar14)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar13 >> (uVar10 & 0x1f);" return (binary_expression "uVar13 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ;) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar5;" (assignment_expression "uVar7 = uVar13 / uVar5" identifier = (binary_expression "uVar13 / uVar5" identifier / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar8;" (assignment_expression "uVar6 = uVar7 * uVar8" identifier = (binary_expression "uVar7 * uVar8" identifier * identifier)) ;) (expression_statement "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;" (assignment_expression "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" identifier = (binary_expression "uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" (binary_expression "uVar13 % uVar5 << 0x10" (binary_expression "uVar13 % uVar5" identifier % identifier) << number_literal) | (binary_expression "uVar4 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar9 = uVar7 - 1;" (assignment_expression "uVar9 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar6))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar6)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar9 = uVar7 - 2;" (assignment_expression "uVar9 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = (uVar13 - uVar6) / uVar5;" (assignment_expression "uVar7 = (uVar13 - uVar6) / uVar5" identifier = (binary_expression "(uVar13 - uVar6) / uVar5" (parenthesized_expression "(uVar13 - uVar6)" ( (binary_expression "uVar13 - uVar6" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar7 * uVar8;" (assignment_expression "uVar8 = uVar7 * uVar8" identifier = (binary_expression "uVar7 * uVar8" identifier * identifier)) ;) (expression_statement "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;" (assignment_expression "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" identifier = (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10" (binary_expression "(uVar13 - uVar6) % uVar5" (parenthesized_expression "(uVar13 - uVar6)" ( (binary_expression "uVar13 - uVar6" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar4 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar4 = uVar7;" (assignment_expression "uVar4 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar4 = uVar7 - 1;" (assignment_expression "uVar4 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar4 = uVar7 - 2;" (assignment_expression "uVar4 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) (expression_statement "uVar13 = uVar13 - uVar8;" (assignment_expression "uVar13 = uVar13 - uVar8" identifier = (binary_expression "uVar13 - uVar8" identifier - identifier)) ;) (expression_statement "*param_2 = uVar9 << 0x10 | uVar4;" (assignment_expression "*param_2 = uVar9 << 0x10 | uVar4" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar9 << 0x10 | uVar4" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "param_3 = param_1;" (assignment_expression "param_3 = param_1" identifier = identifier) ;) }))) (expression_statement "uVar4 = param_5 >> 0x10;" (assignment_expression "uVar4 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (iVar12 < 1) goto LAB_0006fbac;" if (parenthesized_expression "(iVar12 < 1)" ( (binary_expression "iVar12 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" identifier = (binary_expression "uVar13 / uVar4" identifier / identifier)) ;) (expression_statement "uVar6 = param_5 & 0xffff;" (assignment_expression "uVar6 = param_5 & 0xffff" identifier = (binary_expression "param_5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar9 = param_3[param_4 + -2];" (assignment_expression "uVar9 = param_3[param_4 + -2]" identifier = (subscript_expression "param_3[param_4 + -2]" identifier [ (binary_expression "param_4 + -2" identifier + number_literal) ])) ;) (expression_statement "uVar8 = uVar7 * uVar6;" (assignment_expression "uVar8 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" identifier = (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) | (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" identifier % identifier) << number_literal))) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" { (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006fa84;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" identifier = (binary_expression "uVar6 * uVar14" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" identifier = identifier) ;) (if_statement "if (uVar13 < uVar7) goto LAB_0006fab8;" if (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) )) (goto_statement "goto LAB_0006fab8;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" else (compound_statement "{\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" { (labeled_statement "LAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" identifier = (binary_expression "uVar6 * uVar14" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" identifier = identifier) ;) (if_statement "if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) )) (compound_statement "{\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (labeled_statement "LAB_0006fab8:\n      uVar13 = uVar13 + param_5;" statement_identifier : (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;)) (expression_statement "uVar14 = uVar8 - 1;" (assignment_expression "uVar14 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar7))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar7)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar14 = uVar8 - 2;" (assignment_expression "uVar14 = uVar8 - 2" identifier = (binary_expression "uVar8 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) }))) (expression_statement "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;" (assignment_expression "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14" (subscript_expression "param_1[param_4 + -2]" identifier [ (binary_expression "param_4 + -2" identifier + number_literal) ]) = (binary_expression "uVar5 << 0x10 | uVar14" (binary_expression "uVar5 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "uVar13 = uVar13 - uVar7;" (assignment_expression "uVar13 = uVar13 - uVar7" identifier = (binary_expression "uVar13 - uVar7" identifier - identifier)) ;) (if_statement "if (param_4 != 3) goto LAB_0006fbac;" if (parenthesized_expression "(param_4 != 3)" ( (binary_expression "param_4 != 3" identifier != number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" identifier = (binary_expression "uVar13 / uVar4" identifier / identifier)) ;) (expression_statement "uVar9 = *param_3;" (assignment_expression "uVar9 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar8 = uVar6 * uVar7;" (assignment_expression "uVar8 = uVar6 * uVar7" identifier = (binary_expression "uVar6 * uVar7" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" identifier = (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) | (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" identifier % identifier) << number_literal))) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" { (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006fb48;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar13 < uVar6) goto LAB_0006fb7c;" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (goto_statement "goto LAB_0006fb7c;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" else (compound_statement "{\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" { (labeled_statement "LAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (compound_statement "{\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" { (labeled_statement "LAB_0006fb7c:\n      uVar13 = uVar13 + param_5;" statement_identifier : (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;)) (if_statement "if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" if (parenthesized_expression "((uVar13 < param_5) || (uVar6 <= uVar13))" ( (binary_expression "(uVar13 < param_5) || (uVar6 <= uVar13)" (parenthesized_expression "(uVar13 < param_5)" ( (binary_expression "uVar13 < param_5" identifier < identifier) )) || (parenthesized_expression "(uVar6 <= uVar13)" ( (binary_expression "uVar6 <= uVar13" identifier <= identifier) ))) )) (compound_statement "{\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" { (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" identifier = (binary_expression "uVar13 - uVar6" identifier - identifier)) ;) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7 - 1;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7 - 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar5 << 0x10 | uVar7 - 1" (binary_expression "uVar5 << 0x10" identifier << number_literal) | (binary_expression "uVar7 - 1" identifier - number_literal))) ;) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;) })) (expression_statement "uVar7 = uVar7 - 2;" (assignment_expression "uVar7 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) }))) (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" identifier = (binary_expression "uVar13 - uVar6" identifier - identifier)) ;) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar5 << 0x10 | uVar7" (binary_expression "uVar5 << 0x10" identifier << number_literal) | identifier)) ;) (labeled_statement "LAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);" statement_identifier : (return_statement "return uVar13 >> (uVar10 & 0x1f);" return (binary_expression "uVar13 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ;)) })))
(translation_unit "mp_limb_t __gmpn_div_qr_1(mp_ptr qp,mp_limb_t *qh,mp_srcptr up,mp_size_t n,mp_limb_t d)\n\n{\n  byte bVar1;\n  bool bVar2;\n  longlong lVar3;\n  undefined *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  mp_limb_t mVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  iVar14 = n + -1;\n  uVar15 = up[iVar14];\n  if ((int)d < 0) {\n    uVar12 = uVar15 < d ^ 1;\n    *qh = uVar12;\n    mVar8 = d;\n    if (uVar12 == 0) {\n      mVar8 = 0;\n    }\n    uVar15 = uVar15 - mVar8;\n    if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }\n    uVar12 = 0;\n  }\n  else {\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }\n  uVar5 = d >> 0x10;\n  if (iVar14 < 1) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar7 = d & 0xffff;\n  uVar11 = up[n + -2];\n  uVar10 = uVar9 * uVar7;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }\n  qp[n + -2] = uVar6 << 0x10 | uVar16;\n  uVar15 = uVar15 - uVar9;\n  if (n != 3) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar11 = *up;\n  uVar10 = uVar7 * uVar9;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }\n  uVar15 = uVar15 - uVar7;\n  *qp = uVar6 << 0x10 | uVar9;\nLAB_0006fbac:\n  return uVar15 >> (uVar12 & 0x1f);\n}\n\n" (function_definition "mp_limb_t __gmpn_div_qr_1(mp_ptr qp,mp_limb_t *qh,mp_srcptr up,mp_size_t n,mp_limb_t d)\n\n{\n  byte bVar1;\n  bool bVar2;\n  longlong lVar3;\n  undefined *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  mp_limb_t mVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  iVar14 = n + -1;\n  uVar15 = up[iVar14];\n  if ((int)d < 0) {\n    uVar12 = uVar15 < d ^ 1;\n    *qh = uVar12;\n    mVar8 = d;\n    if (uVar12 == 0) {\n      mVar8 = 0;\n    }\n    uVar15 = uVar15 - mVar8;\n    if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }\n    uVar12 = 0;\n  }\n  else {\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }\n  uVar5 = d >> 0x10;\n  if (iVar14 < 1) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar7 = d & 0xffff;\n  uVar11 = up[n + -2];\n  uVar10 = uVar9 * uVar7;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }\n  qp[n + -2] = uVar6 << 0x10 | uVar16;\n  uVar15 = uVar15 - uVar9;\n  if (n != 3) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar11 = *up;\n  uVar10 = uVar7 * uVar9;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }\n  uVar15 = uVar15 - uVar7;\n  *qp = uVar6 << 0x10 | uVar9;\nLAB_0006fbac:\n  return uVar15 >> (uVar12 & 0x1f);\n}" type_identifier (function_declarator "__gmpn_div_qr_1(mp_ptr qp,mp_limb_t *qh,mp_srcptr up,mp_size_t n,mp_limb_t d)" identifier (parameter_list "(mp_ptr qp,mp_limb_t *qh,mp_srcptr up,mp_size_t n,mp_limb_t d)" ( (parameter_declaration "mp_ptr qp" type_identifier identifier) , (parameter_declaration "mp_limb_t *qh" type_identifier (pointer_declarator "*qh" * identifier)) , (parameter_declaration "mp_srcptr up" type_identifier identifier) , (parameter_declaration "mp_size_t n" type_identifier identifier) , (parameter_declaration "mp_limb_t d" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  longlong lVar3;\n  undefined *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  mp_limb_t mVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  uint uVar15;\n  uint uVar16;\n  uint uVar17;\n  \n  iVar14 = n + -1;\n  uVar15 = up[iVar14];\n  if ((int)d < 0) {\n    uVar12 = uVar15 < d ^ 1;\n    *qh = uVar12;\n    mVar8 = d;\n    if (uVar12 == 0) {\n      mVar8 = 0;\n    }\n    uVar15 = uVar15 - mVar8;\n    if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }\n    uVar12 = 0;\n  }\n  else {\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }\n  uVar5 = d >> 0x10;\n  if (iVar14 < 1) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar7 = d & 0xffff;\n  uVar11 = up[n + -2];\n  uVar10 = uVar9 * uVar7;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }\n  qp[n + -2] = uVar6 << 0x10 | uVar16;\n  uVar15 = uVar15 - uVar9;\n  if (n != 3) goto LAB_0006fbac;\n  if (uVar5 == 0) {\n    trap(7);\n  }\n  uVar9 = uVar15 / uVar5;\n  uVar11 = *up;\n  uVar10 = uVar7 * uVar9;\n  uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;\n  uVar6 = uVar9;\n  if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }\n  uVar15 = uVar15 - uVar7;\n  *qp = uVar6 << 0x10 | uVar9;\nLAB_0006fbac:\n  return uVar15 >> (uVar12 & 0x1f);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "mp_limb_t mVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (expression_statement "iVar14 = n + -1;" (assignment_expression "iVar14 = n + -1" identifier = (binary_expression "n + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = up[iVar14];" (assignment_expression "uVar15 = up[iVar14]" identifier = (subscript_expression "up[iVar14]" identifier [ identifier ])) ;) (if_statement "if ((int)d < 0) {\n    uVar12 = uVar15 < d ^ 1;\n    *qh = uVar12;\n    mVar8 = d;\n    if (uVar12 == 0) {\n      mVar8 = 0;\n    }\n    uVar15 = uVar15 - mVar8;\n    if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }\n    uVar12 = 0;\n  }\n  else {\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }" if (parenthesized_expression "((int)d < 0)" ( (binary_expression "(int)d < 0" (cast_expression "(int)d" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar12 = uVar15 < d ^ 1;\n    *qh = uVar12;\n    mVar8 = d;\n    if (uVar12 == 0) {\n      mVar8 = 0;\n    }\n    uVar15 = uVar15 - mVar8;\n    if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }\n    uVar12 = 0;\n  }" { (expression_statement "uVar12 = uVar15 < d ^ 1;" (assignment_expression "uVar12 = uVar15 < d ^ 1" identifier = (binary_expression "uVar15 < d ^ 1" (binary_expression "uVar15 < d" identifier < identifier) ^ number_literal)) ;) (expression_statement "*qh = uVar12;" (assignment_expression "*qh = uVar12" (pointer_expression "*qh" * identifier) = identifier) ;) (expression_statement "mVar8 = d;" (assignment_expression "mVar8 = d" identifier = identifier) ;) (if_statement "if (uVar12 == 0) {\n      mVar8 = 0;\n    }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n      mVar8 = 0;\n    }" { (expression_statement "mVar8 = 0;" (assignment_expression "mVar8 = 0" identifier = number_literal) ;) })) (expression_statement "uVar15 = uVar15 - mVar8;" (assignment_expression "uVar15 = uVar15 - mVar8" identifier = (binary_expression "uVar15 - mVar8" identifier - identifier)) ;) (if_statement "if (2 < iVar14) {\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }" if (parenthesized_expression "(2 < iVar14)" ( (binary_expression "2 < iVar14" number_literal < identifier) )) (compound_statement "{\n      uVar12 = d >> 0x10;\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar11 = ~d / uVar12;\n      uVar10 = (d & 0xffff) * uVar11;\n      uVar6 = ~d % uVar12 << 0x10 | 0xffff;\n      uVar5 = uVar11;\n      if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }\n      if (uVar12 == 0) {\n        trap(7);\n      }\n      uVar7 = (uVar6 - uVar10) / uVar12;\n      uVar11 = (d & 0xffff) * uVar7;\n      uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;\n      uVar10 = d + uVar6;\n      uVar12 = uVar7;\n      if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }\n      mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);\n      return mVar8;\n    }" { (expression_statement "uVar12 = d >> 0x10;" (assignment_expression "uVar12 = d >> 0x10" identifier = (binary_expression "d >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar11 = ~d / uVar12;" (assignment_expression "uVar11 = ~d / uVar12" identifier = (binary_expression "~d / uVar12" (unary_expression "~d" ~ identifier) / identifier)) ;) (expression_statement "uVar10 = (d & 0xffff) * uVar11;" (assignment_expression "uVar10 = (d & 0xffff) * uVar11" identifier = (binary_expression "(d & 0xffff) * uVar11" (parenthesized_expression "(d & 0xffff)" ( (binary_expression "d & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar6 = ~d % uVar12 << 0x10 | 0xffff;" (assignment_expression "uVar6 = ~d % uVar12 << 0x10 | 0xffff" identifier = (binary_expression "~d % uVar12 << 0x10 | 0xffff" (binary_expression "~d % uVar12 << 0x10" (binary_expression "~d % uVar12" (unary_expression "~d" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar5 = uVar11;" (assignment_expression "uVar5 = uVar11" identifier = identifier) ;) (if_statement "if (uVar6 < uVar10) {\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }" if (parenthesized_expression "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) )) (compound_statement "{\n        uVar6 = uVar6 + d;\n        uVar5 = uVar11 - 1;\n        if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }\n      }" { (expression_statement "uVar6 = uVar6 + d;" (assignment_expression "uVar6 = uVar6 + d" identifier = (binary_expression "uVar6 + d" identifier + identifier)) ;) (expression_statement "uVar5 = uVar11 - 1;" (assignment_expression "uVar5 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar6) && (uVar6 < uVar10)) {\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }" if (parenthesized_expression "((d <= uVar6) && (uVar6 < uVar10))" ( (binary_expression "(d <= uVar6) && (uVar6 < uVar10)" (parenthesized_expression "(d <= uVar6)" ( (binary_expression "d <= uVar6" identifier <= identifier) )) && (parenthesized_expression "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n          uVar5 = uVar11 - 2;\n          uVar6 = uVar6 + d;\n        }" { (expression_statement "uVar5 = uVar11 - 2;" (assignment_expression "uVar5 = uVar11 - 2" identifier = (binary_expression "uVar11 - 2" identifier - number_literal)) ;) (expression_statement "uVar6 = uVar6 + d;" (assignment_expression "uVar6 = uVar6 + d" identifier = (binary_expression "uVar6 + d" identifier + identifier)) ;) })) })) (if_statement "if (uVar12 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = (uVar6 - uVar10) / uVar12;" (assignment_expression "uVar7 = (uVar6 - uVar10) / uVar12" identifier = (binary_expression "(uVar6 - uVar10) / uVar12" (parenthesized_expression "(uVar6 - uVar10)" ( (binary_expression "uVar6 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar11 = (d & 0xffff) * uVar7;" (assignment_expression "uVar11 = (d & 0xffff) * uVar7" identifier = (binary_expression "(d & 0xffff) * uVar7" (parenthesized_expression "(d & 0xffff)" ( (binary_expression "d & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar10) % uVar12 << 0x10 | 0xffff" identifier = (binary_expression "(uVar6 - uVar10) % uVar12 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar10) % uVar12 << 0x10" (binary_expression "(uVar6 - uVar10) % uVar12" (parenthesized_expression "(uVar6 - uVar10)" ( (binary_expression "uVar6 - uVar10" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar10 = d + uVar6;" (assignment_expression "uVar10 = d + uVar6" identifier = (binary_expression "d + uVar6" identifier + identifier)) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)) {\n        uVar12 = uVar7 - 2;\n      }" if (parenthesized_expression "(((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11))" ( (binary_expression "((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)) && (uVar10 < uVar11)" (parenthesized_expression "((uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10))" ( (binary_expression "(uVar6 < uVar11) && (uVar12 = uVar7 - 1, d <= uVar10)" (parenthesized_expression "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) )) && (parenthesized_expression "(uVar12 = uVar7 - 1, d <= uVar10)" ( (comma_expression "uVar12 = uVar7 - 1, d <= uVar10" (assignment_expression "uVar12 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) , (binary_expression "d <= uVar10" identifier <= identifier)) ))) )) && (parenthesized_expression "(uVar10 < uVar11)" ( (binary_expression "uVar10 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n        uVar12 = uVar7 - 2;\n      }" { (expression_statement "uVar12 = uVar7 - 2;" (assignment_expression "uVar12 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) })) (expression_statement "mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12);" (assignment_expression "mVar8 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                        (qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)" ( (pointer_expression "*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" * (cast_expression "(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(qp,up,iVar14,uVar15,d,uVar5 << 0x10 | uVar12)" ( identifier , identifier , identifier , identifier , identifier , (binary_expression "uVar5 << 0x10 | uVar12" (binary_expression "uVar5 << 0x10" identifier << number_literal) | identifier) )))) ;) (return_statement "return mVar8;" return identifier ;) })) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }" else (compound_statement "{\n    if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];\n    uVar12 = 0x21 - ((uint)bVar1 + iVar13);\n    uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);\n    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    d = d << (uVar12 & 0x1f);\n    uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;\n    uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);\n    uVar6 = d >> 0x10;\n    uVar10 = d & 0xffff;\n    if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = uVar15 / uVar6;\n    uVar7 = uVar9 * uVar10;\n    uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;\n    uVar11 = uVar9;\n    if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    if (uVar6 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar7) / uVar6;\n    uVar10 = uVar9 * uVar10;\n    uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;\n    uVar5 = uVar9;\n    if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n    uVar15 = uVar15 - uVar10;\n    *qh = uVar11 << 0x10 | uVar5;\n    up = qp;\n  }" { (if_statement "if (d < 0x10000) {\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }\n    else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }" if (parenthesized_expression "(d < 0x10000)" ( (binary_expression "d < 0x10000" identifier < number_literal) )) (compound_statement "{\n      iVar13 = 9;\n      if (d < 0x100) {\n        iVar13 = 1;\n      }\n    }" { (expression_statement "iVar13 = 9;" (assignment_expression "iVar13 = 9" identifier = number_literal) ;) (if_statement "if (d < 0x100) {\n        iVar13 = 1;\n      }" if (parenthesized_expression "(d < 0x100)" ( (binary_expression "d < 0x100" identifier < number_literal) )) (compound_statement "{\n        iVar13 = 1;\n      }" { (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }" else (compound_statement "{\n      iVar13 = 0x19;\n      if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }\n    }" { (expression_statement "iVar13 = 0x19;" (assignment_expression "iVar13 = 0x19" identifier = number_literal) ;) (if_statement "if (d < 0x1000000) {\n        iVar13 = 0x11;\n      }" if (parenthesized_expression "(d < 0x1000000)" ( (binary_expression "d < 0x1000000" identifier < number_literal) )) (compound_statement "{\n        iVar13 = 0x11;\n      }" { (expression_statement "iVar13 = 0x11;" (assignment_expression "iVar13 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13];" (assignment_expression "bVar1 = PTR___gmpn_clz_tab_0009d18c[d >> iVar13]" identifier = (subscript_expression "PTR___gmpn_clz_tab_0009d18c[d >> iVar13]" identifier [ (binary_expression "d >> iVar13" identifier >> identifier) ])) ;) (expression_statement "uVar12 = 0x21 - ((uint)bVar1 + iVar13);" (assignment_expression "uVar12 = 0x21 - ((uint)bVar1 + iVar13)" identifier = (binary_expression "0x21 - ((uint)bVar1 + iVar13)" number_literal - (parenthesized_expression "((uint)bVar1 + iVar13)" ( (binary_expression "(uint)bVar1 + iVar13" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )))) ;) (expression_statement "uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12);" (assignment_expression "uVar5 = (*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12)" identifier = (call_expression "(*(code *)PTR___gmpn_lshift_0009d56c)(qp,up,iVar14,uVar12)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009d56c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009d56c" * (cast_expression "(code *)PTR___gmpn_lshift_0009d56c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(qp,up,iVar14,uVar12)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;" (assignment_expression "puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8" identifier = identifier) ;) (expression_statement "d = d << (uVar12 & 0x1f);" (assignment_expression "d = d << (uVar12 & 0x1f)" identifier = (binary_expression "d << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5;" (assignment_expression "uVar5 = uVar15 << (uVar12 & 0x1f) | uVar5" identifier = (binary_expression "uVar15 << (uVar12 & 0x1f) | uVar5" (binary_expression "uVar15 << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) | identifier)) ;) (expression_statement "uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f);" (assignment_expression "uVar15 = uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f)" identifier = (binary_expression "uVar15 >> (((uint)bVar1 + iVar13) - 1 & 0x1f)" identifier >> (parenthesized_expression "(((uint)bVar1 + iVar13) - 1 & 0x1f)" ( (binary_expression "((uint)bVar1 + iVar13) - 1 & 0x1f" (binary_expression "((uint)bVar1 + iVar13) - 1" (parenthesized_expression "((uint)bVar1 + iVar13)" ( (binary_expression "(uint)bVar1 + iVar13" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )) - number_literal) & number_literal) )))) ;) (expression_statement "uVar6 = d >> 0x10;" (assignment_expression "uVar6 = d >> 0x10" identifier = (binary_expression "d >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar10 = d & 0xffff;" (assignment_expression "uVar10 = d & 0xffff" identifier = (binary_expression "d & 0xffff" identifier & number_literal)) ;) (if_statement "if (2 < iVar14) {\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }" if (parenthesized_expression "(2 < iVar14)" ( (binary_expression "2 < iVar14" number_literal < identifier) )) (compound_statement "{\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar16 = ~d / uVar6;\n      uVar9 = uVar16 * uVar10;\n      uVar7 = ~d % uVar6 << 0x10 | 0xffff;\n      uVar11 = uVar16;\n      if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }\n      if (uVar6 == 0) {\n        trap(7);\n      }\n      uVar17 = (uVar7 - uVar9) / uVar6;\n      uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n      uVar7 = d + uVar6;\n      uVar16 = uVar17;\n      if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }\nLAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;\n      lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);\n      iVar13 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar5 - d * iVar13;\n      uVar6 = (uint)((uint)lVar3 < uVar5);\n      uVar15 = d;\n      if (uVar6 == 0) {\n        uVar15 = 0;\n      }\n      uVar15 = uVar15 + uVar5;\n      mVar8 = iVar13 - uVar6;\n      if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }\n      *qh = mVar8;\n      uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);\n      return uVar15 >> (uVar12 & 0x1f);\n    }" { (if_statement "if (uVar6 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = ~d / uVar6;" (assignment_expression "uVar16 = ~d / uVar6" identifier = (binary_expression "~d / uVar6" (unary_expression "~d" ~ identifier) / identifier)) ;) (expression_statement "uVar9 = uVar16 * uVar10;" (assignment_expression "uVar9 = uVar16 * uVar10" identifier = (binary_expression "uVar16 * uVar10" identifier * identifier)) ;) (expression_statement "uVar7 = ~d % uVar6 << 0x10 | 0xffff;" (assignment_expression "uVar7 = ~d % uVar6 << 0x10 | 0xffff" identifier = (binary_expression "~d % uVar6 << 0x10 | 0xffff" (binary_expression "~d % uVar6 << 0x10" (binary_expression "~d % uVar6" (unary_expression "~d" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar11 = uVar16;" (assignment_expression "uVar11 = uVar16" identifier = identifier) ;) (if_statement "if (uVar7 < uVar9) {\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }" if (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) (compound_statement "{\n        uVar7 = uVar7 + d;\n        uVar11 = uVar16 - 1;\n        if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }\n        uVar11 = uVar16 - 2;\n        uVar7 = uVar7 + d;\n      }" { (expression_statement "uVar7 = uVar7 + d;" (assignment_expression "uVar7 = uVar7 + d" identifier = (binary_expression "uVar7 + d" identifier + identifier)) ;) (expression_statement "uVar11 = uVar16 - 1;" (assignment_expression "uVar11 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar7 < d) || (uVar9 <= uVar7)) {\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }" if (parenthesized_expression "((uVar7 < d) || (uVar9 <= uVar7))" ( (binary_expression "(uVar7 < d) || (uVar9 <= uVar7)" (parenthesized_expression "(uVar7 < d)" ( (binary_expression "uVar7 < d" identifier < identifier) )) || (parenthesized_expression "(uVar9 <= uVar7)" ( (binary_expression "uVar9 <= uVar7" identifier <= identifier) ))) )) (compound_statement "{\n          if (uVar6 == 0) {\n            trap(7);\n          }\n          uVar16 = (uVar7 - uVar9) / uVar6;\n          uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;\n          bVar2 = uVar6 < uVar16 * uVar10;\n          if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }\n          goto LAB_0006f944;\n        }" { (if_statement "if (uVar6 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = (uVar7 - uVar9) / uVar6;" (assignment_expression "uVar16 = (uVar7 - uVar9) / uVar6" identifier = (binary_expression "(uVar7 - uVar9) / uVar6" (parenthesized_expression "(uVar7 - uVar9)" ( (binary_expression "uVar7 - uVar9" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff" identifier = (binary_expression "(uVar7 - uVar9) % uVar6 << 0x10 | 0xffff" (binary_expression "(uVar7 - uVar9) % uVar6 << 0x10" (binary_expression "(uVar7 - uVar9) % uVar6" (parenthesized_expression "(uVar7 - uVar9)" ( (binary_expression "uVar7 - uVar9" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "bVar2 = uVar6 < uVar16 * uVar10;" (assignment_expression "bVar2 = uVar6 < uVar16 * uVar10" identifier = (binary_expression "uVar6 < uVar16 * uVar10" identifier < (binary_expression "uVar16 * uVar10" identifier * identifier))) ;) (if_statement "if (bVar2) {\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n            mVar8 = FUN_0006fd90(bVar2,d + uVar6);\n            return mVar8;\n          }" { (expression_statement "mVar8 = FUN_0006fd90(bVar2,d + uVar6);" (assignment_expression "mVar8 = FUN_0006fd90(bVar2,d + uVar6)" identifier = (call_expression "FUN_0006fd90(bVar2,d + uVar6)" identifier (argument_list "(bVar2,d + uVar6)" ( identifier , (binary_expression "d + uVar6" identifier + identifier) )))) ;) (return_statement "return mVar8;" return identifier ;) })) (goto_statement "goto LAB_0006f944;" goto statement_identifier ;) })) (expression_statement "uVar11 = uVar16 - 2;" (assignment_expression "uVar11 = uVar16 - 2" identifier = (binary_expression "uVar16 - 2" identifier - number_literal)) ;) (expression_statement "uVar7 = uVar7 + d;" (assignment_expression "uVar7 = uVar7 + d" identifier = (binary_expression "uVar7 + d" identifier + identifier)) ;) })) (if_statement "if (uVar6 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar7 - uVar9) / uVar6;" (assignment_expression "uVar17 = (uVar7 - uVar9) / uVar6" identifier = (binary_expression "(uVar7 - uVar9) / uVar6" (parenthesized_expression "(uVar7 - uVar9)" ( (binary_expression "uVar7 - uVar9" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar7 - uVar9) % uVar6 << 0x10 | 0xffff" identifier = (binary_expression "(uVar7 - uVar9) % uVar6 << 0x10 | 0xffff" (binary_expression "(uVar7 - uVar9) % uVar6 << 0x10" (binary_expression "(uVar7 - uVar9) % uVar6" (parenthesized_expression "(uVar7 - uVar9)" ( (binary_expression "uVar7 - uVar9" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar7 = d + uVar6;" (assignment_expression "uVar7 = d + uVar6" identifier = (binary_expression "d + uVar6" identifier + identifier)) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (if_statement "if (((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)) {\n        uVar16 = uVar17 - 2;\n      }" if (parenthesized_expression "(((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10))" ( (binary_expression "((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)) &&\n         (uVar7 < uVar17 * uVar10)" (parenthesized_expression "((uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7))" ( (binary_expression "(uVar6 < uVar17 * uVar10) && (uVar16 = uVar17 - 1, d <= uVar7)" (parenthesized_expression "(uVar6 < uVar17 * uVar10)" ( (binary_expression "uVar6 < uVar17 * uVar10" identifier < (binary_expression "uVar17 * uVar10" identifier * identifier)) )) && (parenthesized_expression "(uVar16 = uVar17 - 1, d <= uVar7)" ( (comma_expression "uVar16 = uVar17 - 1, d <= uVar7" (assignment_expression "uVar16 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) , (binary_expression "d <= uVar7" identifier <= identifier)) ))) )) && (parenthesized_expression "(uVar7 < uVar17 * uVar10)" ( (binary_expression "uVar7 < uVar17 * uVar10" identifier < (binary_expression "uVar17 * uVar10" identifier * identifier)) ))) )) (compound_statement "{\n        uVar16 = uVar17 - 2;\n      }" { (expression_statement "uVar16 = uVar17 - 2;" (assignment_expression "uVar16 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) (labeled_statement "LAB_0006f944:\n      uVar16 = uVar11 << 0x10 | uVar16;" statement_identifier : (expression_statement "uVar16 = uVar11 << 0x10 | uVar16;" (assignment_expression "uVar16 = uVar11 << 0x10 | uVar16" identifier = (binary_expression "uVar11 << 0x10 | uVar16" (binary_expression "uVar11 << 0x10" identifier << number_literal) | identifier)) ;)) (expression_statement "lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5);" (assignment_expression "lVar3 = (ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5)" identifier = (binary_expression "(ulonglong)uVar15 * (ulonglong)uVar16 + CONCAT44(uVar15 + 1,uVar5)" (binary_expression "(ulonglong)uVar15 * (ulonglong)uVar16" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) + (call_expression "CONCAT44(uVar15 + 1,uVar5)" identifier (argument_list "(uVar15 + 1,uVar5)" ( (binary_expression "uVar15 + 1" identifier + number_literal) , identifier ))))) ;) (expression_statement "iVar13 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar13 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar5 = uVar5 - d * iVar13;" (assignment_expression "uVar5 = uVar5 - d * iVar13" identifier = (binary_expression "uVar5 - d * iVar13" identifier - (binary_expression "d * iVar13" identifier * identifier))) ;) (expression_statement "uVar6 = (uint)((uint)lVar3 < uVar5);" (assignment_expression "uVar6 = (uint)((uint)lVar3 < uVar5)" identifier = (call_expression "(uint)((uint)lVar3 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar3 < uVar5)" ( (binary_expression "(uint)lVar3 < uVar5" (cast_expression "(uint)lVar3" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )))) ;) (expression_statement "uVar15 = d;" (assignment_expression "uVar15 = d" identifier = identifier) ;) (if_statement "if (uVar6 == 0) {\n        uVar15 = 0;\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar15 = 0;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) })) (expression_statement "uVar15 = uVar15 + uVar5;" (assignment_expression "uVar15 = uVar15 + uVar5" identifier = (binary_expression "uVar15 + uVar5" identifier + identifier)) ;) (expression_statement "mVar8 = iVar13 - uVar6;" (assignment_expression "mVar8 = iVar13 - uVar6" identifier = (binary_expression "iVar13 - uVar6" identifier - identifier)) ;) (if_statement "if (d <= uVar15) {\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }" if (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) (compound_statement "{\n        uVar15 = uVar15 - d;\n        mVar8 = mVar8 + 1;\n      }" { (expression_statement "uVar15 = uVar15 - d;" (assignment_expression "uVar15 = uVar15 - d" identifier = (binary_expression "uVar15 - d" identifier - identifier)) ;) (expression_statement "mVar8 = mVar8 + 1;" (assignment_expression "mVar8 = mVar8 + 1" identifier = (binary_expression "mVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "*qh = mVar8;" (assignment_expression "*qh = mVar8" (pointer_expression "*qh" * identifier) = identifier) ;) (expression_statement "uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16);" (assignment_expression "uVar15 = (*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16)" identifier = (call_expression "(*(code *)puVar4)(qp,qp,iVar14,uVar15,d,uVar16)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(qp,qp,iVar14,uVar15,d,uVar16)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar15 >> (uVar12 & 0x1f);" return (binary_expression "uVar15 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) ;) })) (if_statement "if (uVar6 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = uVar15 / uVar6;" (assignment_expression "uVar9 = uVar15 / uVar6" identifier = (binary_expression "uVar15 / uVar6" identifier / identifier)) ;) (expression_statement "uVar7 = uVar9 * uVar10;" (assignment_expression "uVar7 = uVar9 * uVar10" identifier = (binary_expression "uVar9 * uVar10" identifier * identifier)) ;) (expression_statement "uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10;" (assignment_expression "uVar15 = uVar15 % uVar6 << 0x10 | uVar5 >> 0x10" identifier = (binary_expression "uVar15 % uVar6 << 0x10 | uVar5 >> 0x10" (binary_expression "uVar15 % uVar6 << 0x10" (binary_expression "uVar15 % uVar6" identifier % identifier) << number_literal) | (binary_expression "uVar5 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar9;" (assignment_expression "uVar11 = uVar9" identifier = identifier) ;) (if_statement "if (uVar15 < uVar7) {\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" if (parenthesized_expression "(uVar15 < uVar7)" ( (binary_expression "uVar15 < uVar7" identifier < identifier) )) (compound_statement "{\n      uVar15 = uVar15 + d;\n      uVar11 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" { (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (expression_statement "uVar11 = uVar9 - 1;" (assignment_expression "uVar11 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar15) && (uVar15 < uVar7)) {\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }" if (parenthesized_expression "((d <= uVar15) && (uVar15 < uVar7))" ( (binary_expression "(d <= uVar15) && (uVar15 < uVar7)" (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) && (parenthesized_expression "(uVar15 < uVar7)" ( (binary_expression "uVar15 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n        uVar11 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }" { (expression_statement "uVar11 = uVar9 - 2;" (assignment_expression "uVar11 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) })) })) (if_statement "if (uVar6 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = (uVar15 - uVar7) / uVar6;" (assignment_expression "uVar9 = (uVar15 - uVar7) / uVar6" identifier = (binary_expression "(uVar15 - uVar7) / uVar6" (parenthesized_expression "(uVar15 - uVar7)" ( (binary_expression "uVar15 - uVar7" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar10 = uVar9 * uVar10;" (assignment_expression "uVar10 = uVar9 * uVar10" identifier = (binary_expression "uVar9 * uVar10" identifier * identifier)) ;) (expression_statement "uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff;" (assignment_expression "uVar15 = (uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff" identifier = (binary_expression "(uVar15 - uVar7) % uVar6 << 0x10 | uVar5 & 0xffff" (binary_expression "(uVar15 - uVar7) % uVar6 << 0x10" (binary_expression "(uVar15 - uVar7) % uVar6" (parenthesized_expression "(uVar15 - uVar7)" ( (binary_expression "uVar15 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar5 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar5 = uVar9;" (assignment_expression "uVar5 = uVar9" identifier = identifier) ;) (if_statement "if (uVar15 < uVar10) {\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" if (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) )) (compound_statement "{\n      uVar15 = uVar15 + d;\n      uVar5 = uVar9 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" { (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (expression_statement "uVar5 = uVar9 - 1;" (assignment_expression "uVar5 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar15) && (uVar15 < uVar10)) {\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }" if (parenthesized_expression "((d <= uVar15) && (uVar15 < uVar10))" ( (binary_expression "(d <= uVar15) && (uVar15 < uVar10)" (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) && (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n        uVar5 = uVar9 - 2;\n        uVar15 = uVar15 + d;\n      }" { (expression_statement "uVar5 = uVar9 - 2;" (assignment_expression "uVar5 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) })) })) (expression_statement "uVar15 = uVar15 - uVar10;" (assignment_expression "uVar15 = uVar15 - uVar10" identifier = (binary_expression "uVar15 - uVar10" identifier - identifier)) ;) (expression_statement "*qh = uVar11 << 0x10 | uVar5;" (assignment_expression "*qh = uVar11 << 0x10 | uVar5" (pointer_expression "*qh" * identifier) = (binary_expression "uVar11 << 0x10 | uVar5" (binary_expression "uVar11 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "up = qp;" (assignment_expression "up = qp" identifier = identifier) ;) }))) (expression_statement "uVar5 = d >> 0x10;" (assignment_expression "uVar5 = d >> 0x10" identifier = (binary_expression "d >> 0x10" identifier >> number_literal)) ;) (if_statement "if (iVar14 < 1) goto LAB_0006fbac;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar5 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = uVar15 / uVar5;" (assignment_expression "uVar9 = uVar15 / uVar5" identifier = (binary_expression "uVar15 / uVar5" identifier / identifier)) ;) (expression_statement "uVar7 = d & 0xffff;" (assignment_expression "uVar7 = d & 0xffff" identifier = (binary_expression "d & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar11 = up[n + -2];" (assignment_expression "uVar11 = up[n + -2]" identifier = (subscript_expression "up[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ])) ;) (expression_statement "uVar10 = uVar9 * uVar7;" (assignment_expression "uVar10 = uVar9 * uVar7" identifier = (binary_expression "uVar9 * uVar7" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10" identifier = (binary_expression "uVar11 >> 0x10 | uVar15 % uVar5 << 0x10" (binary_expression "uVar11 >> 0x10" identifier >> number_literal) | (binary_expression "uVar15 % uVar5 << 0x10" (binary_expression "uVar15 % uVar5" identifier % identifier) << number_literal))) ;) (expression_statement "uVar6 = uVar9;" (assignment_expression "uVar6 = uVar9" identifier = identifier) ;) (if_statement "if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }" if (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) goto LAB_0006fab8;\n  }" { (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (expression_statement "uVar6 = uVar9 - 1;" (assignment_expression "uVar6 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }" if (parenthesized_expression "((d <= uVar15) && (uVar15 < uVar10))" ( (binary_expression "(d <= uVar15) && (uVar15 < uVar10)" (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) && (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fa84;\n    }" { (expression_statement "uVar6 = uVar9 - 2;" (assignment_expression "uVar6 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (goto_statement "goto LAB_0006fa84;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = (uVar15 - uVar10) / uVar5;" (assignment_expression "uVar16 = (uVar15 - uVar10) / uVar5" identifier = (binary_expression "(uVar15 - uVar10) / uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar9 = uVar7 * uVar16;" (assignment_expression "uVar9 = uVar7 * uVar16" identifier = (binary_expression "uVar7 * uVar16" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" identifier = (binary_expression "uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "uVar11 & 0xffff" identifier & number_literal) | (binary_expression "(uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "(uVar15 - uVar10) % uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar10 = uVar16;" (assignment_expression "uVar10 = uVar16" identifier = identifier) ;) (if_statement "if (uVar15 < uVar9) goto LAB_0006fab8;" if (parenthesized_expression "(uVar15 < uVar9)" ( (binary_expression "uVar15 < uVar9" identifier < identifier) )) (goto_statement "goto LAB_0006fab8;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }" else (compound_statement "{\nLAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar16 = (uVar15 - uVar10) / uVar5;\n    uVar9 = uVar7 * uVar16;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    uVar10 = uVar16;\n    if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }\n  }" { (labeled_statement "LAB_0006fa84:\n    if (uVar5 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar16 = (uVar15 - uVar10) / uVar5;" (assignment_expression "uVar16 = (uVar15 - uVar10) / uVar5" identifier = (binary_expression "(uVar15 - uVar10) / uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar9 = uVar7 * uVar16;" (assignment_expression "uVar9 = uVar7 * uVar16" identifier = (binary_expression "uVar7 * uVar16" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" identifier = (binary_expression "uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "uVar11 & 0xffff" identifier & number_literal) | (binary_expression "(uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "(uVar15 - uVar10) % uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar10 = uVar16;" (assignment_expression "uVar10 = uVar16" identifier = identifier) ;) (if_statement "if (uVar15 < uVar9) {\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" if (parenthesized_expression "(uVar15 < uVar9)" ( (binary_expression "uVar15 < uVar9" identifier < identifier) )) (compound_statement "{\nLAB_0006fab8:\n      uVar15 = uVar15 + d;\n      uVar16 = uVar10 - 1;\n      if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }\n    }" { (labeled_statement "LAB_0006fab8:\n      uVar15 = uVar15 + d;" statement_identifier : (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;)) (expression_statement "uVar16 = uVar10 - 1;" (assignment_expression "uVar16 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar15) && (uVar15 < uVar9)) {\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }" if (parenthesized_expression "((d <= uVar15) && (uVar15 < uVar9))" ( (binary_expression "(d <= uVar15) && (uVar15 < uVar9)" (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) && (parenthesized_expression "(uVar15 < uVar9)" ( (binary_expression "uVar15 < uVar9" identifier < identifier) ))) )) (compound_statement "{\n        uVar16 = uVar10 - 2;\n        uVar15 = uVar15 + d;\n      }" { (expression_statement "uVar16 = uVar10 - 2;" (assignment_expression "uVar16 = uVar10 - 2" identifier = (binary_expression "uVar10 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) })) })) }))) (expression_statement "qp[n + -2] = uVar6 << 0x10 | uVar16;" (assignment_expression "qp[n + -2] = uVar6 << 0x10 | uVar16" (subscript_expression "qp[n + -2]" identifier [ (binary_expression "n + -2" identifier + number_literal) ]) = (binary_expression "uVar6 << 0x10 | uVar16" (binary_expression "uVar6 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "uVar15 = uVar15 - uVar9;" (assignment_expression "uVar15 = uVar15 - uVar9" identifier = (binary_expression "uVar15 - uVar9" identifier - identifier)) ;) (if_statement "if (n != 3) goto LAB_0006fbac;" if (parenthesized_expression "(n != 3)" ( (binary_expression "n != 3" identifier != number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar5 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = uVar15 / uVar5;" (assignment_expression "uVar9 = uVar15 / uVar5" identifier = (binary_expression "uVar15 / uVar5" identifier / identifier)) ;) (expression_statement "uVar11 = *up;" (assignment_expression "uVar11 = *up" identifier = (pointer_expression "*up" * identifier)) ;) (expression_statement "uVar10 = uVar7 * uVar9;" (assignment_expression "uVar10 = uVar7 * uVar9" identifier = (binary_expression "uVar7 * uVar9" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 >> 0x10 | uVar15 % uVar5 << 0x10" identifier = (binary_expression "uVar11 >> 0x10 | uVar15 % uVar5 << 0x10" (binary_expression "uVar11 >> 0x10" identifier >> number_literal) | (binary_expression "uVar15 % uVar5 << 0x10" (binary_expression "uVar15 % uVar5" identifier % identifier) << number_literal))) ;) (expression_statement "uVar6 = uVar9;" (assignment_expression "uVar6 = uVar9" identifier = identifier) ;) (if_statement "if (uVar15 < uVar10) {\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }" if (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) )) (compound_statement "{\n    uVar15 = uVar15 + d;\n    uVar6 = uVar9 - 1;\n    if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) goto LAB_0006fb7c;\n  }" { (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (expression_statement "uVar6 = uVar9 - 1;" (assignment_expression "uVar6 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((d <= uVar15) && (uVar15 < uVar10)) {\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }" if (parenthesized_expression "((d <= uVar15) && (uVar15 < uVar10))" ( (binary_expression "(d <= uVar15) && (uVar15 < uVar10)" (parenthesized_expression "(d <= uVar15)" ( (binary_expression "d <= uVar15" identifier <= identifier) )) && (parenthesized_expression "(uVar15 < uVar10)" ( (binary_expression "uVar15 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n      uVar6 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n      goto LAB_0006fb48;\n    }" { (expression_statement "uVar6 = uVar9 - 2;" (assignment_expression "uVar6 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) (goto_statement "goto LAB_0006fb48;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = (uVar15 - uVar10) / uVar5;" (assignment_expression "uVar9 = (uVar15 - uVar10) / uVar5" identifier = (binary_expression "(uVar15 - uVar10) / uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar9 * uVar7;" (assignment_expression "uVar7 = uVar9 * uVar7" identifier = (binary_expression "uVar9 * uVar7" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" identifier = (binary_expression "uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "uVar11 & 0xffff" identifier & number_literal) | (binary_expression "(uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "(uVar15 - uVar10) % uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar15 < uVar7) goto LAB_0006fb7c;" if (parenthesized_expression "(uVar15 < uVar7)" ( (binary_expression "uVar15 < uVar7" identifier < identifier) )) (goto_statement "goto LAB_0006fb7c;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }" else (compound_statement "{\nLAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar9 = (uVar15 - uVar10) / uVar5;\n    uVar7 = uVar9 * uVar7;\n    uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;\n    if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }\n  }" { (labeled_statement "LAB_0006fb48:\n    if (uVar5 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar9 = (uVar15 - uVar10) / uVar5;" (assignment_expression "uVar9 = (uVar15 - uVar10) / uVar5" identifier = (binary_expression "(uVar15 - uVar10) / uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar9 * uVar7;" (assignment_expression "uVar7 = uVar9 * uVar7" identifier = (binary_expression "uVar9 * uVar7" identifier * identifier)) ;) (expression_statement "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10;" (assignment_expression "uVar15 = uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" identifier = (binary_expression "uVar11 & 0xffff | (uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "uVar11 & 0xffff" identifier & number_literal) | (binary_expression "(uVar15 - uVar10) % uVar5 << 0x10" (binary_expression "(uVar15 - uVar10) % uVar5" (parenthesized_expression "(uVar15 - uVar10)" ( (binary_expression "uVar15 - uVar10" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar15 < uVar7) {\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }" if (parenthesized_expression "(uVar15 < uVar7)" ( (binary_expression "uVar15 < uVar7" identifier < identifier) )) (compound_statement "{\nLAB_0006fb7c:\n      uVar15 = uVar15 + d;\n      if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar9 = uVar9 - 2;\n      uVar15 = uVar15 + d;\n    }" { (labeled_statement "LAB_0006fb7c:\n      uVar15 = uVar15 + d;" statement_identifier : (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;)) (if_statement "if ((uVar15 < d) || (uVar7 <= uVar15)) {\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }" if (parenthesized_expression "((uVar15 < d) || (uVar7 <= uVar15))" ( (binary_expression "(uVar15 < d) || (uVar7 <= uVar15)" (parenthesized_expression "(uVar15 < d)" ( (binary_expression "uVar15 < d" identifier < identifier) )) || (parenthesized_expression "(uVar7 <= uVar15)" ( (binary_expression "uVar7 <= uVar15" identifier <= identifier) ))) )) (compound_statement "{\n        uVar15 = uVar15 - uVar7;\n        *qp = uVar6 << 0x10 | uVar9 - 1;\n        goto LAB_0006fbac;\n      }" { (expression_statement "uVar15 = uVar15 - uVar7;" (assignment_expression "uVar15 = uVar15 - uVar7" identifier = (binary_expression "uVar15 - uVar7" identifier - identifier)) ;) (expression_statement "*qp = uVar6 << 0x10 | uVar9 - 1;" (assignment_expression "*qp = uVar6 << 0x10 | uVar9 - 1" (pointer_expression "*qp" * identifier) = (binary_expression "uVar6 << 0x10 | uVar9 - 1" (binary_expression "uVar6 << 0x10" identifier << number_literal) | (binary_expression "uVar9 - 1" identifier - number_literal))) ;) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;) })) (expression_statement "uVar9 = uVar9 - 2;" (assignment_expression "uVar9 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar15 = uVar15 + d;" (assignment_expression "uVar15 = uVar15 + d" identifier = (binary_expression "uVar15 + d" identifier + identifier)) ;) })) }))) (expression_statement "uVar15 = uVar15 - uVar7;" (assignment_expression "uVar15 = uVar15 - uVar7" identifier = (binary_expression "uVar15 - uVar7" identifier - identifier)) ;) (expression_statement "*qp = uVar6 << 0x10 | uVar9;" (assignment_expression "*qp = uVar6 << 0x10 | uVar9" (pointer_expression "*qp" * identifier) = (binary_expression "uVar6 << 0x10 | uVar9" (binary_expression "uVar6 << 0x10" identifier << number_literal) | identifier)) ;) (labeled_statement "LAB_0006fbac:\n  return uVar15 >> (uVar12 & 0x1f);" statement_identifier : (return_statement "return uVar15 >> (uVar12 & 0x1f);" return (binary_expression "uVar15 >> (uVar12 & 0x1f)" identifier >> (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) ;)) })))
(translation_unit "uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)\n\n{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}\n\n" (function_definition "uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)\n\n{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" type_identifier (function_declarator "__gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (expression_statement "iVar12 = param_4 + -1;" (assignment_expression "iVar12 = param_4 + -1" identifier = (binary_expression "param_4 + -1" identifier + number_literal)) ;) (expression_statement "uVar13 = param_3[iVar12];" (assignment_expression "uVar13 = param_3[iVar12]" identifier = (subscript_expression "param_3[iVar12]" identifier [ identifier ])) ;) (if_statement "if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" if (parenthesized_expression "((int)param_5 < 0)" ( (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }" { (expression_statement "uVar4 = uVar13 < param_5 ^ 1;" (assignment_expression "uVar4 = uVar13 < param_5 ^ 1" identifier = (binary_expression "uVar13 < param_5 ^ 1" (binary_expression "uVar13 < param_5" identifier < identifier) ^ number_literal)) ;) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar10 = param_5;" (assignment_expression "uVar10 = param_5" identifier = identifier) ;) (if_statement "if (uVar4 == 0) {\n      uVar10 = 0;\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar10 = 0;\n    }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) })) (expression_statement "uVar13 = uVar13 - uVar10;" (assignment_expression "uVar13 = uVar13 - uVar10" identifier = (binary_expression "uVar13 - uVar10" identifier - identifier)) ;) (if_statement "if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" if (parenthesized_expression "(2 < iVar12)" ( (binary_expression "2 < iVar12" number_literal < identifier) )) (compound_statement "{\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" { (expression_statement "uVar10 = param_5 >> 0x10;" (assignment_expression "uVar10 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar9 = ~param_5 / uVar10;" (assignment_expression "uVar9 = ~param_5 / uVar10" identifier = (binary_expression "~param_5 / uVar10" (unary_expression "~param_5" ~ identifier) / identifier)) ;) (expression_statement "uVar8 = (param_5 & 0xffff) * uVar9;" (assignment_expression "uVar8 = (param_5 & 0xffff) * uVar9" identifier = (binary_expression "(param_5 & 0xffff) * uVar9" (parenthesized_expression "(param_5 & 0xffff)" ( (binary_expression "param_5 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff" identifier = (binary_expression "~param_5 % uVar10 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar10 << 0x10" (binary_expression "~param_5 % uVar10" (unary_expression "~param_5" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" identifier = identifier) ;) (if_statement "if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" if (parenthesized_expression "(uVar5 < uVar8)" ( (binary_expression "uVar5 < uVar8" identifier < identifier) )) (compound_statement "{\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" { (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" identifier = (binary_expression "uVar5 + param_5" identifier + identifier)) ;) (expression_statement "uVar4 = uVar9 - 1;" (assignment_expression "uVar4 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" if (parenthesized_expression "((param_5 <= uVar5) && (uVar5 < uVar8))" ( (binary_expression "(param_5 <= uVar5) && (uVar5 < uVar8)" (parenthesized_expression "(param_5 <= uVar5)" ( (binary_expression "param_5 <= uVar5" identifier <= identifier) )) && (parenthesized_expression "(uVar5 < uVar8)" ( (binary_expression "uVar5 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" { (expression_statement "uVar4 = uVar9 - 2;" (assignment_expression "uVar4 = uVar9 - 2" identifier = (binary_expression "uVar9 - 2" identifier - number_literal)) ;) (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" identifier = (binary_expression "uVar5 + param_5" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar6 = (uVar5 - uVar8) / uVar10;" (assignment_expression "uVar6 = (uVar5 - uVar8) / uVar10" identifier = (binary_expression "(uVar5 - uVar8) / uVar10" (parenthesized_expression "(uVar5 - uVar8)" ( (binary_expression "uVar5 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar9 = (param_5 & 0xffff) * uVar6;" (assignment_expression "uVar9 = (param_5 & 0xffff) * uVar6" identifier = (binary_expression "(param_5 & 0xffff) * uVar6" (parenthesized_expression "(param_5 & 0xffff)" ( (binary_expression "param_5 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" identifier = (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10" (binary_expression "(uVar5 - uVar8) % uVar10" (parenthesized_expression "(uVar5 - uVar8)" ( (binary_expression "uVar5 - uVar8" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar8 = param_5 + uVar5;" (assignment_expression "uVar8 = param_5 + uVar5" identifier = (binary_expression "param_5 + uVar5" identifier + identifier)) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (if_statement "if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }" if (parenthesized_expression "(((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9))" ( (binary_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)" (parenthesized_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8))" ( (binary_expression "(uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)" (parenthesized_expression "(uVar5 < uVar9)" ( (binary_expression "uVar5 < uVar9" identifier < identifier) )) && (parenthesized_expression "(uVar10 = uVar6 - 1, param_5 <= uVar8)" ( (comma_expression "uVar10 = uVar6 - 1, param_5 <= uVar8" (assignment_expression "uVar10 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) , (binary_expression "param_5 <= uVar8" identifier <= identifier)) ))) )) && (parenthesized_expression "(uVar8 < uVar9)" ( (binary_expression "uVar8 < uVar9" identifier < identifier) ))) )) (compound_statement "{\n        uVar10 = uVar6 - 2;\n      }" { (expression_statement "uVar10 = uVar6 - 2;" (assignment_expression "uVar10 = uVar6 - 2" identifier = (binary_expression "uVar6 - 2" identifier - number_literal)) ;) })) (expression_statement "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" identifier = (call_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)" ( (pointer_expression "*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" * (cast_expression "(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" ( identifier , identifier , identifier , identifier , identifier , (binary_expression "uVar4 << 0x10 | uVar10" (binary_expression "uVar4 << 0x10" identifier << number_literal) | identifier) )))) ;) (return_statement "return uVar13;" return identifier ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" else (compound_statement "{\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" { (if_statement "if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" if (parenthesized_expression "(param_5 < 0x10000)" ( (binary_expression "param_5 < 0x10000" identifier < number_literal) )) (compound_statement "{\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }" { (expression_statement "iVar11 = 9;" (assignment_expression "iVar11 = 9" identifier = number_literal) ;) (if_statement "if (param_5 < 0x100) {\n        iVar11 = 1;\n      }" if (parenthesized_expression "(param_5 < 0x100)" ( (binary_expression "param_5 < 0x100" identifier < number_literal) )) (compound_statement "{\n        iVar11 = 1;\n      }" { (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" identifier = number_literal) ;) })) }) (else_clause "else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" else (compound_statement "{\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" { (expression_statement "iVar11 = 0x19;" (assignment_expression "iVar11 = 0x19" identifier = number_literal) ;) (if_statement "if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }" if (parenthesized_expression "(param_5 < 0x1000000)" ( (binary_expression "param_5 < 0x1000000" identifier < number_literal) )) (compound_statement "{\n        iVar11 = 0x11;\n      }" { (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" identifier = number_literal) ;) })) }))) (expression_statement "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];" (assignment_expression "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" identifier = (subscript_expression "PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" identifier [ (binary_expression "param_5 >> iVar11" identifier >> identifier) ])) ;) (expression_statement "uVar10 = 0x21 - ((uint)bVar1 + iVar11);" (assignment_expression "uVar10 = 0x21 - ((uint)bVar1 + iVar11)" identifier = (binary_expression "0x21 - ((uint)bVar1 + iVar11)" number_literal - (parenthesized_expression "((uint)bVar1 + iVar11)" ( (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )))) ;) (expression_statement "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" identifier = (call_expression "(*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009d56c)" ( (pointer_expression "*(code *)PTR___gmpn_lshift_0009d56c" * (cast_expression "(code *)PTR___gmpn_lshift_0009d56c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_3,iVar12,uVar10)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;" (assignment_expression "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8" identifier = identifier) ;) (expression_statement "param_5 = param_5 << (uVar10 & 0x1f);" (assignment_expression "param_5 = param_5 << (uVar10 & 0x1f)" identifier = (binary_expression "param_5 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;" (assignment_expression "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4" identifier = (binary_expression "uVar13 << (uVar10 & 0x1f) | uVar4" (binary_expression "uVar13 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) | identifier)) ;) (expression_statement "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);" (assignment_expression "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" identifier = (binary_expression "uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" identifier >> (parenthesized_expression "(((uint)bVar1 + iVar11) - 1 & 0x1f)" ( (binary_expression "((uint)bVar1 + iVar11) - 1 & 0x1f" (binary_expression "((uint)bVar1 + iVar11) - 1" (parenthesized_expression "((uint)bVar1 + iVar11)" ( (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) )) - number_literal) & number_literal) )))) ;) (expression_statement "uVar5 = param_5 >> 0x10;" (assignment_expression "uVar5 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar8 = param_5 & 0xffff;" (assignment_expression "uVar8 = param_5 & 0xffff" identifier = (binary_expression "param_5 & 0xffff" identifier & number_literal)) ;) (if_statement "if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" if (parenthesized_expression "(2 < iVar12)" ( (binary_expression "2 < iVar12" number_literal < identifier) )) (compound_statement "{\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" { (if_statement "if (uVar5 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = ~param_5 / uVar5;" (assignment_expression "uVar14 = ~param_5 / uVar5" identifier = (binary_expression "~param_5 / uVar5" (unary_expression "~param_5" ~ identifier) / identifier)) ;) (expression_statement "uVar7 = uVar14 * uVar8;" (assignment_expression "uVar7 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "~param_5 % uVar5 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar5 << 0x10" (binary_expression "~param_5 % uVar5" (unary_expression "~param_5" ~ identifier) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" identifier = identifier) ;) (if_statement "if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" if (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" { (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" identifier = (binary_expression "uVar6 + param_5" identifier + identifier)) ;) (expression_statement "uVar9 = uVar14 - 1;" (assignment_expression "uVar9 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" if (parenthesized_expression "((param_5 <= uVar6) && (uVar6 < uVar7))" ( (binary_expression "(param_5 <= uVar6) && (uVar6 < uVar7)" (parenthesized_expression "(param_5 <= uVar6)" ( (binary_expression "param_5 <= uVar6" identifier <= identifier) )) && (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" { (expression_statement "uVar9 = uVar14 - 2;" (assignment_expression "uVar9 = uVar14 - 2" identifier = (binary_expression "uVar14 - 2" identifier - number_literal)) ;) (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" identifier = (binary_expression "uVar6 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006f918;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" identifier = (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" identifier = identifier) ;) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" if (parenthesized_expression "(uVar8 <= uVar6)" ( (binary_expression "uVar8 <= uVar6" identifier <= identifier) )) (goto_statement "goto LAB_0006f944;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" else (compound_statement "{\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" { (labeled_statement "LAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }" statement_identifier : (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" identifier = (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" identifier = (binary_expression "uVar14 * uVar8" identifier * identifier)) ;) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" identifier = (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" ( (binary_expression "uVar6 - uVar7" identifier - identifier) )) % identifier) << number_literal) | number_literal)) ;) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" identifier = identifier) ;) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" if (parenthesized_expression "(uVar8 <= uVar6)" ( (binary_expression "uVar8 <= uVar6" identifier <= identifier) )) (goto_statement "goto LAB_0006f944;" goto statement_identifier ;)) }))) (expression_statement "uVar14 = uVar5 - 1;" (assignment_expression "uVar14 = uVar5 - 1" identifier = (binary_expression "uVar5 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }" if (parenthesized_expression "((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8))" ( (binary_expression "(param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)" (parenthesized_expression "(param_5 <= param_5 + uVar6)" ( (binary_expression "param_5 <= param_5 + uVar6" identifier <= (binary_expression "param_5 + uVar6" identifier + identifier)) )) && (parenthesized_expression "(param_5 + uVar6 < uVar8)" ( (binary_expression "param_5 + uVar6 < uVar8" (binary_expression "param_5 + uVar6" identifier + identifier) < identifier) ))) )) (compound_statement "{\n        uVar14 = uVar5 - 2;\n      }" { (expression_statement "uVar14 = uVar5 - 2;" (assignment_expression "uVar14 = uVar5 - 2" identifier = (binary_expression "uVar5 - 2" identifier - number_literal)) ;) })) (labeled_statement "LAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;" statement_identifier : (expression_statement "uVar14 = uVar9 << 0x10 | uVar14;" (assignment_expression "uVar14 = uVar9 << 0x10 | uVar14" identifier = (binary_expression "uVar9 << 0x10 | uVar14" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;)) (expression_statement "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);" (assignment_expression "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" identifier = (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14" (cast_expression "(ulonglong)uVar13" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) + (call_expression "CONCAT44(uVar13 + 1,uVar4)" identifier (argument_list "(uVar13 + 1,uVar4)" ( (binary_expression "uVar13 + 1" identifier + number_literal) , identifier ))))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar4 = uVar4 - param_5 * iVar11;" (assignment_expression "uVar4 = uVar4 - param_5 * iVar11" identifier = (binary_expression "uVar4 - param_5 * iVar11" identifier - (binary_expression "param_5 * iVar11" identifier * identifier))) ;) (expression_statement "uVar5 = (uint)((uint)lVar2 < uVar4);" (assignment_expression "uVar5 = (uint)((uint)lVar2 < uVar4)" identifier = (call_expression "(uint)((uint)lVar2 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)lVar2 < uVar4)" ( (binary_expression "(uint)lVar2 < uVar4" (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )))) ;) (expression_statement "uVar13 = param_5;" (assignment_expression "uVar13 = param_5" identifier = identifier) ;) (if_statement "if (uVar5 == 0) {\n        uVar13 = 0;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar13 = 0;\n      }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) })) (expression_statement "uVar13 = uVar13 + uVar4;" (assignment_expression "uVar13 = uVar13 + uVar4" identifier = (binary_expression "uVar13 + uVar4" identifier + identifier)) ;) (expression_statement "uVar5 = iVar11 - uVar5;" (assignment_expression "uVar5 = iVar11 - uVar5" identifier = (binary_expression "iVar11 - uVar5" identifier - identifier)) ;) (if_statement "if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" if (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) (compound_statement "{\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" { (expression_statement "uVar13 = uVar13 - param_5;" (assignment_expression "uVar13 = uVar13 - param_5" identifier = (binary_expression "uVar13 - param_5" identifier - identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);" (assignment_expression "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" identifier = (call_expression "(*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,iVar12,uVar13,param_5,uVar14)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar13 >> (uVar10 & 0x1f);" return (binary_expression "uVar13 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ;) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar5;" (assignment_expression "uVar7 = uVar13 / uVar5" identifier = (binary_expression "uVar13 / uVar5" identifier / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar8;" (assignment_expression "uVar6 = uVar7 * uVar8" identifier = (binary_expression "uVar7 * uVar8" identifier * identifier)) ;) (expression_statement "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;" (assignment_expression "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" identifier = (binary_expression "uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" (binary_expression "uVar13 % uVar5 << 0x10" (binary_expression "uVar13 % uVar5" identifier % identifier) << number_literal) | (binary_expression "uVar4 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar9 = uVar7 - 1;" (assignment_expression "uVar9 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar6))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar6)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar9 = uVar7 - 2;" (assignment_expression "uVar9 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = (uVar13 - uVar6) / uVar5;" (assignment_expression "uVar7 = (uVar13 - uVar6) / uVar5" identifier = (binary_expression "(uVar13 - uVar6) / uVar5" (parenthesized_expression "(uVar13 - uVar6)" ( (binary_expression "uVar13 - uVar6" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = uVar7 * uVar8;" (assignment_expression "uVar8 = uVar7 * uVar8" identifier = (binary_expression "uVar7 * uVar8" identifier * identifier)) ;) (expression_statement "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;" (assignment_expression "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" identifier = (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10" (binary_expression "(uVar13 - uVar6) % uVar5" (parenthesized_expression "(uVar13 - uVar6)" ( (binary_expression "uVar13 - uVar6" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar4 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar4 = uVar7;" (assignment_expression "uVar4 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar4 = uVar7 - 1;" (assignment_expression "uVar4 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar4 = uVar7 - 2;" (assignment_expression "uVar4 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) (expression_statement "uVar13 = uVar13 - uVar8;" (assignment_expression "uVar13 = uVar13 - uVar8" identifier = (binary_expression "uVar13 - uVar8" identifier - identifier)) ;) (expression_statement "*param_2 = uVar9 << 0x10 | uVar4;" (assignment_expression "*param_2 = uVar9 << 0x10 | uVar4" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar9 << 0x10 | uVar4" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "param_3 = param_1;" (assignment_expression "param_3 = param_1" identifier = identifier) ;) }))) (expression_statement "uVar4 = param_5 >> 0x10;" (assignment_expression "uVar4 = param_5 >> 0x10" identifier = (binary_expression "param_5 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (iVar12 < 1) goto LAB_0006fbac;" if (parenthesized_expression "(iVar12 < 1)" ( (binary_expression "iVar12 < 1" identifier < number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" identifier = (binary_expression "uVar13 / uVar4" identifier / identifier)) ;) (expression_statement "uVar6 = param_5 & 0xffff;" (assignment_expression "uVar6 = param_5 & 0xffff" identifier = (binary_expression "param_5 & 0xffff" identifier & number_literal)) ;) (expression_statement "uVar9 = param_3[param_4 + -2];" (assignment_expression "uVar9 = param_3[param_4 + -2]" identifier = (subscript_expression "param_3[param_4 + -2]" identifier [ (binary_expression "param_4 + -2" identifier + number_literal) ])) ;) (expression_statement "uVar8 = uVar7 * uVar6;" (assignment_expression "uVar8 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" identifier = (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) | (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" identifier % identifier) << number_literal))) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" { (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006fa84;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" identifier = (binary_expression "uVar6 * uVar14" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" identifier = identifier) ;) (if_statement "if (uVar13 < uVar7) goto LAB_0006fab8;" if (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) )) (goto_statement "goto LAB_0006fab8;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" else (compound_statement "{\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" { (labeled_statement "LAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" identifier = (binary_expression "uVar6 * uVar14" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" identifier = identifier) ;) (if_statement "if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" if (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) )) (compound_statement "{\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" { (labeled_statement "LAB_0006fab8:\n      uVar13 = uVar13 + param_5;" statement_identifier : (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;)) (expression_statement "uVar14 = uVar8 - 1;" (assignment_expression "uVar14 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar7))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar7)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar7)" ( (binary_expression "uVar13 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" { (expression_statement "uVar14 = uVar8 - 2;" (assignment_expression "uVar14 = uVar8 - 2" identifier = (binary_expression "uVar8 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) })) }))) (expression_statement "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;" (assignment_expression "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14" (subscript_expression "param_1[param_4 + -2]" identifier [ (binary_expression "param_4 + -2" identifier + number_literal) ]) = (binary_expression "uVar5 << 0x10 | uVar14" (binary_expression "uVar5 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "uVar13 = uVar13 - uVar7;" (assignment_expression "uVar13 = uVar13 - uVar7" identifier = (binary_expression "uVar13 - uVar7" identifier - identifier)) ;) (if_statement "if (param_4 != 3) goto LAB_0006fbac;" if (parenthesized_expression "(param_4 != 3)" ( (binary_expression "param_4 != 3" identifier != number_literal) )) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;)) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" identifier = (binary_expression "uVar13 / uVar4" identifier / identifier)) ;) (expression_statement "uVar9 = *param_3;" (assignment_expression "uVar9 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar8 = uVar6 * uVar7;" (assignment_expression "uVar8 = uVar6 * uVar7" identifier = (binary_expression "uVar6 * uVar7" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" identifier = (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" identifier >> number_literal) | (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" identifier % identifier) << number_literal))) ;) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" identifier = identifier) ;) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" if (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) )) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }" { (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" if (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" ( (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" ( (binary_expression "param_5 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar8)" ( (binary_expression "uVar13 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" { (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) (goto_statement "goto LAB_0006fb48;" goto statement_identifier ;) })) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar13 < uVar6) goto LAB_0006fb7c;" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (goto_statement "goto LAB_0006fb7c;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" else (compound_statement "{\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" { (labeled_statement "LAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }" statement_identifier : (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" identifier = (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" identifier = (binary_expression "uVar7 * uVar6" identifier * identifier)) ;) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" identifier = (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" identifier & number_literal) | (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" ( (binary_expression "uVar13 - uVar8" identifier - identifier) )) % identifier) << number_literal))) ;) (if_statement "if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" if (parenthesized_expression "(uVar13 < uVar6)" ( (binary_expression "uVar13 < uVar6" identifier < identifier) )) (compound_statement "{\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" { (labeled_statement "LAB_0006fb7c:\n      uVar13 = uVar13 + param_5;" statement_identifier : (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;)) (if_statement "if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" if (parenthesized_expression "((uVar13 < param_5) || (uVar6 <= uVar13))" ( (binary_expression "(uVar13 < param_5) || (uVar6 <= uVar13)" (parenthesized_expression "(uVar13 < param_5)" ( (binary_expression "uVar13 < param_5" identifier < identifier) )) || (parenthesized_expression "(uVar6 <= uVar13)" ( (binary_expression "uVar6 <= uVar13" identifier <= identifier) ))) )) (compound_statement "{\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" { (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" identifier = (binary_expression "uVar13 - uVar6" identifier - identifier)) ;) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7 - 1;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7 - 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar5 << 0x10 | uVar7 - 1" (binary_expression "uVar5 << 0x10" identifier << number_literal) | (binary_expression "uVar7 - 1" identifier - number_literal))) ;) (goto_statement "goto LAB_0006fbac;" goto statement_identifier ;) })) (expression_statement "uVar7 = uVar7 - 2;" (assignment_expression "uVar7 = uVar7 - 2" identifier = (binary_expression "uVar7 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" identifier = (binary_expression "uVar13 + param_5" identifier + identifier)) ;) })) }))) (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" identifier = (binary_expression "uVar13 - uVar6" identifier - identifier)) ;) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar5 << 0x10 | uVar7" (binary_expression "uVar5 << 0x10" identifier << number_literal) | identifier)) ;) (labeled_statement "LAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);" statement_identifier : (return_statement "return uVar13 >> (uVar10 & 0x1f);" return (binary_expression "uVar13 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT < IDENT) ^ LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (unary_expression ~ IDENT) % IDENT) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - LIT)) , (binary_expression IDENT <= IDENT)) ))) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , (binary_expression (binary_expression IDENT << LIT) | IDENT) )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT >> IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )) - LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (unary_expression ~ IDENT) % IDENT) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (return_statement return (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT << LIT) | 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) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (binary_expression IDENT % IDENT) << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (binary_expression IDENT % IDENT) << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) | (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT - LIT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) (labeled_statement statement_identifier : (return_statement return (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ;)) })))
(function_definition "uint __gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)\n\n{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" (type_identifier "uint") (function_declarator "__gmpn_div_qr_1(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" (identifier "__gmpn_div_qr_1") (parameter_list "(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) () ")"))) (compound_statement "{\n  byte bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  \n  iVar12 = param_4 + -1;\n  uVar13 = param_3[iVar12];\n  if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }\n  uVar4 = param_5 >> 0x10;\n  if (iVar12 < 1) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar6 = param_5 & 0xffff;\n  uVar9 = param_3[param_4 + -2];\n  uVar8 = uVar7 * uVar6;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }\n  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;\n  uVar13 = uVar13 - uVar7;\n  if (param_4 != 3) goto LAB_0006fbac;\n  if (uVar4 == 0) {\n    trap(7);\n  }\n  uVar7 = uVar13 / uVar4;\n  uVar9 = *param_3;\n  uVar8 = uVar6 * uVar7;\n  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;\n  uVar5 = uVar7;\n  if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }\n  uVar13 = uVar13 - uVar6;\n  *param_1 = uVar5 << 0x10 | uVar7;\nLAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (expression_statement "iVar12 = param_4 + -1;" (assignment_expression "iVar12 = param_4 + -1" (identifier "iVar12") (= "=") (binary_expression "param_4 + -1" (identifier "param_4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar13 = param_3[iVar12];" (assignment_expression "uVar13 = param_3[iVar12]" (identifier "uVar13") (= "=") (subscript_expression "param_3[iVar12]" (identifier "param_3") ([ "[") (identifier "iVar12") (] "]"))) (; ";")) (if_statement "if ((int)param_5 < 0) {\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }\n  else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" (if "if") (parenthesized_expression "((int)param_5 < 0)" (( "(") (binary_expression "(int)param_5 < 0" (cast_expression "(int)param_5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_5")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = uVar13 < param_5 ^ 1;\n    *param_2 = uVar4;\n    uVar10 = param_5;\n    if (uVar4 == 0) {\n      uVar10 = 0;\n    }\n    uVar13 = uVar13 - uVar10;\n    if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }\n    uVar10 = 0;\n  }" ({ "{") (expression_statement "uVar4 = uVar13 < param_5 ^ 1;" (assignment_expression "uVar4 = uVar13 < param_5 ^ 1" (identifier "uVar4") (= "=") (binary_expression "uVar13 < param_5 ^ 1" (binary_expression "uVar13 < param_5" (identifier "uVar13") (< "<") (identifier "param_5")) (^ "^") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = uVar4;" (assignment_expression "*param_2 = uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar10 = param_5;" (assignment_expression "uVar10 = param_5" (identifier "uVar10") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (uVar4 == 0) {\n      uVar10 = 0;\n    }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = 0;\n    }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar13 = uVar13 - uVar10;" (assignment_expression "uVar13 = uVar13 - uVar10" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar10" (identifier "uVar13") (- "-") (identifier "uVar10"))) (; ";")) (if_statement "if (2 < iVar12) {\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" (if "if") (parenthesized_expression "(2 < iVar12)" (( "(") (binary_expression "2 < iVar12" (number_literal "2") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n      uVar10 = param_5 >> 0x10;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar9 = ~param_5 / uVar10;\n      uVar8 = (param_5 & 0xffff) * uVar9;\n      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;\n      uVar4 = uVar9;\n      if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      uVar6 = (uVar5 - uVar8) / uVar10;\n      uVar9 = (param_5 & 0xffff) * uVar6;\n      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;\n      uVar8 = param_5 + uVar5;\n      uVar10 = uVar6;\n      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }\n      uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);\n      return uVar13;\n    }" ({ "{") (expression_statement "uVar10 = param_5 >> 0x10;" (assignment_expression "uVar10 = param_5 >> 0x10" (identifier "uVar10") (= "=") (binary_expression "param_5 >> 0x10" (identifier "param_5") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = ~param_5 / uVar10;" (assignment_expression "uVar9 = ~param_5 / uVar10" (identifier "uVar9") (= "=") (binary_expression "~param_5 / uVar10" (unary_expression "~param_5" (~ "~") (identifier "param_5")) (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar8 = (param_5 & 0xffff) * uVar9;" (assignment_expression "uVar8 = (param_5 & 0xffff) * uVar9" (identifier "uVar8") (= "=") (binary_expression "(param_5 & 0xffff) * uVar9" (parenthesized_expression "(param_5 & 0xffff)" (( "(") (binary_expression "param_5 & 0xffff" (identifier "param_5") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar9"))) (; ";")) (expression_statement "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff" (identifier "uVar5") (= "=") (binary_expression "~param_5 % uVar10 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar10 << 0x10" (binary_expression "~param_5 % uVar10" (unary_expression "~param_5" (~ "~") (identifier "param_5")) (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar4 = uVar9;" (assignment_expression "uVar4 = uVar9" (identifier "uVar4") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (uVar5 < uVar8) {\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" (if "if") (parenthesized_expression "(uVar5 < uVar8)" (( "(") (binary_expression "uVar5 < uVar8" (identifier "uVar5") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n        uVar5 = uVar5 + param_5;\n        uVar4 = uVar9 - 1;\n        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }\n      }" ({ "{") (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" (identifier "uVar5") (= "=") (binary_expression "uVar5 + param_5" (identifier "uVar5") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar4 = uVar9 - 1;" (assignment_expression "uVar4 = uVar9 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar5) && (uVar5 < uVar8)) {\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" (if "if") (parenthesized_expression "((param_5 <= uVar5) && (uVar5 < uVar8))" (( "(") (binary_expression "(param_5 <= uVar5) && (uVar5 < uVar8)" (parenthesized_expression "(param_5 <= uVar5)" (( "(") (binary_expression "param_5 <= uVar5" (identifier "param_5") (<= "<=") (identifier "uVar5")) () ")")) (&& "&&") (parenthesized_expression "(uVar5 < uVar8)" (( "(") (binary_expression "uVar5 < uVar8" (identifier "uVar5") (< "<") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n          uVar4 = uVar9 - 2;\n          uVar5 = uVar5 + param_5;\n        }" ({ "{") (expression_statement "uVar4 = uVar9 - 2;" (assignment_expression "uVar4 = uVar9 - 2" (identifier "uVar4") (= "=") (binary_expression "uVar9 - 2" (identifier "uVar9") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = uVar5 + param_5;" (assignment_expression "uVar5 = uVar5 + param_5" (identifier "uVar5") (= "=") (binary_expression "uVar5 + param_5" (identifier "uVar5") (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar6 = (uVar5 - uVar8) / uVar10;" (assignment_expression "uVar6 = (uVar5 - uVar8) / uVar10" (identifier "uVar6") (= "=") (binary_expression "(uVar5 - uVar8) / uVar10" (parenthesized_expression "(uVar5 - uVar8)" (( "(") (binary_expression "uVar5 - uVar8" (identifier "uVar5") (- "-") (identifier "uVar8")) () ")")) (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar9 = (param_5 & 0xffff) * uVar6;" (assignment_expression "uVar9 = (param_5 & 0xffff) * uVar6" (identifier "uVar9") (= "=") (binary_expression "(param_5 & 0xffff) * uVar6" (parenthesized_expression "(param_5 & 0xffff)" (( "(") (binary_expression "param_5 & 0xffff" (identifier "param_5") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar6"))) (; ";")) (expression_statement "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;" (assignment_expression "uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" (identifier "uVar5") (= "=") (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10 | 0xffff" (binary_expression "(uVar5 - uVar8) % uVar10 << 0x10" (binary_expression "(uVar5 - uVar8) % uVar10" (parenthesized_expression "(uVar5 - uVar8)" (( "(") (binary_expression "uVar5 - uVar8" (identifier "uVar5") (- "-") (identifier "uVar8")) () ")")) (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar8 = param_5 + uVar5;" (assignment_expression "uVar8 = param_5 + uVar5" (identifier "uVar8") (= "=") (binary_expression "param_5 + uVar5" (identifier "param_5") (+ "+") (identifier "uVar5"))) (; ";")) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" (identifier "uVar10") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {\n        uVar10 = uVar6 - 2;\n      }" (if "if") (parenthesized_expression "(((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9))" (( "(") (binary_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)" (parenthesized_expression "((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8))" (( "(") (binary_expression "(uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)" (parenthesized_expression "(uVar5 < uVar9)" (( "(") (binary_expression "uVar5 < uVar9" (identifier "uVar5") (< "<") (identifier "uVar9")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 = uVar6 - 1, param_5 <= uVar8)" (( "(") (comma_expression "uVar10 = uVar6 - 1, param_5 <= uVar8" (assignment_expression "uVar10 = uVar6 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (, ",") (binary_expression "param_5 <= uVar8" (identifier "param_5") (<= "<=") (identifier "uVar8"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar8 < uVar9)" (( "(") (binary_expression "uVar8 < uVar9" (identifier "uVar8") (< "<") (identifier "uVar9")) () ")"))) () ")")) (compound_statement "{\n        uVar10 = uVar6 - 2;\n      }" ({ "{") (expression_statement "uVar10 = uVar6 - 2;" (assignment_expression "uVar10 = uVar6 - 2" (identifier "uVar10") (= "=") (binary_expression "uVar6 - 2" (identifier "uVar6") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);" (assignment_expression "uVar13 = (*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" (identifier "uVar13") (= "=") (call_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)\n                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)" (( "(") (pointer_expression "*(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" (* "*") (cast_expression "(code *)PTR___gmpn_div_qr_1n_pi1_0009d4a8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_div_qr_1n_pi1_0009d4a8"))) () ")")) (argument_list "(param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") (, ",") (identifier "uVar13") (, ",") (identifier "param_5") (, ",") (binary_expression "uVar4 << 0x10 | uVar10" (binary_expression "uVar4 << 0x10" (identifier "uVar4") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar10")) () ")")))) (; ";")) (return_statement "return uVar13;" (return "return") (identifier "uVar13") (; ";")) (} "}"))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" (else "else") (compound_statement "{\n    if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }\n    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];\n    uVar10 = 0x21 - ((uint)bVar1 + iVar11);\n    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);\n    puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;\n    param_5 = param_5 << (uVar10 & 0x1f);\n    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;\n    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);\n    uVar5 = param_5 >> 0x10;\n    uVar8 = param_5 & 0xffff;\n    if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = uVar13 / uVar5;\n    uVar6 = uVar7 * uVar8;\n    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;\n    uVar9 = uVar7;\n    if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    if (uVar5 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar6) / uVar5;\n    uVar8 = uVar7 * uVar8;\n    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;\n    uVar4 = uVar7;\n    if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n    uVar13 = uVar13 - uVar8;\n    *param_2 = uVar9 << 0x10 | uVar4;\n    param_3 = param_1;\n  }" ({ "{") (if_statement "if (param_5 < 0x10000) {\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }\n    else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" (if "if") (parenthesized_expression "(param_5 < 0x10000)" (( "(") (binary_expression "param_5 < 0x10000" (identifier "param_5") (< "<") (number_literal "0x10000")) () ")")) (compound_statement "{\n      iVar11 = 9;\n      if (param_5 < 0x100) {\n        iVar11 = 1;\n      }\n    }" ({ "{") (expression_statement "iVar11 = 9;" (assignment_expression "iVar11 = 9" (identifier "iVar11") (= "=") (number_literal "9")) (; ";")) (if_statement "if (param_5 < 0x100) {\n        iVar11 = 1;\n      }" (if "if") (parenthesized_expression "(param_5 < 0x100)" (( "(") (binary_expression "param_5 < 0x100" (identifier "param_5") (< "<") (number_literal "0x100")) () ")")) (compound_statement "{\n        iVar11 = 1;\n      }" ({ "{") (expression_statement "iVar11 = 1;" (assignment_expression "iVar11 = 1" (identifier "iVar11") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" (else "else") (compound_statement "{\n      iVar11 = 0x19;\n      if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }\n    }" ({ "{") (expression_statement "iVar11 = 0x19;" (assignment_expression "iVar11 = 0x19" (identifier "iVar11") (= "=") (number_literal "0x19")) (; ";")) (if_statement "if (param_5 < 0x1000000) {\n        iVar11 = 0x11;\n      }" (if "if") (parenthesized_expression "(param_5 < 0x1000000)" (( "(") (binary_expression "param_5 < 0x1000000" (identifier "param_5") (< "<") (number_literal "0x1000000")) () ")")) (compound_statement "{\n        iVar11 = 0x11;\n      }" ({ "{") (expression_statement "iVar11 = 0x11;" (assignment_expression "iVar11 = 0x11" (identifier "iVar11") (= "=") (number_literal "0x11")) (; ";")) (} "}"))) (} "}")))) (expression_statement "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];" (assignment_expression "bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" (identifier "bVar1") (= "=") (subscript_expression "PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11]" (identifier "PTR___gmpn_clz_tab_0009d18c") ([ "[") (binary_expression "param_5 >> iVar11" (identifier "param_5") (>> ">>") (identifier "iVar11")) (] "]"))) (; ";")) (expression_statement "uVar10 = 0x21 - ((uint)bVar1 + iVar11);" (assignment_expression "uVar10 = 0x21 - ((uint)bVar1 + iVar11)" (identifier "uVar10") (= "=") (binary_expression "0x21 - ((uint)bVar1 + iVar11)" (number_literal "0x21") (- "-") (parenthesized_expression "((uint)bVar1 + iVar11)" (( "(") (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (+ "+") (identifier "iVar11")) () ")")))) (; ";")) (expression_statement "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10)" (parenthesized_expression "(*(code *)PTR___gmpn_lshift_0009d56c)" (( "(") (pointer_expression "*(code *)PTR___gmpn_lshift_0009d56c" (* "*") (cast_expression "(code *)PTR___gmpn_lshift_0009d56c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_lshift_0009d56c"))) () ")")) (argument_list "(param_1,param_3,iVar12,uVar10)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (identifier "iVar12") (, ",") (identifier "uVar10") () ")")))) (; ";")) (expression_statement "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;" (assignment_expression "puVar3 = PTR___gmpn_div_qr_1n_pi1_0009d4a8" (identifier "puVar3") (= "=") (identifier "PTR___gmpn_div_qr_1n_pi1_0009d4a8")) (; ";")) (expression_statement "param_5 = param_5 << (uVar10 & 0x1f);" (assignment_expression "param_5 = param_5 << (uVar10 & 0x1f)" (identifier "param_5") (= "=") (binary_expression "param_5 << (uVar10 & 0x1f)" (identifier "param_5") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;" (assignment_expression "uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4" (identifier "uVar4") (= "=") (binary_expression "uVar13 << (uVar10 & 0x1f) | uVar4" (binary_expression "uVar13 << (uVar10 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (identifier "uVar4"))) (; ";")) (expression_statement "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);" (assignment_expression "uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f)" (identifier "uVar13") (>> ">>") (parenthesized_expression "(((uint)bVar1 + iVar11) - 1 & 0x1f)" (( "(") (binary_expression "((uint)bVar1 + iVar11) - 1 & 0x1f" (binary_expression "((uint)bVar1 + iVar11) - 1" (parenthesized_expression "((uint)bVar1 + iVar11)" (( "(") (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (+ "+") (identifier "iVar11")) () ")")) (- "-") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar5 = param_5 >> 0x10;" (assignment_expression "uVar5 = param_5 >> 0x10" (identifier "uVar5") (= "=") (binary_expression "param_5 >> 0x10" (identifier "param_5") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "uVar8 = param_5 & 0xffff;" (assignment_expression "uVar8 = param_5 & 0xffff" (identifier "uVar8") (= "=") (binary_expression "param_5 & 0xffff" (identifier "param_5") (& "&") (number_literal "0xffff"))) (; ";")) (if_statement "if (2 < iVar12) {\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" (if "if") (parenthesized_expression "(2 < iVar12)" (( "(") (binary_expression "2 < iVar12" (number_literal "2") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n      if (uVar5 == 0) {\n        trap(7);\n      }\n      uVar14 = ~param_5 / uVar5;\n      uVar7 = uVar14 * uVar8;\n      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;\n      uVar9 = uVar14;\n      if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      uVar14 = uVar5 - 1;\n      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }\nLAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;\n      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);\n      iVar11 = (int)((ulonglong)lVar2 >> 0x20);\n      uVar4 = uVar4 - param_5 * iVar11;\n      uVar5 = (uint)((uint)lVar2 < uVar4);\n      uVar13 = param_5;\n      if (uVar5 == 0) {\n        uVar13 = 0;\n      }\n      uVar13 = uVar13 + uVar4;\n      uVar5 = iVar11 - uVar5;\n      if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }\n      *param_2 = uVar5;\n      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);\n      return uVar13 >> (uVar10 & 0x1f);\n    }" ({ "{") (if_statement "if (uVar5 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar14 = ~param_5 / uVar5;" (assignment_expression "uVar14 = ~param_5 / uVar5" (identifier "uVar14") (= "=") (binary_expression "~param_5 / uVar5" (unary_expression "~param_5" (~ "~") (identifier "param_5")) (/ "/") (identifier "uVar5"))) (; ";")) (expression_statement "uVar7 = uVar14 * uVar8;" (assignment_expression "uVar7 = uVar14 * uVar8" (identifier "uVar7") (= "=") (binary_expression "uVar14 * uVar8" (identifier "uVar14") (* "*") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff" (identifier "uVar6") (= "=") (binary_expression "~param_5 % uVar5 << 0x10 | 0xffff" (binary_expression "~param_5 % uVar5 << 0x10" (binary_expression "~param_5 % uVar5" (unary_expression "~param_5" (~ "~") (identifier "param_5")) (% "%") (identifier "uVar5")) (<< "<<") (number_literal "0x10")) (| "|") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar9 = uVar14;" (assignment_expression "uVar9 = uVar14" (identifier "uVar9") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar6 < uVar7) {\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }\n      else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" (if "if") (parenthesized_expression "(uVar6 < uVar7)" (( "(") (binary_expression "uVar6 < uVar7" (identifier "uVar6") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n        uVar6 = uVar6 + param_5;\n        uVar9 = uVar14 - 1;\n        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" ({ "{") (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" (identifier "uVar6") (= "=") (binary_expression "uVar6 + param_5" (identifier "uVar6") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar9 = uVar14 - 1;" (assignment_expression "uVar9 = uVar14 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar14 - 1" (identifier "uVar14") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar6) && (uVar6 < uVar7)) {\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" (if "if") (parenthesized_expression "((param_5 <= uVar6) && (uVar6 < uVar7))" (( "(") (binary_expression "(param_5 <= uVar6) && (uVar6 < uVar7)" (parenthesized_expression "(param_5 <= uVar6)" (( "(") (binary_expression "param_5 <= uVar6" (identifier "param_5") (<= "<=") (identifier "uVar6")) () ")")) (&& "&&") (parenthesized_expression "(uVar6 < uVar7)" (( "(") (binary_expression "uVar6 < uVar7" (identifier "uVar6") (< "<") (identifier "uVar7")) () ")"))) () ")")) (compound_statement "{\n          uVar9 = uVar14 - 2;\n          uVar6 = uVar6 + param_5;\n          goto LAB_0006f918;\n        }" ({ "{") (expression_statement "uVar9 = uVar14 - 2;" (assignment_expression "uVar9 = uVar14 - 2" (identifier "uVar9") (= "=") (binary_expression "uVar14 - 2" (identifier "uVar14") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar6 = uVar6 + param_5;" (assignment_expression "uVar6 = uVar6 + param_5" (identifier "uVar6") (= "=") (binary_expression "uVar6 + param_5" (identifier "uVar6") (+ "+") (identifier "param_5"))) (; ";")) (goto_statement "goto LAB_0006f918;" (goto "goto") (statement_identifier "LAB_0006f918") (; ";")) (} "}"))) (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" (identifier "uVar14") (= "=") (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" (( "(") (binary_expression "uVar6 - uVar7" (identifier "uVar6") (- "-") (identifier "uVar7")) () ")")) (/ "/") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" (identifier "uVar8") (= "=") (binary_expression "uVar14 * uVar8" (identifier "uVar14") (* "*") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (identifier "uVar6") (= "=") (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" (( "(") (binary_expression "uVar6 - uVar7" (identifier "uVar6") (- "-") (identifier "uVar7")) () ")")) (% "%") (identifier "uVar5")) (<< "<<") (number_literal "0x10")) (| "|") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" (identifier "uVar5") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" (if "if") (parenthesized_expression "(uVar8 <= uVar6)" (( "(") (binary_expression "uVar8 <= uVar6" (identifier "uVar8") (<= "<=") (identifier "uVar6")) () ")")) (goto_statement "goto LAB_0006f944;" (goto "goto") (statement_identifier "LAB_0006f944") (; ";"))) (} "}")) (else_clause "else {\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" (else "else") (compound_statement "{\nLAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }\n        uVar14 = (uVar6 - uVar7) / uVar5;\n        uVar8 = uVar14 * uVar8;\n        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;\n        uVar5 = uVar14;\n        if (uVar8 <= uVar6) goto LAB_0006f944;\n      }" ({ "{") (labeled_statement "LAB_0006f918:\n        if (uVar5 == 0) {\n          trap(7);\n        }" (statement_identifier "LAB_0006f918") (: ":") (if_statement "if (uVar5 == 0) {\n          trap(7);\n        }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          trap(7);\n        }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar14 = (uVar6 - uVar7) / uVar5;" (assignment_expression "uVar14 = (uVar6 - uVar7) / uVar5" (identifier "uVar14") (= "=") (binary_expression "(uVar6 - uVar7) / uVar5" (parenthesized_expression "(uVar6 - uVar7)" (( "(") (binary_expression "uVar6 - uVar7" (identifier "uVar6") (- "-") (identifier "uVar7")) () ")")) (/ "/") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = uVar14 * uVar8;" (assignment_expression "uVar8 = uVar14 * uVar8" (identifier "uVar8") (= "=") (binary_expression "uVar14 * uVar8" (identifier "uVar14") (* "*") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;" (assignment_expression "uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (identifier "uVar6") (= "=") (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10 | 0xffff" (binary_expression "(uVar6 - uVar7) % uVar5 << 0x10" (binary_expression "(uVar6 - uVar7) % uVar5" (parenthesized_expression "(uVar6 - uVar7)" (( "(") (binary_expression "uVar6 - uVar7" (identifier "uVar6") (- "-") (identifier "uVar7")) () ")")) (% "%") (identifier "uVar5")) (<< "<<") (number_literal "0x10")) (| "|") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar5 = uVar14;" (assignment_expression "uVar5 = uVar14" (identifier "uVar5") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar8 <= uVar6) goto LAB_0006f944;" (if "if") (parenthesized_expression "(uVar8 <= uVar6)" (( "(") (binary_expression "uVar8 <= uVar6" (identifier "uVar8") (<= "<=") (identifier "uVar6")) () ")")) (goto_statement "goto LAB_0006f944;" (goto "goto") (statement_identifier "LAB_0006f944") (; ";"))) (} "}")))) (expression_statement "uVar14 = uVar5 - 1;" (assignment_expression "uVar14 = uVar5 - 1" (identifier "uVar14") (= "=") (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {\n        uVar14 = uVar5 - 2;\n      }" (if "if") (parenthesized_expression "((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8))" (( "(") (binary_expression "(param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)" (parenthesized_expression "(param_5 <= param_5 + uVar6)" (( "(") (binary_expression "param_5 <= param_5 + uVar6" (identifier "param_5") (<= "<=") (binary_expression "param_5 + uVar6" (identifier "param_5") (+ "+") (identifier "uVar6"))) () ")")) (&& "&&") (parenthesized_expression "(param_5 + uVar6 < uVar8)" (( "(") (binary_expression "param_5 + uVar6 < uVar8" (binary_expression "param_5 + uVar6" (identifier "param_5") (+ "+") (identifier "uVar6")) (< "<") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n        uVar14 = uVar5 - 2;\n      }" ({ "{") (expression_statement "uVar14 = uVar5 - 2;" (assignment_expression "uVar14 = uVar5 - 2" (identifier "uVar14") (= "=") (binary_expression "uVar5 - 2" (identifier "uVar5") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (labeled_statement "LAB_0006f944:\n      uVar14 = uVar9 << 0x10 | uVar14;" (statement_identifier "LAB_0006f944") (: ":") (expression_statement "uVar14 = uVar9 << 0x10 | uVar14;" (assignment_expression "uVar14 = uVar9 << 0x10 | uVar14" (identifier "uVar14") (= "=") (binary_expression "uVar9 << 0x10 | uVar14" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar14"))) (; ";"))) (expression_statement "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);" (assignment_expression "lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" (identifier "lVar2") (= "=") (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4)" (binary_expression "(ulonglong)uVar13 * (ulonglong)uVar14" (cast_expression "(ulonglong)uVar13" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar13")) (* "*") (cast_expression "(ulonglong)uVar14" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar14"))) (+ "+") (call_expression "CONCAT44(uVar13 + 1,uVar4)" (identifier "CONCAT44") (argument_list "(uVar13 + 1,uVar4)" (( "(") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1")) (, ",") (identifier "uVar4") () ")"))))) (; ";")) (expression_statement "iVar11 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar2 >> 0x20)" (identifier "iVar11") (= "=") (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 - param_5 * iVar11;" (assignment_expression "uVar4 = uVar4 - param_5 * iVar11" (identifier "uVar4") (= "=") (binary_expression "uVar4 - param_5 * iVar11" (identifier "uVar4") (- "-") (binary_expression "param_5 * iVar11" (identifier "param_5") (* "*") (identifier "iVar11")))) (; ";")) (expression_statement "uVar5 = (uint)((uint)lVar2 < uVar4);" (assignment_expression "uVar5 = (uint)((uint)lVar2 < uVar4)" (identifier "uVar5") (= "=") (call_expression "(uint)((uint)lVar2 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uint)lVar2 < uVar4)" (( "(") (binary_expression "(uint)lVar2 < uVar4" (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2")) (< "<") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "uVar13 = param_5;" (assignment_expression "uVar13 = param_5" (identifier "uVar13") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (uVar5 == 0) {\n        uVar13 = 0;\n      }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar13 = 0;\n      }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar13 = uVar13 + uVar4;" (assignment_expression "uVar13 = uVar13 + uVar4" (identifier "uVar13") (= "=") (binary_expression "uVar13 + uVar4" (identifier "uVar13") (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "uVar5 = iVar11 - uVar5;" (assignment_expression "uVar5 = iVar11 - uVar5" (identifier "uVar5") (= "=") (binary_expression "iVar11 - uVar5" (identifier "iVar11") (- "-") (identifier "uVar5"))) (; ";")) (if_statement "if (param_5 <= uVar13) {\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" (if "if") (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (compound_statement "{\n        uVar13 = uVar13 - param_5;\n        uVar5 = uVar5 + 1;\n      }" ({ "{") (expression_statement "uVar13 = uVar13 - param_5;" (assignment_expression "uVar13 = uVar13 - param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 - param_5" (identifier "uVar13") (- "-") (identifier "param_5"))) (; ";")) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" (identifier "uVar5") (= "=") (binary_expression "uVar5 + 1" (identifier "uVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*param_2 = uVar5;" (assignment_expression "*param_2 = uVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);" (assignment_expression "uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" (identifier "uVar13") (= "=") (call_expression "(*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14)" (parenthesized_expression "(*(code *)puVar3)" (( "(") (pointer_expression "*(code *)puVar3" (* "*") (cast_expression "(code *)puVar3" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")")) (argument_list "(param_1,param_1,iVar12,uVar13,param_5,uVar14)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (identifier "iVar12") (, ",") (identifier "uVar13") (, ",") (identifier "param_5") (, ",") (identifier "uVar14") () ")")))) (; ";")) (return_statement "return uVar13 >> (uVar10 & 0x1f);" (return "return") (binary_expression "uVar13 >> (uVar10 & 0x1f)" (identifier "uVar13") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar13 / uVar5;" (assignment_expression "uVar7 = uVar13 / uVar5" (identifier "uVar7") (= "=") (binary_expression "uVar13 / uVar5" (identifier "uVar13") (/ "/") (identifier "uVar5"))) (; ";")) (expression_statement "uVar6 = uVar7 * uVar8;" (assignment_expression "uVar6 = uVar7 * uVar8" (identifier "uVar6") (= "=") (binary_expression "uVar7 * uVar8" (identifier "uVar7") (* "*") (identifier "uVar8"))) (; ";")) (expression_statement "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;" (assignment_expression "uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar13 % uVar5 << 0x10 | uVar4 >> 0x10" (binary_expression "uVar13 % uVar5 << 0x10" (binary_expression "uVar13 % uVar5" (identifier "uVar13") (% "%") (identifier "uVar5")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar4 >> 0x10" (identifier "uVar4") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" (identifier "uVar9") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar13 < uVar6) {\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar6)" (( "(") (binary_expression "uVar13 < uVar6" (identifier "uVar13") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar9 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" ({ "{") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar9 = uVar7 - 1;" (assignment_expression "uVar9 = uVar7 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar6)) {\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" (if "if") (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar6))" (( "(") (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar6)" (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 < uVar6)" (( "(") (binary_expression "uVar13 < uVar6" (identifier "uVar13") (< "<") (identifier "uVar6")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" ({ "{") (expression_statement "uVar9 = uVar7 - 2;" (assignment_expression "uVar9 = uVar7 - 2" (identifier "uVar9") (= "=") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar5 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = (uVar13 - uVar6) / uVar5;" (assignment_expression "uVar7 = (uVar13 - uVar6) / uVar5" (identifier "uVar7") (= "=") (binary_expression "(uVar13 - uVar6) / uVar5" (parenthesized_expression "(uVar13 - uVar6)" (( "(") (binary_expression "uVar13 - uVar6" (identifier "uVar13") (- "-") (identifier "uVar6")) () ")")) (/ "/") (identifier "uVar5"))) (; ";")) (expression_statement "uVar8 = uVar7 * uVar8;" (assignment_expression "uVar8 = uVar7 * uVar8" (identifier "uVar8") (= "=") (binary_expression "uVar7 * uVar8" (identifier "uVar7") (* "*") (identifier "uVar8"))) (; ";")) (expression_statement "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;" (assignment_expression "uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" (identifier "uVar13") (= "=") (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff" (binary_expression "(uVar13 - uVar6) % uVar5 << 0x10" (binary_expression "(uVar13 - uVar6) % uVar5" (parenthesized_expression "(uVar13 - uVar6)" (( "(") (binary_expression "uVar13 - uVar6" (identifier "uVar13") (- "-") (identifier "uVar6")) () ")")) (% "%") (identifier "uVar5")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar4 & 0xffff" (identifier "uVar4") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar4 = uVar7;" (assignment_expression "uVar4 = uVar7" (identifier "uVar4") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar13 < uVar8) {\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n      uVar13 = uVar13 + param_5;\n      uVar4 = uVar7 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" ({ "{") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar4 = uVar7 - 1;" (assignment_expression "uVar4 = uVar7 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" (if "if") (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" (( "(") (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n        uVar4 = uVar7 - 2;\n        uVar13 = uVar13 + param_5;\n      }" ({ "{") (expression_statement "uVar4 = uVar7 - 2;" (assignment_expression "uVar4 = uVar7 - 2" (identifier "uVar4") (= "=") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar13 = uVar13 - uVar8;" (assignment_expression "uVar13 = uVar13 - uVar8" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "*param_2 = uVar9 << 0x10 | uVar4;" (assignment_expression "*param_2 = uVar9 << 0x10 | uVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar9 << 0x10 | uVar4" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar4"))) (; ";")) (expression_statement "param_3 = param_1;" (assignment_expression "param_3 = param_1" (identifier "param_3") (= "=") (identifier "param_1")) (; ";")) (} "}")))) (expression_statement "uVar4 = param_5 >> 0x10;" (assignment_expression "uVar4 = param_5 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "param_5 >> 0x10" (identifier "param_5") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (iVar12 < 1) goto LAB_0006fbac;" (if "if") (parenthesized_expression "(iVar12 < 1)" (( "(") (binary_expression "iVar12 < 1" (identifier "iVar12") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0006fbac;" (goto "goto") (statement_identifier "LAB_0006fbac") (; ";"))) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" (identifier "uVar7") (= "=") (binary_expression "uVar13 / uVar4" (identifier "uVar13") (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar6 = param_5 & 0xffff;" (assignment_expression "uVar6 = param_5 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "param_5 & 0xffff" (identifier "param_5") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar9 = param_3[param_4 + -2];" (assignment_expression "uVar9 = param_3[param_4 + -2]" (identifier "uVar9") (= "=") (subscript_expression "param_3[param_4 + -2]" (identifier "param_3") ([ "[") (binary_expression "param_4 + -2" (identifier "param_4") (+ "+") (number_literal "-2")) (] "]"))) (; ";")) (expression_statement "uVar8 = uVar7 * uVar6;" (assignment_expression "uVar8 = uVar7 * uVar6" (identifier "uVar8") (= "=") (binary_expression "uVar7 * uVar6" (identifier "uVar7") (* "*") (identifier "uVar6"))) (; ";")) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")) (| "|") (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" (identifier "uVar13") (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" (identifier "uVar5") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }\n  else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) goto LAB_0006fab8;\n  }" ({ "{") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" (if "if") (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" (( "(") (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fa84;\n    }" ({ "{") (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" (identifier "uVar5") (= "=") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (goto_statement "goto LAB_0006fa84;" (goto "goto") (statement_identifier "LAB_0006fa84") (; ";")) (} "}"))) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" (identifier "uVar14") (= "=") (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" (identifier "uVar7") (= "=") (binary_expression "uVar6 * uVar14" (identifier "uVar6") (* "*") (identifier "uVar14"))) (; ";")) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) (| "|") (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" (identifier "uVar8") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar13 < uVar7) goto LAB_0006fab8;" (if "if") (parenthesized_expression "(uVar13 < uVar7)" (( "(") (binary_expression "uVar13 < uVar7" (identifier "uVar13") (< "<") (identifier "uVar7")) () ")")) (goto_statement "goto LAB_0006fab8;" (goto "goto") (statement_identifier "LAB_0006fab8") (; ";"))) (} "}")) (else_clause "else {\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" (else "else") (compound_statement "{\nLAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar14 = (uVar13 - uVar8) / uVar4;\n    uVar7 = uVar6 * uVar14;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    uVar8 = uVar14;\n    if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0006fa84:\n    if (uVar4 == 0) {\n      trap(7);\n    }" (statement_identifier "LAB_0006fa84") (: ":") (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar14 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar14 = (uVar13 - uVar8) / uVar4" (identifier "uVar14") (= "=") (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar7 = uVar6 * uVar14;" (assignment_expression "uVar7 = uVar6 * uVar14" (identifier "uVar7") (= "=") (binary_expression "uVar6 * uVar14" (identifier "uVar6") (* "*") (identifier "uVar14"))) (; ";")) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) (| "|") (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "uVar8 = uVar14;" (assignment_expression "uVar8 = uVar14" (identifier "uVar8") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar13 < uVar7) {\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar7)" (( "(") (binary_expression "uVar13 < uVar7" (identifier "uVar13") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\nLAB_0006fab8:\n      uVar13 = uVar13 + param_5;\n      uVar14 = uVar8 - 1;\n      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }\n    }" ({ "{") (labeled_statement "LAB_0006fab8:\n      uVar13 = uVar13 + param_5;" (statement_identifier "LAB_0006fab8") (: ":") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";"))) (expression_statement "uVar14 = uVar8 - 1;" (assignment_expression "uVar14 = uVar8 - 1" (identifier "uVar14") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar7)) {\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" (if "if") (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar7))" (( "(") (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar7)" (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 < uVar7)" (( "(") (binary_expression "uVar13 < uVar7" (identifier "uVar13") (< "<") (identifier "uVar7")) () ")"))) () ")")) (compound_statement "{\n        uVar14 = uVar8 - 2;\n        uVar13 = uVar13 + param_5;\n      }" ({ "{") (expression_statement "uVar14 = uVar8 - 2;" (assignment_expression "uVar14 = uVar8 - 2" (identifier "uVar14") (= "=") (binary_expression "uVar8 - 2" (identifier "uVar8") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;" (assignment_expression "param_1[param_4 + -2] = uVar5 << 0x10 | uVar14" (subscript_expression "param_1[param_4 + -2]" (identifier "param_1") ([ "[") (binary_expression "param_4 + -2" (identifier "param_4") (+ "+") (number_literal "-2")) (] "]")) (= "=") (binary_expression "uVar5 << 0x10 | uVar14" (binary_expression "uVar5 << 0x10" (identifier "uVar5") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar14"))) (; ";")) (expression_statement "uVar13 = uVar13 - uVar7;" (assignment_expression "uVar13 = uVar13 - uVar7" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar7" (identifier "uVar13") (- "-") (identifier "uVar7"))) (; ";")) (if_statement "if (param_4 != 3) goto LAB_0006fbac;" (if "if") (parenthesized_expression "(param_4 != 3)" (( "(") (binary_expression "param_4 != 3" (identifier "param_4") (!= "!=") (number_literal "3")) () ")")) (goto_statement "goto LAB_0006fbac;" (goto "goto") (statement_identifier "LAB_0006fbac") (; ";"))) (if_statement "if (uVar4 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar13 / uVar4;" (assignment_expression "uVar7 = uVar13 / uVar4" (identifier "uVar7") (= "=") (binary_expression "uVar13 / uVar4" (identifier "uVar13") (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar9 = *param_3;" (assignment_expression "uVar9 = *param_3" (identifier "uVar9") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar8 = uVar6 * uVar7;" (assignment_expression "uVar8 = uVar6 * uVar7" (identifier "uVar8") (= "=") (binary_expression "uVar6 * uVar7" (identifier "uVar6") (* "*") (identifier "uVar7"))) (; ";")) (expression_statement "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 >> 0x10 | uVar13 % uVar4 << 0x10" (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")) (| "|") (binary_expression "uVar13 % uVar4 << 0x10" (binary_expression "uVar13 % uVar4" (identifier "uVar13") (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (expression_statement "uVar5 = uVar7;" (assignment_expression "uVar5 = uVar7" (identifier "uVar5") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar13 < uVar8) {\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }\n  else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" (if "if") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n    uVar13 = uVar13 + param_5;\n    uVar5 = uVar7 - 1;\n    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) goto LAB_0006fb7c;\n  }" ({ "{") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (expression_statement "uVar5 = uVar7 - 1;" (assignment_expression "uVar5 = uVar7 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_5 <= uVar13) && (uVar13 < uVar8)) {\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" (if "if") (parenthesized_expression "((param_5 <= uVar13) && (uVar13 < uVar8))" (( "(") (binary_expression "(param_5 <= uVar13) && (uVar13 < uVar8)" (parenthesized_expression "(param_5 <= uVar13)" (( "(") (binary_expression "param_5 <= uVar13" (identifier "param_5") (<= "<=") (identifier "uVar13")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 < uVar8)" (( "(") (binary_expression "uVar13 < uVar8" (identifier "uVar13") (< "<") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n      uVar5 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n      goto LAB_0006fb48;\n    }" ({ "{") (expression_statement "uVar5 = uVar7 - 2;" (assignment_expression "uVar5 = uVar7 - 2" (identifier "uVar5") (= "=") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (goto_statement "goto LAB_0006fb48;" (goto "goto") (statement_identifier "LAB_0006fb48") (; ";")) (} "}"))) (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" (identifier "uVar7") (= "=") (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" (identifier "uVar6") (= "=") (binary_expression "uVar7 * uVar6" (identifier "uVar7") (* "*") (identifier "uVar6"))) (; ";")) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) (| "|") (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (if_statement "if (uVar13 < uVar6) goto LAB_0006fb7c;" (if "if") (parenthesized_expression "(uVar13 < uVar6)" (( "(") (binary_expression "uVar13 < uVar6" (identifier "uVar13") (< "<") (identifier "uVar6")) () ")")) (goto_statement "goto LAB_0006fb7c;" (goto "goto") (statement_identifier "LAB_0006fb7c") (; ";"))) (} "}")) (else_clause "else {\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" (else "else") (compound_statement "{\nLAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }\n    uVar7 = (uVar13 - uVar8) / uVar4;\n    uVar6 = uVar7 * uVar6;\n    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;\n    if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }\n  }" ({ "{") (labeled_statement "LAB_0006fb48:\n    if (uVar4 == 0) {\n      trap(7);\n    }" (statement_identifier "LAB_0006fb48") (: ":") (if_statement "if (uVar4 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar7 = (uVar13 - uVar8) / uVar4;" (assignment_expression "uVar7 = (uVar13 - uVar8) / uVar4" (identifier "uVar7") (= "=") (binary_expression "(uVar13 - uVar8) / uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar6 = uVar7 * uVar6;" (assignment_expression "uVar6 = uVar7 * uVar6" (identifier "uVar6") (= "=") (binary_expression "uVar7 * uVar6" (identifier "uVar7") (* "*") (identifier "uVar6"))) (; ";")) (expression_statement "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;" (assignment_expression "uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")) (| "|") (binary_expression "(uVar13 - uVar8) % uVar4 << 0x10" (binary_expression "(uVar13 - uVar8) % uVar4" (parenthesized_expression "(uVar13 - uVar8)" (( "(") (binary_expression "uVar13 - uVar8" (identifier "uVar13") (- "-") (identifier "uVar8")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")))) (; ";")) (if_statement "if (uVar13 < uVar6) {\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" (if "if") (parenthesized_expression "(uVar13 < uVar6)" (( "(") (binary_expression "uVar13 < uVar6" (identifier "uVar13") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\nLAB_0006fb7c:\n      uVar13 = uVar13 + param_5;\n      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }\n      uVar7 = uVar7 - 2;\n      uVar13 = uVar13 + param_5;\n    }" ({ "{") (labeled_statement "LAB_0006fb7c:\n      uVar13 = uVar13 + param_5;" (statement_identifier "LAB_0006fb7c") (: ":") (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";"))) (if_statement "if ((uVar13 < param_5) || (uVar6 <= uVar13)) {\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" (if "if") (parenthesized_expression "((uVar13 < param_5) || (uVar6 <= uVar13))" (( "(") (binary_expression "(uVar13 < param_5) || (uVar6 <= uVar13)" (parenthesized_expression "(uVar13 < param_5)" (( "(") (binary_expression "uVar13 < param_5" (identifier "uVar13") (< "<") (identifier "param_5")) () ")")) (|| "||") (parenthesized_expression "(uVar6 <= uVar13)" (( "(") (binary_expression "uVar6 <= uVar13" (identifier "uVar6") (<= "<=") (identifier "uVar13")) () ")"))) () ")")) (compound_statement "{\n        uVar13 = uVar13 - uVar6;\n        *param_1 = uVar5 << 0x10 | uVar7 - 1;\n        goto LAB_0006fbac;\n      }" ({ "{") (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar6" (identifier "uVar13") (- "-") (identifier "uVar6"))) (; ";")) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7 - 1;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7 - 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar5 << 0x10 | uVar7 - 1" (binary_expression "uVar5 << 0x10" (identifier "uVar5") (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1")))) (; ";")) (goto_statement "goto LAB_0006fbac;" (goto "goto") (statement_identifier "LAB_0006fbac") (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 - 2;" (assignment_expression "uVar7 = uVar7 - 2" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 2" (identifier "uVar7") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar13 = uVar13 + param_5;" (assignment_expression "uVar13 = uVar13 + param_5" (identifier "uVar13") (= "=") (binary_expression "uVar13 + param_5" (identifier "uVar13") (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar13 = uVar13 - uVar6;" (assignment_expression "uVar13 = uVar13 - uVar6" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar6" (identifier "uVar13") (- "-") (identifier "uVar6"))) (; ";")) (expression_statement "*param_1 = uVar5 << 0x10 | uVar7;" (assignment_expression "*param_1 = uVar5 << 0x10 | uVar7" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar5 << 0x10 | uVar7" (binary_expression "uVar5 << 0x10" (identifier "uVar5") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar7"))) (; ";")) (labeled_statement "LAB_0006fbac:\n  return uVar13 >> (uVar10 & 0x1f);" (statement_identifier "LAB_0006fbac") (: ":") (return_statement "return uVar13 >> (uVar10 & 0x1f);" (return "return") (binary_expression "uVar13 >> (uVar10 & 0x1f)" (identifier "uVar13") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (; ";"))) (} "}")))

type_1 function_1(type_2 qp,type_1 *qh,type_3 up,type_4 var_1,type_1 var_3)

{
  type_5 bVar1;
  bool bVar2;
  type_6 lVar3;
  type_7 *puVar4;
  type_8 var_12;
  type_8 var_9;
  type_8 var_11;
  type_1 var_5;
  type_8 var_15;
  type_8 var_10;
  type_8 var_8;
  type_8 var_4;
  int var_13;
  int var_6;
  type_8 var_2;
  type_8 var_14;
  type_8 var_17;
  
  var_6 = var_1 + -1;
  var_2 = up[var_6];
  if ((int)var_3 < 0) {
    var_4 = var_2 < var_3 ^ 1;
    *qh = var_4;
    var_5 = var_3;
    if (var_4 == 0) {
      var_5 = 0;
    }
    var_2 = var_2 - var_5;
    if (2 < var_6) {
      var_4 = var_3 >> 0x10;
      if (var_4 == 0) {
        var_7(7);
      }
      var_8 = ~var_3 / var_4;
      var_10 = (var_3 & 0xffff) * var_8;
      var_9 = ~var_3 % var_4 << 0x10 | 0xffff;
      var_12 = var_8;
      if (var_9 < var_10) {
        var_9 = var_9 + var_3;
        var_12 = var_8 - 1;
        if ((var_3 <= var_9) && (var_9 < var_10)) {
          var_12 = var_8 - 2;
          var_9 = var_9 + var_3;
        }
      }
      if (var_4 == 0) {
        var_7(7);
      }
      var_11 = (var_9 - var_10) / var_4;
      var_8 = (var_3 & 0xffff) * var_11;
      var_9 = (var_9 - var_10) % var_4 << 0x10 | 0xffff;
      var_10 = var_3 + var_9;
      var_4 = var_11;
      if (((var_9 < var_8) && (var_4 = var_11 - 1, var_3 <= var_10)) && (var_10 < var_8)) {
        var_4 = var_11 - 2;
      }
      var_5 = (*(type_9 *)PTR___gmpn_div_qr_1n_pi1_0009d4a8)
                        (qp,up,var_6,var_2,var_3,var_12 << 0x10 | var_4);
      return var_5;
    }
    var_4 = 0;
  }
  else {
    if (var_3 < 0x10000) {
      var_13 = 9;
      if (var_3 < 0x100) {
        var_13 = 1;
      }
    }
    else {
      var_13 = 0x19;
      if (var_3 < 0x1000000) {
        var_13 = 0x11;
      }
    }
    bVar1 = PTR___gmpn_clz_tab_0009d18c[var_3 >> var_13];
    var_4 = 0x21 - ((type_8)bVar1 + var_13);
    var_12 = (*(type_9 *)PTR___gmpn_lshift_0009d56c)(qp,up,var_6,var_4);
    puVar4 = PTR___gmpn_div_qr_1n_pi1_0009d4a8;
    var_3 = var_3 << (var_4 & 0x1f);
    var_12 = var_2 << (var_4 & 0x1f) | var_12;
    var_2 = var_2 >> (((type_8)bVar1 + var_13) - 1 & 0x1f);
    var_9 = var_3 >> 0x10;
    var_10 = var_3 & 0xffff;
    if (2 < var_6) {
      if (var_9 == 0) {
        var_7(7);
      }
      var_14 = ~var_3 / var_9;
      var_15 = var_14 * var_10;
      var_11 = ~var_3 % var_9 << 0x10 | 0xffff;
      var_8 = var_14;
      if (var_11 < var_15) {
        var_11 = var_11 + var_3;
        var_8 = var_14 - 1;
        if ((var_11 < var_3) || (var_15 <= var_11)) {
          if (var_9 == 0) {
            var_7(7);
          }
          var_14 = (var_11 - var_15) / var_9;
          var_9 = (var_11 - var_15) % var_9 << 0x10 | 0xffff;
          bVar2 = var_9 < var_14 * var_10;
          if (bVar2) {
            var_5 = var_16(bVar2,var_3 + var_9);
            return var_5;
          }
          goto LAB_0006f944;
        }
        var_8 = var_14 - 2;
        var_11 = var_11 + var_3;
      }
      if (var_9 == 0) {
        var_7(7);
      }
      var_17 = (var_11 - var_15) / var_9;
      var_9 = (var_11 - var_15) % var_9 << 0x10 | 0xffff;
      var_11 = var_3 + var_9;
      var_14 = var_17;
      if (((var_9 < var_17 * var_10) && (var_14 = var_17 - 1, var_3 <= var_11)) &&
         (var_11 < var_17 * var_10)) {
        var_14 = var_17 - 2;
      }
LAB_0006f944:
      var_14 = var_8 << 0x10 | var_14;
      lVar3 = (type_10)var_2 * (type_10)var_14 + var_18(var_2 + 1,var_12);
      var_13 = (int)((type_10)lVar3 >> 0x20);
      var_12 = var_12 - var_3 * var_13;
      var_9 = (type_8)((type_8)lVar3 < var_12);
      var_2 = var_3;
      if (var_9 == 0) {
        var_2 = 0;
      }
      var_2 = var_2 + var_12;
      var_5 = var_13 - var_9;
      if (var_3 <= var_2) {
        var_2 = var_2 - var_3;
        var_5 = var_5 + 1;
      }
      *qh = var_5;
      var_2 = (*(type_9 *)puVar4)(qp,qp,var_6,var_2,var_3,var_14);
      return var_2 >> (var_4 & 0x1f);
    }
    if (var_9 == 0) {
      var_7(7);
    }
    var_15 = var_2 / var_9;
    var_11 = var_15 * var_10;
    var_2 = var_2 % var_9 << 0x10 | var_12 >> 0x10;
    var_8 = var_15;
    if (var_2 < var_11) {
      var_2 = var_2 + var_3;
      var_8 = var_15 - 1;
      if ((var_3 <= var_2) && (var_2 < var_11)) {
        var_8 = var_15 - 2;
        var_2 = var_2 + var_3;
      }
    }
    if (var_9 == 0) {
      var_7(7);
    }
    var_15 = (var_2 - var_11) / var_9;
    var_10 = var_15 * var_10;
    var_2 = (var_2 - var_11) % var_9 << 0x10 | var_12 & 0xffff;
    var_12 = var_15;
    if (var_2 < var_10) {
      var_2 = var_2 + var_3;
      var_12 = var_15 - 1;
      if ((var_3 <= var_2) && (var_2 < var_10)) {
        var_12 = var_15 - 2;
        var_2 = var_2 + var_3;
      }
    }
    var_2 = var_2 - var_10;
    *qh = var_8 << 0x10 | var_12;
    up = qp;
  }
  var_12 = var_3 >> 0x10;
  if (var_6 < 1) goto LAB_0006fbac;
  if (var_12 == 0) {
    var_7(7);
  }
  var_15 = var_2 / var_12;
  var_11 = var_3 & 0xffff;
  var_8 = up[var_1 + -2];
  var_10 = var_15 * var_11;
  var_2 = var_8 >> 0x10 | var_2 % var_12 << 0x10;
  var_9 = var_15;
  if (var_2 < var_10) {
    var_2 = var_2 + var_3;
    var_9 = var_15 - 1;
    if ((var_3 <= var_2) && (var_2 < var_10)) {
      var_9 = var_15 - 2;
      var_2 = var_2 + var_3;
      goto LAB_0006fa84;
    }
    if (var_12 == 0) {
      var_7(7);
    }
    var_14 = (var_2 - var_10) / var_12;
    var_15 = var_11 * var_14;
    var_2 = var_8 & 0xffff | (var_2 - var_10) % var_12 << 0x10;
    var_10 = var_14;
    if (var_2 < var_15) goto LAB_0006fab8;
  }
  else {
LAB_0006fa84:
    if (var_12 == 0) {
      var_7(7);
    }
    var_14 = (var_2 - var_10) / var_12;
    var_15 = var_11 * var_14;
    var_2 = var_8 & 0xffff | (var_2 - var_10) % var_12 << 0x10;
    var_10 = var_14;
    if (var_2 < var_15) {
LAB_0006fab8:
      var_2 = var_2 + var_3;
      var_14 = var_10 - 1;
      if ((var_3 <= var_2) && (var_2 < var_15)) {
        var_14 = var_10 - 2;
        var_2 = var_2 + var_3;
      }
    }
  }
  qp[var_1 + -2] = var_9 << 0x10 | var_14;
  var_2 = var_2 - var_15;
  if (var_1 != 3) goto LAB_0006fbac;
  if (var_12 == 0) {
    var_7(7);
  }
  var_15 = var_2 / var_12;
  var_8 = *up;
  var_10 = var_11 * var_15;
  var_2 = var_8 >> 0x10 | var_2 % var_12 << 0x10;
  var_9 = var_15;
  if (var_2 < var_10) {
    var_2 = var_2 + var_3;
    var_9 = var_15 - 1;
    if ((var_3 <= var_2) && (var_2 < var_10)) {
      var_9 = var_15 - 2;
      var_2 = var_2 + var_3;
      goto LAB_0006fb48;
    }
    if (var_12 == 0) {
      var_7(7);
    }
    var_15 = (var_2 - var_10) / var_12;
    var_11 = var_15 * var_11;
    var_2 = var_8 & 0xffff | (var_2 - var_10) % var_12 << 0x10;
    if (var_2 < var_11) goto LAB_0006fb7c;
  }
  else {
LAB_0006fb48:
    if (var_12 == 0) {
      var_7(7);
    }
    var_15 = (var_2 - var_10) / var_12;
    var_11 = var_15 * var_11;
    var_2 = var_8 & 0xffff | (var_2 - var_10) % var_12 << 0x10;
    if (var_2 < var_11) {
LAB_0006fb7c:
      var_2 = var_2 + var_3;
      if ((var_2 < var_3) || (var_11 <= var_2)) {
        var_2 = var_2 - var_11;
        *qp = var_9 << 0x10 | var_15 - 1;
        goto LAB_0006fbac;
      }
      var_15 = var_15 - 2;
      var_2 = var_2 + var_3;
    }
  }
  var_2 = var_2 - var_11;
  *qp = var_9 << 0x10 | var_15;
LAB_0006fbac:
  return var_2 >> (var_4 & 0x1f);
}


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

uint MASKED(uint *param_1,uint *param_2,uint *param_3,int param_4,uint param_5)

{
  byte bVar1;
  longlong lVar2;
  undefined *puVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  
  iVar12 = param_4 + -1;
  uVar13 = param_3[iVar12];
  if ((int)param_5 < 0) {
    uVar4 = uVar13 < param_5 ^ 1;
    *param_2 = uVar4;
    uVar10 = param_5;
    if (uVar4 == 0) {
      uVar10 = 0;
    }
    uVar13 = uVar13 - uVar10;
    if (2 < iVar12) {
      uVar10 = param_5 >> 0x10;
      if (uVar10 == 0) {
        trap(7);
      }
      uVar9 = ~param_5 / uVar10;
      uVar8 = (param_5 & 0xffff) * uVar9;
      uVar5 = ~param_5 % uVar10 << 0x10 | 0xffff;
      uVar4 = uVar9;
      if (uVar5 < uVar8) {
        uVar5 = uVar5 + param_5;
        uVar4 = uVar9 - 1;
        if ((param_5 <= uVar5) && (uVar5 < uVar8)) {
          uVar4 = uVar9 - 2;
          uVar5 = uVar5 + param_5;
        }
      }
      if (uVar10 == 0) {
        trap(7);
      }
      uVar6 = (uVar5 - uVar8) / uVar10;
      uVar9 = (param_5 & 0xffff) * uVar6;
      uVar5 = (uVar5 - uVar8) % uVar10 << 0x10 | 0xffff;
      uVar8 = param_5 + uVar5;
      uVar10 = uVar6;
      if (((uVar5 < uVar9) && (uVar10 = uVar6 - 1, param_5 <= uVar8)) && (uVar8 < uVar9)) {
        uVar10 = uVar6 - 2;
      }
      uVar13 = (*(code *)PTR_MASKEDn_pi1_0009d4a8)
                         (param_1,param_3,iVar12,uVar13,param_5,uVar4 << 0x10 | uVar10);
      return uVar13;
    }
    uVar10 = 0;
  }
  else {
    if (param_5 < 0x10000) {
      iVar11 = 9;
      if (param_5 < 0x100) {
        iVar11 = 1;
      }
    }
    else {
      iVar11 = 0x19;
      if (param_5 < 0x1000000) {
        iVar11 = 0x11;
      }
    }
    bVar1 = PTR___gmpn_clz_tab_0009d18c[param_5 >> iVar11];
    uVar10 = 0x21 - ((uint)bVar1 + iVar11);
    uVar4 = (*(code *)PTR___gmpn_lshift_0009d56c)(param_1,param_3,iVar12,uVar10);
    puVar3 = PTR_MASKEDn_pi1_0009d4a8;
    param_5 = param_5 << (uVar10 & 0x1f);
    uVar4 = uVar13 << (uVar10 & 0x1f) | uVar4;
    uVar13 = uVar13 >> (((uint)bVar1 + iVar11) - 1 & 0x1f);
    uVar5 = param_5 >> 0x10;
    uVar8 = param_5 & 0xffff;
    if (2 < iVar12) {
      if (uVar5 == 0) {
        trap(7);
      }
      uVar14 = ~param_5 / uVar5;
      uVar7 = uVar14 * uVar8;
      uVar6 = ~param_5 % uVar5 << 0x10 | 0xffff;
      uVar9 = uVar14;
      if (uVar6 < uVar7) {
        uVar6 = uVar6 + param_5;
        uVar9 = uVar14 - 1;
        if ((param_5 <= uVar6) && (uVar6 < uVar7)) {
          uVar9 = uVar14 - 2;
          uVar6 = uVar6 + param_5;
          goto LAB_0006f918;
        }
        if (uVar5 == 0) {
          trap(7);
        }
        uVar14 = (uVar6 - uVar7) / uVar5;
        uVar8 = uVar14 * uVar8;
        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;
        uVar5 = uVar14;
        if (uVar8 <= uVar6) goto LAB_0006f944;
      }
      else {
LAB_0006f918:
        if (uVar5 == 0) {
          trap(7);
        }
        uVar14 = (uVar6 - uVar7) / uVar5;
        uVar8 = uVar14 * uVar8;
        uVar6 = (uVar6 - uVar7) % uVar5 << 0x10 | 0xffff;
        uVar5 = uVar14;
        if (uVar8 <= uVar6) goto LAB_0006f944;
      }
      uVar14 = uVar5 - 1;
      if ((param_5 <= param_5 + uVar6) && (param_5 + uVar6 < uVar8)) {
        uVar14 = uVar5 - 2;
      }
LAB_0006f944:
      uVar14 = uVar9 << 0x10 | uVar14;
      lVar2 = (ulonglong)uVar13 * (ulonglong)uVar14 + CONCAT44(uVar13 + 1,uVar4);
      iVar11 = (int)((ulonglong)lVar2 >> 0x20);
      uVar4 = uVar4 - param_5 * iVar11;
      uVar5 = (uint)((uint)lVar2 < uVar4);
      uVar13 = param_5;
      if (uVar5 == 0) {
        uVar13 = 0;
      }
      uVar13 = uVar13 + uVar4;
      uVar5 = iVar11 - uVar5;
      if (param_5 <= uVar13) {
        uVar13 = uVar13 - param_5;
        uVar5 = uVar5 + 1;
      }
      *param_2 = uVar5;
      uVar13 = (*(code *)puVar3)(param_1,param_1,iVar12,uVar13,param_5,uVar14);
      return uVar13 >> (uVar10 & 0x1f);
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar7 = uVar13 / uVar5;
    uVar6 = uVar7 * uVar8;
    uVar13 = uVar13 % uVar5 << 0x10 | uVar4 >> 0x10;
    uVar9 = uVar7;
    if (uVar13 < uVar6) {
      uVar13 = uVar13 + param_5;
      uVar9 = uVar7 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar6)) {
        uVar9 = uVar7 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
    if (uVar5 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar6) / uVar5;
    uVar8 = uVar7 * uVar8;
    uVar13 = (uVar13 - uVar6) % uVar5 << 0x10 | uVar4 & 0xffff;
    uVar4 = uVar7;
    if (uVar13 < uVar8) {
      uVar13 = uVar13 + param_5;
      uVar4 = uVar7 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
        uVar4 = uVar7 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
    uVar13 = uVar13 - uVar8;
    *param_2 = uVar9 << 0x10 | uVar4;
    param_3 = param_1;
  }
  uVar4 = param_5 >> 0x10;
  if (iVar12 < 1) goto LAB_0006fbac;
  if (uVar4 == 0) {
    trap(7);
  }
  uVar7 = uVar13 / uVar4;
  uVar6 = param_5 & 0xffff;
  uVar9 = param_3[param_4 + -2];
  uVar8 = uVar7 * uVar6;
  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;
  uVar5 = uVar7;
  if (uVar13 < uVar8) {
    uVar13 = uVar13 + param_5;
    uVar5 = uVar7 - 1;
    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
      uVar5 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
      goto LAB_0006fa84;
    }
    if (uVar4 == 0) {
      trap(7);
    }
    uVar14 = (uVar13 - uVar8) / uVar4;
    uVar7 = uVar6 * uVar14;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    uVar8 = uVar14;
    if (uVar13 < uVar7) goto LAB_0006fab8;
  }
  else {
LAB_0006fa84:
    if (uVar4 == 0) {
      trap(7);
    }
    uVar14 = (uVar13 - uVar8) / uVar4;
    uVar7 = uVar6 * uVar14;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    uVar8 = uVar14;
    if (uVar13 < uVar7) {
LAB_0006fab8:
      uVar13 = uVar13 + param_5;
      uVar14 = uVar8 - 1;
      if ((param_5 <= uVar13) && (uVar13 < uVar7)) {
        uVar14 = uVar8 - 2;
        uVar13 = uVar13 + param_5;
      }
    }
  }
  param_1[param_4 + -2] = uVar5 << 0x10 | uVar14;
  uVar13 = uVar13 - uVar7;
  if (param_4 != 3) goto LAB_0006fbac;
  if (uVar4 == 0) {
    trap(7);
  }
  uVar7 = uVar13 / uVar4;
  uVar9 = *param_3;
  uVar8 = uVar6 * uVar7;
  uVar13 = uVar9 >> 0x10 | uVar13 % uVar4 << 0x10;
  uVar5 = uVar7;
  if (uVar13 < uVar8) {
    uVar13 = uVar13 + param_5;
    uVar5 = uVar7 - 1;
    if ((param_5 <= uVar13) && (uVar13 < uVar8)) {
      uVar5 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
      goto LAB_0006fb48;
    }
    if (uVar4 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar8) / uVar4;
    uVar6 = uVar7 * uVar6;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    if (uVar13 < uVar6) goto LAB_0006fb7c;
  }
  else {
LAB_0006fb48:
    if (uVar4 == 0) {
      trap(7);
    }
    uVar7 = (uVar13 - uVar8) / uVar4;
    uVar6 = uVar7 * uVar6;
    uVar13 = uVar9 & 0xffff | (uVar13 - uVar8) % uVar4 << 0x10;
    if (uVar13 < uVar6) {
LAB_0006fb7c:
      uVar13 = uVar13 + param_5;
      if ((uVar13 < param_5) || (uVar6 <= uVar13)) {
        uVar13 = uVar13 - uVar6;
        *param_1 = uVar5 << 0x10 | uVar7 - 1;
        goto LAB_0006fbac;
      }
      uVar7 = uVar7 - 2;
      uVar13 = uVar13 + param_5;
    }
  }
  uVar13 = uVar13 - uVar6;
  *param_1 = uVar5 << 0x10 | uVar7;
LAB_0006fbac:
  return uVar13 >> (uVar10 & 0x1f);
}

