
undefined8 __moddi3(uint param_1,uint param_2,uint param_3,uint param_4)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  if ((int)param_1 < 0) {
    param_2 = -param_2;
    param_1 = -(uint)(param_2 != 0) - param_1;
    iVar6 = -1;
  }
  else {
    iVar6 = 0;
  }
  if ((int)param_3 < 0) {
    param_4 = -param_4;
    param_3 = -(uint)(param_4 != 0) - param_3;
  }
  if (param_3 == 0) {
    uVar10 = LZCOUNT(param_4);
    if (param_1 < param_4) {
      if (uVar10 != 0) {
        uVar2 = param_2 >> (-uVar10 & 0x1f);
        param_4 = param_4 << (uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);
      }
      uVar2 = param_4 >> 0x10;
      if (uVar2 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);
      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;
      if (uVar4 < uVar7) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {
          uVar4 = uVar4 + param_4;
        }
      }
      if (uVar2 == 0) {
        trap(7);
      }
      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);
      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar3) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar3;
    }
    else {
      if (param_4 == 0) {
        trap(7);
        param_4 = 1 / 0;
      }
      uVar10 = LZCOUNT(param_4);
      if (uVar10 == 0) {
        param_1 = param_1 - param_4;
        uVar4 = param_4 >> 0x10;
        uVar2 = param_4 & 0xffff;
      }
      else {
        param_4 = param_4 << (uVar10 & 0x1f);
        uVar4 = param_4 >> 0x10;
        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);
        uVar2 = param_4 & 0xffff;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);
        uVar3 = (uVar7 / uVar4) * uVar2;
        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;
        if (uVar7 < uVar3) {
          uVar7 = uVar7 + param_4;
          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {
            uVar7 = uVar7 + param_4;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;
        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;
        if (param_1 < uVar5) {
          param_1 = param_1 + param_4;
          if ((param_4 <= param_1) && (param_1 < uVar5)) {
            param_1 = param_1 + param_4;
          }
        }
        param_1 = param_1 - uVar5;
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar4) * uVar2;
      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;
      if (uVar3 < uVar7) {
        uVar3 = uVar3 + param_4;
        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {
          uVar3 = uVar3 + param_4;
        }
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;
      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar2) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar2;
    }
    param_1 = 0;
    uVar10 = uVar4 >> (uVar10 & 0x1f);
  }
  else {
    uVar10 = param_2;
    if (param_3 <= param_1) {
      uVar2 = LZCOUNT(param_3);
      if (uVar2 == 0) {
        if ((param_3 < param_1) || (param_4 <= param_2)) {
          uVar10 = param_2 - param_4;
          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);
        }
      }
      else {
        uVar7 = 0x20 - uVar2;
        uVar10 = param_1 >> (uVar7 & 0x1f);
        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);
        uVar4 = uVar3 >> 0x10;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar11 = uVar10 / uVar4;
        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);
        param_4 = param_4 << (uVar2 & 0x1f);
        uVar5 = (uVar3 & 0xffff) * uVar11;
        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;
        param_2 = param_2 << (uVar2 & 0x1f);
        uVar10 = uVar11;
        if (uVar8 < uVar5) {
          uVar8 = uVar8 + uVar3;
          uVar10 = uVar11 - 1;
          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {
            uVar10 = uVar11 - 2;
            uVar8 = uVar8 + uVar3;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar12 = (uVar8 - uVar5) / uVar4;
        uVar11 = (uVar3 & 0xffff) * uVar12;
        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;
        uVar4 = uVar12;
        if (uVar9 < uVar11) {
          uVar9 = uVar9 + uVar3;
          uVar4 = uVar12 - 1;
          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {
            uVar4 = uVar12 - 2;
            uVar9 = uVar9 + uVar3;
          }
        }
        uVar9 = uVar9 - uVar11;
        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;
        uVar4 = (uint)lVar1;
        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);
        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {
          param_4 = uVar4 - param_4;
          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);
        }
        uVar10 = param_2 - (int)lVar1;
        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);
        param_1 = uVar4 >> (uVar2 & 0x1f);
        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);
      }
    }
  }
  if (iVar6 != 0) {
    param_1 = -(uint)(-uVar10 != 0) - param_1;
    uVar10 = -uVar10;
  }
  return CONCAT44(param_1,uVar10);
}



undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  if ((int)param_1 < 0) {
    param_2 = -param_2;
    param_1 = -(uint)(param_2 != 0) - param_1;
    iVar6 = -1;
  }
  else {
    iVar6 = 0;
  }
  if ((int)param_3 < 0) {
    param_4 = -param_4;
    param_3 = -(uint)(param_4 != 0) - param_3;
  }
  if (param_3 == 0) {
    uVar10 = LZCOUNT(param_4);
    if (param_1 < param_4) {
      if (uVar10 != 0) {
        uVar2 = param_2 >> (-uVar10 & 0x1f);
        param_4 = param_4 << (uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);
      }
      uVar2 = param_4 >> 0x10;
      if (uVar2 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);
      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;
      if (uVar4 < uVar7) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {
          uVar4 = uVar4 + param_4;
        }
      }
      if (uVar2 == 0) {
        trap(7);
      }
      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);
      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar3) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar3;
    }
    else {
      if (param_4 == 0) {
        trap(7);
        param_4 = 1 / 0;
      }
      uVar10 = LZCOUNT(param_4);
      if (uVar10 == 0) {
        param_1 = param_1 - param_4;
        uVar4 = param_4 >> 0x10;
        uVar2 = param_4 & 0xffff;
      }
      else {
        param_4 = param_4 << (uVar10 & 0x1f);
        uVar4 = param_4 >> 0x10;
        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);
        uVar2 = param_4 & 0xffff;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);
        uVar3 = (uVar7 / uVar4) * uVar2;
        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;
        if (uVar7 < uVar3) {
          uVar7 = uVar7 + param_4;
          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {
            uVar7 = uVar7 + param_4;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;
        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;
        if (param_1 < uVar5) {
          param_1 = param_1 + param_4;
          if ((param_4 <= param_1) && (param_1 < uVar5)) {
            param_1 = param_1 + param_4;
          }
        }
        param_1 = param_1 - uVar5;
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar4) * uVar2;
      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;
      if (uVar3 < uVar7) {
        uVar3 = uVar3 + param_4;
        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {
          uVar3 = uVar3 + param_4;
        }
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;
      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar2) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar2;
    }
    param_1 = 0;
    uVar10 = uVar4 >> (uVar10 & 0x1f);
  }
  else {
    uVar10 = param_2;
    if (param_3 <= param_1) {
      uVar2 = LZCOUNT(param_3);
      if (uVar2 == 0) {
        if ((param_3 < param_1) || (param_4 <= param_2)) {
          uVar10 = param_2 - param_4;
          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);
        }
      }
      else {
        uVar7 = 0x20 - uVar2;
        uVar10 = param_1 >> (uVar7 & 0x1f);
        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);
        uVar4 = uVar3 >> 0x10;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar11 = uVar10 / uVar4;
        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);
        param_4 = param_4 << (uVar2 & 0x1f);
        uVar5 = (uVar3 & 0xffff) * uVar11;
        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;
        param_2 = param_2 << (uVar2 & 0x1f);
        uVar10 = uVar11;
        if (uVar8 < uVar5) {
          uVar8 = uVar8 + uVar3;
          uVar10 = uVar11 - 1;
          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {
            uVar10 = uVar11 - 2;
            uVar8 = uVar8 + uVar3;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar12 = (uVar8 - uVar5) / uVar4;
        uVar11 = (uVar3 & 0xffff) * uVar12;
        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;
        uVar4 = uVar12;
        if (uVar9 < uVar11) {
          uVar9 = uVar9 + uVar3;
          uVar4 = uVar12 - 1;
          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {
            uVar4 = uVar12 - 2;
            uVar9 = uVar9 + uVar3;
          }
        }
        uVar9 = uVar9 - uVar11;
        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;
        uVar4 = (uint)lVar1;
        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);
        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {
          param_4 = uVar4 - param_4;
          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);
        }
        uVar10 = param_2 - (int)lVar1;
        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);
        param_1 = uVar4 >> (uVar2 & 0x1f);
        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);
      }
    }
  }
  if (iVar6 != 0) {
    param_1 = -(uint)(-uVar10 != 0) - param_1;
    uVar10 = -uVar10;
  }
  return CONCAT44(param_1,uVar10);
}


bltz a0,0x0001f2a8
_nop
or t1,zero,zero
bgez a2,0x0001f098
_or t0,a3,zero
subu a3,zero,a3
subu a2,zero,a2
sltu v0,zero,a3
subu a2,a2,v0
or t0,a3,zero
or t4,a1,zero
bne a2,zero,0x0001f260
_or t2,a0,zero
sltu v0,a0,a3
beq v0,zero,0x0001f198
_clz t3,a3
beq t3,zero,0x0001f0d4
_srl v0,t0,0x10
subu v0,zero,t3
sllv a2,a0,t3
srlv t2,a1,v0
sllv t0,a3,t3
sllv t4,a1,t3
or t2,t2,a2
srl v0,t0,0x10
andi a1,t0,0xffff
teq v0,zero
divu t2,v0
srl a0,t4,0x10
mflo t2
mfhi a2
mul t2,t2,a1
sll a2,a2,0x10
or a0,a2,a0
sltu v1,a0,t2
beq v1,zero,0x0001f120
_nop
addu a0,a0,t0
sltu v1,a0,t0
bne v1,zero,0x0001f120
_sltu v1,a0,t2
beq v1,zero,0x0001f120
_nop
addu a0,a0,t0
subu a0,a0,t2
andi t4,t4,0xffff
teq v0,zero
divu a0,v0
mflo v1
mfhi a0
mul v1,v1,a1
sll a0,a0,0x10
or a0,a0,t4
sltu v0,a0,v1
beq v0,zero,0x0001f16c
_nop
addu a0,a0,t0
sltu v0,a0,t0
bne v0,zero,0x0001f16c
_sltu v0,a0,v1
beq v0,zero,0x0001f16c
_nop
addu a0,a0,t0
subu v1,a0,v1
or v0,zero,zero
srlv v1,v1,t3
beq t1,zero,0x0001f190
_subu a1,zero,v1
subu a0,zero,v0
sltu v0,zero,a1
subu v0,a0,v0
or v1,a1,zero
jr ra
_nop
bne a3,zero,0x0001f1b4
_clz t3,t0
li t0,0x1
teq a2,zero
divu t0,a2
mflo t0
clz t3,t0
bne t3,zero,0x0001f3e4
_li t2,0x20
subu a3,a0,t0
srl v1,t0,0x10
andi v0,t0,0xffff
teq v1,zero
divu a3,v1
srl a2,t4,0x10
mflo a0
mfhi a3
mul a1,a0,v0
sll a3,a3,0x10
or a2,a3,a2
sltu a0,a2,a1
beq a0,zero,0x0001f20c
_nop
addu a2,a2,t0
sltu a0,a2,t0
bne a0,zero,0x0001f20c
_sltu a0,a2,a1
bne a0,zero,0x0001f4d0
_nop
subu a2,a2,a1
andi t4,t4,0xffff
teq v1,zero
divu a2,v1
mflo v1
mfhi a2
mul v1,v1,v0
sll v0,a2,0x10
or v0,v0,t4
sltu a0,v0,v1
beq a0,zero,0x0001f258
_nop
addu v0,v0,t0
sltu a0,v0,t0
bne a0,zero,0x0001f258
_sltu a0,v0,v1
beq a0,zero,0x0001f258
_nop
addu v0,v0,t0
b 0x0001f170
_subu v1,v0,v1
sltu v0,a0,a2
bne v0,zero,0x0001f2a0
_or v1,a1,zero
clz v0,a2
bne v0,zero,0x0001f2c0
_li t4,0x20
sltu v0,a2,a0
bne v0,zero,0x0001f290
_nop
sltu v0,a1,a3
bne v0,zero,0x0001f2a0
_nop
subu v1,a1,a3
subu a0,a0,a2
sltu a1,a1,v1
subu a0,a0,a1
b 0x0001f178
_or v0,a0,zero
subu a1,zero,a1
subu a0,zero,a0
sltu v1,zero,a1
subu a0,a0,v1
b 0x0001f07c
_li t1,-0x1
sllv a2,a2,v0
subu t4,t4,v0
sllv t0,a0,v0
srlv t5,a3,t4
srlv a0,a0,t4
or t5,t5,a2
srl a2,t5,0x10
srlv v1,a1,t4
teq a2,zero
divu a0,a2
andi t6,t5,0xffff
or v1,v1,t0
srl t2,v1,0x10
sllv a3,a3,v0
mflo a0
mfhi t3
mul t0,t6,a0
sll t3,t3,0x10
or t2,t3,t2
sltu t3,t2,t0
beq t3,zero,0x0001f33c
_sllv a1,a1,v0
addu t2,t2,t5
sltu t3,t2,t5
bne t3,zero,0x0001f4c8
_addiu t7,a0,-0x1
sltu t3,t2,t0
beq t3,zero,0x0001f4c8
_nop
addiu a0,a0,-0x2
addu t2,t2,t5
subu t0,t2,t0
andi v1,v1,0xffff
teq a2,zero
divu t0,a2
mflo a2
mfhi t0
mul t2,t6,a2
sll t0,t0,0x10
or t0,t0,v1
sltu v1,t0,t2
beq v1,zero,0x0001f390
_nop
addu t0,t0,t5
sltu v1,t0,t5
bne v1,zero,0x0001f4c0
_addiu t3,a2,-0x1
sltu v1,t0,t2
beq v1,zero,0x0001f4c0
_nop
addiu a2,a2,-0x2
addu t0,t0,t5
sll a0,a0,0x10
subu t0,t0,t2
or a2,a0,a2
multu a2,a3
mfhi t2
mflo t3
mflo v1
sltu a2,t0,t2
bne a2,zero,0x0001f4ac
_or a0,t2,zero
beq t0,t2,0x0001f4a4
_sltu a2,a1,t3
subu v1,a1,v1
subu t0,t0,a0
sltu a1,a1,v1
subu a0,t0,a1
srlv v1,v1,v0
sllv a1,a0,t4
srlv v0,a0,v0
b 0x0001f178
_or v1,a1,v1
sllv t0,t0,t3
subu t2,t2,t3
srl v1,t0,0x10
srlv a2,a0,t2
andi v0,t0,0xffff
teq v1,zero
divu a2,v1
sllv a0,a0,t3
srlv t2,a1,t2
sllv t4,a1,t3
or t2,t2,a0
srl a1,t2,0x10
mflo a3
mfhi a2
mul a3,a3,v0
sll a2,a2,0x10
or a1,a2,a1
sltu a0,a1,a3
beq a0,zero,0x0001f450
_nop
addu a1,a1,t0
sltu a0,a1,t0
bne a0,zero,0x0001f450
_sltu a0,a1,a3
beq a0,zero,0x0001f450
_nop
addu a1,a1,t0
subu a3,a1,a3
andi t2,t2,0xffff
teq v1,zero
divu a3,v1
mflo a0
mfhi a3
mul a0,a0,v0
sll a3,a3,0x10
or a3,a3,t2
sltu a1,a3,a0
beq a1,zero,0x0001f49c
_nop
addu a3,a3,t0
sltu a1,a3,t0
bne a1,zero,0x0001f49c
_sltu a1,a3,a0
beq a1,zero,0x0001f49c
_nop
addu a3,a3,t0
b 0x0001f1c8
_subu a3,a3,a0
beq a2,zero,0x0001f3c0
_nop
subu v1,t3,a3
subu a2,t2,t5
sltu a0,t3,v1
b 0x0001f3c0
_subu a0,a2,a0
b 0x0001f390
_or a2,t3,zero
b 0x0001f33c
_or a0,t7,zero
b 0x0001f20c
_addu a2,a2,t0
(translation_unit "undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}\n\n" (function_definition "undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" type_identifier (function_declarator "FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type 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 "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }" { (expression_statement "param_2 = -param_2;" (assignment_expression "param_2 = -param_2" identifier = (unary_expression "-param_2" - identifier)) ;) (expression_statement "param_1 = -(uint)(param_2 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(param_2 != 0) - param_1" identifier = (binary_expression "-(uint)(param_2 != 0) - param_1" (unary_expression "-(uint)(param_2 != 0)" - (call_expression "(uint)(param_2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )))) - identifier)) ;) (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar6 = 0;\n  }" else (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (if_statement "if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" { (expression_statement "param_4 = -param_4;" (assignment_expression "param_4 = -param_4" identifier = (unary_expression "-param_4" - identifier)) ;) (expression_statement "param_3 = -(uint)(param_4 != 0) - param_3;" (assignment_expression "param_3 = -(uint)(param_4 != 0) - param_3" identifier = (binary_expression "-(uint)(param_4 != 0) - param_3" (unary_expression "-(uint)(param_4 != 0)" - (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )))) - identifier)) ;) })) (if_statement "if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }" { (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" if (parenthesized_expression "(param_1 < param_4)" ( (binary_expression "param_1 < param_4" identifier < identifier) )) (compound_statement "{\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }" { (if_statement "if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" { (expression_statement "uVar2 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar2 = param_2 >> (-uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (-uVar10 & 0x1f)" identifier >> (parenthesized_expression "(-uVar10 & 0x1f)" ( (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" - identifier) & number_literal) )))) ;) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_1 = uVar2 | param_1 << (uVar10 & 0x1f);" (assignment_expression "param_1 = uVar2 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar2 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "uVar2 = param_4 >> 0x10;" (assignment_expression "uVar2 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 = (param_1 / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar7 = (param_1 / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "(param_1 / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "(param_1 / uVar2)" ( (binary_expression "param_1 / uVar2" identifier / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar2 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar2 << 0x10" (binary_expression "param_1 % uVar2" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar7))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar7)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "((uVar4 - uVar7) / uVar2)" ( (binary_expression "(uVar4 - uVar7) / uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10" (binary_expression "(uVar4 - uVar7) % uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar3))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar3)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar3;" (assignment_expression "uVar4 = uVar4 - uVar3" identifier = (binary_expression "uVar4 - uVar3" identifier - identifier)) ;) }) (else_clause "else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" else (compound_statement "{\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" { (if_statement "if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n        param_4 = 1 / 0;\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }" { (expression_statement "param_1 = param_1 - param_4;" (assignment_expression "param_1 = param_1 - param_4" identifier = (binary_expression "param_1 - param_4" identifier - identifier)) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" else (compound_statement "{\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" { (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_1 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) (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 "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar9 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar3 = (uVar7 / uVar4) * uVar2;" (assignment_expression "uVar3 = (uVar7 / uVar4) * uVar2" identifier = (binary_expression "(uVar7 / uVar4) * uVar2" (parenthesized_expression "(uVar7 / uVar4)" ( (binary_expression "uVar7 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar7 % uVar4 << 0x10" (binary_expression "uVar7 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }" if (parenthesized_expression "((param_4 <= uVar7) && (uVar7 < uVar3))" ( (binary_expression "(param_4 <= uVar7) && (uVar7 < uVar3)" (parenthesized_expression "(param_4 <= uVar7)" ( (binary_expression "param_4 <= uVar7" identifier <= identifier) )) && (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n            uVar7 = uVar7 + param_4;\n          }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + 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 "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;" (assignment_expression "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2" identifier = (binary_expression "((uVar7 - uVar3) / uVar4) * uVar2" (parenthesized_expression "((uVar7 - uVar3) / uVar4)" ( (binary_expression "(uVar7 - uVar3) / uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10" (binary_expression "(uVar7 - uVar3) % uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (if_statement "if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" if (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) )) (compound_statement "{\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }" if (parenthesized_expression "((param_4 <= param_1) && (param_1 < uVar5))" ( (binary_expression "(param_4 <= param_1) && (param_1 < uVar5)" (parenthesized_expression "(param_4 <= param_1)" ( (binary_expression "param_4 <= param_1" identifier <= identifier) )) && (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            param_1 = param_1 + param_4;\n          }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) })) })) (expression_statement "param_1 = param_1 - uVar5;" (assignment_expression "param_1 = param_1 - uVar5" identifier = (binary_expression "param_1 - uVar5" identifier - 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 = (param_1 / uVar4) * uVar2;" (assignment_expression "uVar7 = (param_1 / uVar4) * uVar2" identifier = (binary_expression "(param_1 / uVar4) * uVar2" (parenthesized_expression "(param_1 / uVar4)" ( (binary_expression "param_1 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar4 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar4 << 0x10" (binary_expression "param_1 % uVar4" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar3) && (uVar3 < uVar7))" ( (binary_expression "(param_4 <= uVar3) && (uVar3 < uVar7)" (parenthesized_expression "(param_4 <= uVar3)" ( (binary_expression "param_4 <= uVar3" identifier <= identifier) )) && (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar3 = uVar3 + param_4;\n        }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + 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 "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;" (assignment_expression "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2" identifier = (binary_expression "((uVar3 - uVar7) / uVar4) * uVar2" (parenthesized_expression "((uVar3 - uVar7) / uVar4)" ( (binary_expression "(uVar3 - uVar7) / uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10" (binary_expression "(uVar3 - uVar7) % uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar2))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar2)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar2;" (assignment_expression "uVar4 = uVar4 - uVar2" identifier = (binary_expression "uVar4 - uVar2" identifier - identifier)) ;) }))) (expression_statement "param_1 = 0;" (assignment_expression "param_1 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar4 >> (uVar10 & 0x1f);" (assignment_expression "uVar10 = uVar4 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) }) (else_clause "else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" else (compound_statement "{\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" { (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" identifier = identifier) ;) (if_statement "if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" if (parenthesized_expression "(param_3 <= param_1)" ( (binary_expression "param_3 <= param_1" identifier <= identifier) )) (compound_statement "{\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" { (expression_statement "uVar2 = LZCOUNT(param_3);" (assignment_expression "uVar2 = LZCOUNT(param_3)" identifier = (call_expression "LZCOUNT(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }" { (if_statement "if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" if (parenthesized_expression "((param_3 < param_1) || (param_4 <= param_2))" ( (binary_expression "(param_3 < param_1) || (param_4 <= param_2)" (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) || (parenthesized_expression "(param_4 <= param_2)" ( (binary_expression "param_4 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" { (expression_statement "uVar10 = param_2 - param_4;" (assignment_expression "uVar10 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < uVar10)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) })) }) (else_clause "else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" else (compound_statement "{\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" { (expression_statement "uVar7 = 0x20 - uVar2;" (assignment_expression "uVar7 = 0x20 - uVar2" identifier = (binary_expression "0x20 - uVar2" number_literal - identifier)) ;) (expression_statement "uVar10 = param_1 >> (uVar7 & 0x1f);" (assignment_expression "uVar10 = param_1 >> (uVar7 & 0x1f)" identifier = (binary_expression "param_1 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);" (assignment_expression "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" (binary_expression "param_4 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_3 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = uVar3 >> 0x10;" (assignment_expression "uVar4 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) (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 "uVar11 = uVar10 / uVar4;" (assignment_expression "uVar11 = uVar10 / uVar4" identifier = (binary_expression "uVar10 / uVar4" identifier / identifier)) ;) (expression_statement "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" (binary_expression "param_2 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_1 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "param_4 = param_4 << (uVar2 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = (uVar3 & 0xffff) * uVar11;" (assignment_expression "uVar5 = (uVar3 & 0xffff) * uVar11" identifier = (binary_expression "(uVar3 & 0xffff) * uVar11" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar10 % uVar4 << 0x10" (binary_expression "uVar10 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (expression_statement "param_2 = param_2 << (uVar2 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) )) (compound_statement "{\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" { (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + identifier)) ;) (expression_statement "uVar10 = uVar11 - 1;" (assignment_expression "uVar10 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar8) && (uVar8 < uVar5))" ( (binary_expression "(uVar3 <= uVar8) && (uVar8 < uVar5)" (parenthesized_expression "(uVar3 <= uVar8)" ( (binary_expression "uVar3 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" { (expression_statement "uVar10 = uVar11 - 2;" (assignment_expression "uVar10 = uVar11 - 2" identifier = (binary_expression "uVar11 - 2" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + 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 "uVar12 = (uVar8 - uVar5) / uVar4;" (assignment_expression "uVar12 = (uVar8 - uVar5) / uVar4" identifier = (binary_expression "(uVar8 - uVar5) / uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar11 = (uVar3 & 0xffff) * uVar12;" (assignment_expression "uVar11 = (uVar3 & 0xffff) * uVar12" identifier = (binary_expression "(uVar3 & 0xffff) * uVar12" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10" (binary_expression "(uVar8 - uVar5) % uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" { (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12 - 1;" (assignment_expression "uVar4 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar9) && (uVar9 < uVar11))" ( (binary_expression "(uVar3 <= uVar9) && (uVar9 < uVar11)" (parenthesized_expression "(uVar3 <= uVar9)" ( (binary_expression "uVar3 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" { (expression_statement "uVar4 = uVar12 - 2;" (assignment_expression "uVar4 = uVar12 - 2" identifier = (binary_expression "uVar12 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) })) })) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" identifier = (binary_expression "uVar9 - uVar11" identifier - identifier)) ;) (expression_statement "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;" (assignment_expression "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" identifier = (binary_expression "(ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" (call_expression "(ulonglong)(uVar10 << 0x10 | uVar4)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar10 << 0x10 | uVar4)" ( (binary_expression "uVar10 << 0x10 | uVar4" (binary_expression "uVar10 << 0x10" identifier << number_literal) | identifier) ))) * (cast_expression "(ulonglong)param_4" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)lVar1;" (assignment_expression "uVar4 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar10 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" if (parenthesized_expression "((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4))))" ( (binary_expression "(uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))" (parenthesized_expression "(uVar9 < uVar10)" ( (binary_expression "uVar9 < uVar10" identifier < identifier) )) || (parenthesized_expression "((uVar9 == uVar10 && (param_2 < uVar4)))" ( (parenthesized_expression "(uVar9 == uVar10 && (param_2 < uVar4))" ( (binary_expression "uVar9 == uVar10 && (param_2 < uVar4)" (binary_expression "uVar9 == uVar10" identifier == identifier) && (parenthesized_expression "(param_2 < uVar4)" ( (binary_expression "param_2 < uVar4" identifier < identifier) ))) )) ))) )) (compound_statement "{\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" { (expression_statement "param_4 = uVar4 - param_4;" (assignment_expression "param_4 = uVar4 - param_4" identifier = (binary_expression "uVar4 - param_4" identifier - identifier)) ;) (expression_statement "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);" (assignment_expression "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier = (call_expression "CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier (argument_list "((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" ( (binary_expression "(uVar10 - uVar3) - (uint)(uVar4 < param_4)" (parenthesized_expression "(uVar10 - uVar3)" ( (binary_expression "uVar10 - uVar3" identifier - identifier) )) - (call_expression "(uint)(uVar4 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < param_4)" ( (binary_expression "uVar4 < param_4" identifier < identifier) )))) , identifier )))) ;) })) (expression_statement "uVar10 = param_2 - (int)lVar1;" (assignment_expression "uVar10 = param_2 - (int)lVar1" identifier = (binary_expression "param_2 - (int)lVar1" identifier - (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);" (assignment_expression "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" (parenthesized_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20))" ( (binary_expression "uVar9 - (int)((ulonglong)lVar1 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) (expression_statement "param_1 = uVar4 >> (uVar2 & 0x1f);" (assignment_expression "param_1 = uVar4 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);" (assignment_expression "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" (binary_expression "uVar4 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar10 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) }))) })) }))) (if_statement "if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" { (expression_statement "param_1 = -(uint)(-uVar10 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(-uVar10 != 0) - param_1" identifier = (binary_expression "-(uint)(-uVar10 != 0) - param_1" (unary_expression "-(uint)(-uVar10 != 0)" - (call_expression "(uint)(-uVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar10 != 0)" ( (binary_expression "-uVar10 != 0" (unary_expression "-uVar10" - identifier) != number_literal) )))) - identifier)) ;) (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (return_statement "return CONCAT44(param_1,uVar10);" return (call_expression "CONCAT44(param_1,uVar10)" identifier (argument_list "(param_1,uVar10)" ( identifier , identifier ))) ;) })))
(translation_unit "undefined8 __moddi3(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}\n\n" (function_definition "undefined8 __moddi3(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" type_identifier (function_declarator "__moddi3(uint param_1,uint param_2,uint param_3,uint param_4)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type 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 "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }" { (expression_statement "param_2 = -param_2;" (assignment_expression "param_2 = -param_2" identifier = (unary_expression "-param_2" - identifier)) ;) (expression_statement "param_1 = -(uint)(param_2 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(param_2 != 0) - param_1" identifier = (binary_expression "-(uint)(param_2 != 0) - param_1" (unary_expression "-(uint)(param_2 != 0)" - (call_expression "(uint)(param_2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )))) - identifier)) ;) (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar6 = 0;\n  }" else (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (if_statement "if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" { (expression_statement "param_4 = -param_4;" (assignment_expression "param_4 = -param_4" identifier = (unary_expression "-param_4" - identifier)) ;) (expression_statement "param_3 = -(uint)(param_4 != 0) - param_3;" (assignment_expression "param_3 = -(uint)(param_4 != 0) - param_3" identifier = (binary_expression "-(uint)(param_4 != 0) - param_3" (unary_expression "-(uint)(param_4 != 0)" - (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )))) - identifier)) ;) })) (if_statement "if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }" { (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" if (parenthesized_expression "(param_1 < param_4)" ( (binary_expression "param_1 < param_4" identifier < identifier) )) (compound_statement "{\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }" { (if_statement "if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" { (expression_statement "uVar2 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar2 = param_2 >> (-uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (-uVar10 & 0x1f)" identifier >> (parenthesized_expression "(-uVar10 & 0x1f)" ( (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" - identifier) & number_literal) )))) ;) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_1 = uVar2 | param_1 << (uVar10 & 0x1f);" (assignment_expression "param_1 = uVar2 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar2 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "uVar2 = param_4 >> 0x10;" (assignment_expression "uVar2 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 = (param_1 / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar7 = (param_1 / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "(param_1 / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "(param_1 / uVar2)" ( (binary_expression "param_1 / uVar2" identifier / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar2 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar2 << 0x10" (binary_expression "param_1 % uVar2" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar7))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar7)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "((uVar4 - uVar7) / uVar2)" ( (binary_expression "(uVar4 - uVar7) / uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10" (binary_expression "(uVar4 - uVar7) % uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar3))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar3)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar3;" (assignment_expression "uVar4 = uVar4 - uVar3" identifier = (binary_expression "uVar4 - uVar3" identifier - identifier)) ;) }) (else_clause "else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" else (compound_statement "{\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" { (if_statement "if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n        param_4 = 1 / 0;\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }" { (expression_statement "param_1 = param_1 - param_4;" (assignment_expression "param_1 = param_1 - param_4" identifier = (binary_expression "param_1 - param_4" identifier - identifier)) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" else (compound_statement "{\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" { (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_1 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) (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 "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar9 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar3 = (uVar7 / uVar4) * uVar2;" (assignment_expression "uVar3 = (uVar7 / uVar4) * uVar2" identifier = (binary_expression "(uVar7 / uVar4) * uVar2" (parenthesized_expression "(uVar7 / uVar4)" ( (binary_expression "uVar7 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar7 % uVar4 << 0x10" (binary_expression "uVar7 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }" if (parenthesized_expression "((param_4 <= uVar7) && (uVar7 < uVar3))" ( (binary_expression "(param_4 <= uVar7) && (uVar7 < uVar3)" (parenthesized_expression "(param_4 <= uVar7)" ( (binary_expression "param_4 <= uVar7" identifier <= identifier) )) && (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n            uVar7 = uVar7 + param_4;\n          }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + 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 "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;" (assignment_expression "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2" identifier = (binary_expression "((uVar7 - uVar3) / uVar4) * uVar2" (parenthesized_expression "((uVar7 - uVar3) / uVar4)" ( (binary_expression "(uVar7 - uVar3) / uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10" (binary_expression "(uVar7 - uVar3) % uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (if_statement "if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" if (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) )) (compound_statement "{\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }" if (parenthesized_expression "((param_4 <= param_1) && (param_1 < uVar5))" ( (binary_expression "(param_4 <= param_1) && (param_1 < uVar5)" (parenthesized_expression "(param_4 <= param_1)" ( (binary_expression "param_4 <= param_1" identifier <= identifier) )) && (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            param_1 = param_1 + param_4;\n          }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) })) })) (expression_statement "param_1 = param_1 - uVar5;" (assignment_expression "param_1 = param_1 - uVar5" identifier = (binary_expression "param_1 - uVar5" identifier - 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 = (param_1 / uVar4) * uVar2;" (assignment_expression "uVar7 = (param_1 / uVar4) * uVar2" identifier = (binary_expression "(param_1 / uVar4) * uVar2" (parenthesized_expression "(param_1 / uVar4)" ( (binary_expression "param_1 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar4 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar4 << 0x10" (binary_expression "param_1 % uVar4" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar3) && (uVar3 < uVar7))" ( (binary_expression "(param_4 <= uVar3) && (uVar3 < uVar7)" (parenthesized_expression "(param_4 <= uVar3)" ( (binary_expression "param_4 <= uVar3" identifier <= identifier) )) && (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar3 = uVar3 + param_4;\n        }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + 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 "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;" (assignment_expression "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2" identifier = (binary_expression "((uVar3 - uVar7) / uVar4) * uVar2" (parenthesized_expression "((uVar3 - uVar7) / uVar4)" ( (binary_expression "(uVar3 - uVar7) / uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10" (binary_expression "(uVar3 - uVar7) % uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar2))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar2)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar2;" (assignment_expression "uVar4 = uVar4 - uVar2" identifier = (binary_expression "uVar4 - uVar2" identifier - identifier)) ;) }))) (expression_statement "param_1 = 0;" (assignment_expression "param_1 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar4 >> (uVar10 & 0x1f);" (assignment_expression "uVar10 = uVar4 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) }) (else_clause "else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" else (compound_statement "{\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" { (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" identifier = identifier) ;) (if_statement "if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" if (parenthesized_expression "(param_3 <= param_1)" ( (binary_expression "param_3 <= param_1" identifier <= identifier) )) (compound_statement "{\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" { (expression_statement "uVar2 = LZCOUNT(param_3);" (assignment_expression "uVar2 = LZCOUNT(param_3)" identifier = (call_expression "LZCOUNT(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }" { (if_statement "if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" if (parenthesized_expression "((param_3 < param_1) || (param_4 <= param_2))" ( (binary_expression "(param_3 < param_1) || (param_4 <= param_2)" (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) || (parenthesized_expression "(param_4 <= param_2)" ( (binary_expression "param_4 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" { (expression_statement "uVar10 = param_2 - param_4;" (assignment_expression "uVar10 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < uVar10)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) })) }) (else_clause "else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" else (compound_statement "{\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" { (expression_statement "uVar7 = 0x20 - uVar2;" (assignment_expression "uVar7 = 0x20 - uVar2" identifier = (binary_expression "0x20 - uVar2" number_literal - identifier)) ;) (expression_statement "uVar10 = param_1 >> (uVar7 & 0x1f);" (assignment_expression "uVar10 = param_1 >> (uVar7 & 0x1f)" identifier = (binary_expression "param_1 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);" (assignment_expression "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" (binary_expression "param_4 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_3 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = uVar3 >> 0x10;" (assignment_expression "uVar4 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) (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 "uVar11 = uVar10 / uVar4;" (assignment_expression "uVar11 = uVar10 / uVar4" identifier = (binary_expression "uVar10 / uVar4" identifier / identifier)) ;) (expression_statement "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" (binary_expression "param_2 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_1 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "param_4 = param_4 << (uVar2 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = (uVar3 & 0xffff) * uVar11;" (assignment_expression "uVar5 = (uVar3 & 0xffff) * uVar11" identifier = (binary_expression "(uVar3 & 0xffff) * uVar11" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar10 % uVar4 << 0x10" (binary_expression "uVar10 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (expression_statement "param_2 = param_2 << (uVar2 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) )) (compound_statement "{\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" { (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + identifier)) ;) (expression_statement "uVar10 = uVar11 - 1;" (assignment_expression "uVar10 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar8) && (uVar8 < uVar5))" ( (binary_expression "(uVar3 <= uVar8) && (uVar8 < uVar5)" (parenthesized_expression "(uVar3 <= uVar8)" ( (binary_expression "uVar3 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" { (expression_statement "uVar10 = uVar11 - 2;" (assignment_expression "uVar10 = uVar11 - 2" identifier = (binary_expression "uVar11 - 2" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + 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 "uVar12 = (uVar8 - uVar5) / uVar4;" (assignment_expression "uVar12 = (uVar8 - uVar5) / uVar4" identifier = (binary_expression "(uVar8 - uVar5) / uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar11 = (uVar3 & 0xffff) * uVar12;" (assignment_expression "uVar11 = (uVar3 & 0xffff) * uVar12" identifier = (binary_expression "(uVar3 & 0xffff) * uVar12" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10" (binary_expression "(uVar8 - uVar5) % uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" { (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12 - 1;" (assignment_expression "uVar4 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar9) && (uVar9 < uVar11))" ( (binary_expression "(uVar3 <= uVar9) && (uVar9 < uVar11)" (parenthesized_expression "(uVar3 <= uVar9)" ( (binary_expression "uVar3 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" { (expression_statement "uVar4 = uVar12 - 2;" (assignment_expression "uVar4 = uVar12 - 2" identifier = (binary_expression "uVar12 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) })) })) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" identifier = (binary_expression "uVar9 - uVar11" identifier - identifier)) ;) (expression_statement "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;" (assignment_expression "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" identifier = (binary_expression "(ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" (call_expression "(ulonglong)(uVar10 << 0x10 | uVar4)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar10 << 0x10 | uVar4)" ( (binary_expression "uVar10 << 0x10 | uVar4" (binary_expression "uVar10 << 0x10" identifier << number_literal) | identifier) ))) * (cast_expression "(ulonglong)param_4" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)lVar1;" (assignment_expression "uVar4 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar10 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" if (parenthesized_expression "((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4))))" ( (binary_expression "(uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))" (parenthesized_expression "(uVar9 < uVar10)" ( (binary_expression "uVar9 < uVar10" identifier < identifier) )) || (parenthesized_expression "((uVar9 == uVar10 && (param_2 < uVar4)))" ( (parenthesized_expression "(uVar9 == uVar10 && (param_2 < uVar4))" ( (binary_expression "uVar9 == uVar10 && (param_2 < uVar4)" (binary_expression "uVar9 == uVar10" identifier == identifier) && (parenthesized_expression "(param_2 < uVar4)" ( (binary_expression "param_2 < uVar4" identifier < identifier) ))) )) ))) )) (compound_statement "{\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" { (expression_statement "param_4 = uVar4 - param_4;" (assignment_expression "param_4 = uVar4 - param_4" identifier = (binary_expression "uVar4 - param_4" identifier - identifier)) ;) (expression_statement "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);" (assignment_expression "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier = (call_expression "CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier (argument_list "((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" ( (binary_expression "(uVar10 - uVar3) - (uint)(uVar4 < param_4)" (parenthesized_expression "(uVar10 - uVar3)" ( (binary_expression "uVar10 - uVar3" identifier - identifier) )) - (call_expression "(uint)(uVar4 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < param_4)" ( (binary_expression "uVar4 < param_4" identifier < identifier) )))) , identifier )))) ;) })) (expression_statement "uVar10 = param_2 - (int)lVar1;" (assignment_expression "uVar10 = param_2 - (int)lVar1" identifier = (binary_expression "param_2 - (int)lVar1" identifier - (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);" (assignment_expression "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" (parenthesized_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20))" ( (binary_expression "uVar9 - (int)((ulonglong)lVar1 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) (expression_statement "param_1 = uVar4 >> (uVar2 & 0x1f);" (assignment_expression "param_1 = uVar4 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);" (assignment_expression "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" (binary_expression "uVar4 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar10 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) }))) })) }))) (if_statement "if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" { (expression_statement "param_1 = -(uint)(-uVar10 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(-uVar10 != 0) - param_1" identifier = (binary_expression "-(uint)(-uVar10 != 0) - param_1" (unary_expression "-(uint)(-uVar10 != 0)" - (call_expression "(uint)(-uVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar10 != 0)" ( (binary_expression "-uVar10 != 0" (unary_expression "-uVar10" - identifier) != number_literal) )))) - identifier)) ;) (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (return_statement "return CONCAT44(param_1,uVar10);" return (call_expression "CONCAT44(param_1,uVar10)" identifier (argument_list "(param_1,uVar10)" ( identifier , identifier ))) ;) })))
(translation_unit "undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}\n\n" (function_definition "undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" type_identifier (function_declarator "FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type 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 "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }" { (expression_statement "param_2 = -param_2;" (assignment_expression "param_2 = -param_2" identifier = (unary_expression "-param_2" - identifier)) ;) (expression_statement "param_1 = -(uint)(param_2 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(param_2 != 0) - param_1" identifier = (binary_expression "-(uint)(param_2 != 0) - param_1" (unary_expression "-(uint)(param_2 != 0)" - (call_expression "(uint)(param_2 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )))) - identifier)) ;) (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    iVar6 = 0;\n  }" else (compound_statement "{\n    iVar6 = 0;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) }))) (if_statement "if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" if (parenthesized_expression "((int)param_3 < 0)" ( (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" { (expression_statement "param_4 = -param_4;" (assignment_expression "param_4 = -param_4" identifier = (unary_expression "-param_4" - identifier)) ;) (expression_statement "param_3 = -(uint)(param_4 != 0) - param_3;" (assignment_expression "param_3 = -(uint)(param_4 != 0) - param_3" identifier = (binary_expression "-(uint)(param_4 != 0) - param_3" (unary_expression "-(uint)(param_4 != 0)" - (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )))) - identifier)) ;) })) (if_statement "if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }" { (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" if (parenthesized_expression "(param_1 < param_4)" ( (binary_expression "param_1 < param_4" identifier < identifier) )) (compound_statement "{\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }" { (if_statement "if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" { (expression_statement "uVar2 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar2 = param_2 >> (-uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (-uVar10 & 0x1f)" identifier >> (parenthesized_expression "(-uVar10 & 0x1f)" ( (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" - identifier) & number_literal) )))) ;) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_1 = uVar2 | param_1 << (uVar10 & 0x1f);" (assignment_expression "param_1 = uVar2 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar2 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "uVar2 = param_4 >> 0x10;" (assignment_expression "uVar2 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 = (param_1 / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar7 = (param_1 / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "(param_1 / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "(param_1 / uVar2)" ( (binary_expression "param_1 / uVar2" identifier / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar2 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar2 << 0x10" (binary_expression "param_1 % uVar2" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar7))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar7)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 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 "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" identifier = (binary_expression "((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "((uVar4 - uVar7) / uVar2)" ( (binary_expression "(uVar4 - uVar7) / uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) / identifier) )) * (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10" (binary_expression "(uVar4 - uVar7) % uVar2" (parenthesized_expression "(uVar4 - uVar7)" ( (binary_expression "uVar4 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar3))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar3)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar3)" ( (binary_expression "uVar4 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar3;" (assignment_expression "uVar4 = uVar4 - uVar3" identifier = (binary_expression "uVar4 - uVar3" identifier - identifier)) ;) }) (else_clause "else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" else (compound_statement "{\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" { (if_statement "if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n        param_4 = 1 / 0;\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }" { (expression_statement "param_1 = param_1 - param_4;" (assignment_expression "param_1 = param_1 - param_4" identifier = (binary_expression "param_1 - param_4" identifier - identifier)) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" else (compound_statement "{\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" { (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_1 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) (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 "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (0x20 - uVar10 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar10 & 0x1f)" ( (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" number_literal - identifier) & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar9 | param_1 << (uVar10 & 0x1f)" identifier | (binary_expression "param_1 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar3 = (uVar7 / uVar4) * uVar2;" (assignment_expression "uVar3 = (uVar7 / uVar4) * uVar2" identifier = (binary_expression "(uVar7 / uVar4) * uVar2" (parenthesized_expression "(uVar7 / uVar4)" ( (binary_expression "uVar7 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar7 % uVar4 << 0x10" (binary_expression "uVar7 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" if (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) (compound_statement "{\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }" if (parenthesized_expression "((param_4 <= uVar7) && (uVar7 < uVar3))" ( (binary_expression "(param_4 <= uVar7) && (uVar7 < uVar3)" (parenthesized_expression "(param_4 <= uVar7)" ( (binary_expression "param_4 <= uVar7" identifier <= identifier) )) && (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) ))) )) (compound_statement "{\n            uVar7 = uVar7 + param_4;\n          }" { (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" identifier = (binary_expression "uVar7 + param_4" identifier + 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 "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;" (assignment_expression "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2" identifier = (binary_expression "((uVar7 - uVar3) / uVar4) * uVar2" (parenthesized_expression "((uVar7 - uVar3) / uVar4)" ( (binary_expression "(uVar7 - uVar3) / uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10" (binary_expression "(uVar7 - uVar3) % uVar4" (parenthesized_expression "(uVar7 - uVar3)" ( (binary_expression "uVar7 - uVar3" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (if_statement "if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" if (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) )) (compound_statement "{\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }" if (parenthesized_expression "((param_4 <= param_1) && (param_1 < uVar5))" ( (binary_expression "(param_4 <= param_1) && (param_1 < uVar5)" (parenthesized_expression "(param_4 <= param_1)" ( (binary_expression "param_4 <= param_1" identifier <= identifier) )) && (parenthesized_expression "(param_1 < uVar5)" ( (binary_expression "param_1 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            param_1 = param_1 + param_4;\n          }" { (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" identifier = (binary_expression "param_1 + param_4" identifier + identifier)) ;) })) })) (expression_statement "param_1 = param_1 - uVar5;" (assignment_expression "param_1 = param_1 - uVar5" identifier = (binary_expression "param_1 - uVar5" identifier - 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 = (param_1 / uVar4) * uVar2;" (assignment_expression "uVar7 = (param_1 / uVar4) * uVar2" identifier = (binary_expression "(param_1 / uVar4) * uVar2" (parenthesized_expression "(param_1 / uVar4)" ( (binary_expression "param_1 / uVar4" identifier / identifier) )) * identifier)) ;) (expression_statement "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "param_1 % uVar4 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar4 << 0x10" (binary_expression "param_1 % uVar4" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (if_statement "if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (compound_statement "{\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar3) && (uVar3 < uVar7))" ( (binary_expression "(param_4 <= uVar3) && (uVar3 < uVar7)" (parenthesized_expression "(param_4 <= uVar3)" ( (binary_expression "param_4 <= uVar3" identifier <= identifier) )) && (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) ))) )) (compound_statement "{\n          uVar3 = uVar3 + param_4;\n        }" { (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" identifier = (binary_expression "uVar3 + param_4" identifier + 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 "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;" (assignment_expression "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2" identifier = (binary_expression "((uVar3 - uVar7) / uVar4) * uVar2" (parenthesized_expression "((uVar3 - uVar7) / uVar4)" ( (binary_expression "(uVar3 - uVar7) / uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) / identifier) )) * identifier)) ;) (expression_statement "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10" (binary_expression "(uVar3 - uVar7) % uVar4" (parenthesized_expression "(uVar3 - uVar7)" ( (binary_expression "uVar3 - uVar7" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (if_statement "if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" if (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) )) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }" if (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar2))" ( (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar2)" (parenthesized_expression "(param_4 <= uVar4)" ( (binary_expression "param_4 <= uVar4" identifier <= identifier) )) && (parenthesized_expression "(uVar4 < uVar2)" ( (binary_expression "uVar4 < uVar2" identifier < identifier) ))) )) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" { (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" identifier = (binary_expression "uVar4 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar4 = uVar4 - uVar2;" (assignment_expression "uVar4 = uVar4 - uVar2" identifier = (binary_expression "uVar4 - uVar2" identifier - identifier)) ;) }))) (expression_statement "param_1 = 0;" (assignment_expression "param_1 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = uVar4 >> (uVar10 & 0x1f);" (assignment_expression "uVar10 = uVar4 >> (uVar10 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) }) (else_clause "else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" else (compound_statement "{\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" { (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" identifier = identifier) ;) (if_statement "if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" if (parenthesized_expression "(param_3 <= param_1)" ( (binary_expression "param_3 <= param_1" identifier <= identifier) )) (compound_statement "{\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" { (expression_statement "uVar2 = LZCOUNT(param_3);" (assignment_expression "uVar2 = LZCOUNT(param_3)" identifier = (call_expression "LZCOUNT(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" if (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }" { (if_statement "if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" if (parenthesized_expression "((param_3 < param_1) || (param_4 <= param_2))" ( (binary_expression "(param_3 < param_1) || (param_4 <= param_2)" (parenthesized_expression "(param_3 < param_1)" ( (binary_expression "param_3 < param_1" identifier < identifier) )) || (parenthesized_expression "(param_4 <= param_2)" ( (binary_expression "param_4 <= param_2" identifier <= identifier) ))) )) (compound_statement "{\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" { (expression_statement "uVar10 = param_2 - param_4;" (assignment_expression "uVar10 = param_2 - param_4" identifier = (binary_expression "param_2 - param_4" identifier - identifier)) ;) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(param_1 - param_3) - (uint)(param_2 < uVar10)" (parenthesized_expression "(param_1 - param_3)" ( (binary_expression "param_1 - param_3" identifier - identifier) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) })) }) (else_clause "else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" else (compound_statement "{\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" { (expression_statement "uVar7 = 0x20 - uVar2;" (assignment_expression "uVar7 = 0x20 - uVar2" identifier = (binary_expression "0x20 - uVar2" number_literal - identifier)) ;) (expression_statement "uVar10 = param_1 >> (uVar7 & 0x1f);" (assignment_expression "uVar10 = param_1 >> (uVar7 & 0x1f)" identifier = (binary_expression "param_1 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);" (assignment_expression "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" (binary_expression "param_4 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_3 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar4 = uVar3 >> 0x10;" (assignment_expression "uVar4 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) (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 "uVar11 = uVar10 / uVar4;" (assignment_expression "uVar11 = uVar10 / uVar4" identifier = (binary_expression "uVar10 / uVar4" identifier / identifier)) ;) (expression_statement "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" (binary_expression "param_2 >> (uVar7 & 0x1f)" identifier >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_1 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "param_4 = param_4 << (uVar2 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar2 & 0x1f)" identifier = (binary_expression "param_4 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = (uVar3 & 0xffff) * uVar11;" (assignment_expression "uVar5 = (uVar3 & 0xffff) * uVar11" identifier = (binary_expression "(uVar3 & 0xffff) * uVar11" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" identifier = (binary_expression "uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar10 % uVar4 << 0x10" (binary_expression "uVar10 % uVar4" identifier % identifier) << number_literal) | (binary_expression "uVar9 >> 0x10" identifier >> number_literal))) ;) (expression_statement "param_2 = param_2 << (uVar2 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar2 & 0x1f)" identifier = (binary_expression "param_2 << (uVar2 & 0x1f)" identifier << (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (if_statement "if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) )) (compound_statement "{\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" { (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + identifier)) ;) (expression_statement "uVar10 = uVar11 - 1;" (assignment_expression "uVar10 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar8) && (uVar8 < uVar5))" ( (binary_expression "(uVar3 <= uVar8) && (uVar8 < uVar5)" (parenthesized_expression "(uVar3 <= uVar8)" ( (binary_expression "uVar3 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) ))) )) (compound_statement "{\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" { (expression_statement "uVar10 = uVar11 - 2;" (assignment_expression "uVar10 = uVar11 - 2" identifier = (binary_expression "uVar11 - 2" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" identifier = (binary_expression "uVar8 + uVar3" identifier + 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 "uVar12 = (uVar8 - uVar5) / uVar4;" (assignment_expression "uVar12 = (uVar8 - uVar5) / uVar4" identifier = (binary_expression "(uVar8 - uVar5) / uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar11 = (uVar3 & 0xffff) * uVar12;" (assignment_expression "uVar11 = (uVar3 & 0xffff) * uVar12" identifier = (binary_expression "(uVar3 & 0xffff) * uVar12" (parenthesized_expression "(uVar3 & 0xffff)" ( (binary_expression "uVar3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" identifier = (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10" (binary_expression "(uVar8 - uVar5) % uVar4" (parenthesized_expression "(uVar8 - uVar5)" ( (binary_expression "uVar8 - uVar5" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar9 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" identifier = identifier) ;) (if_statement "if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" if (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" { (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = uVar12 - 1;" (assignment_expression "uVar4 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" if (parenthesized_expression "((uVar3 <= uVar9) && (uVar9 < uVar11))" ( (binary_expression "(uVar3 <= uVar9) && (uVar9 < uVar11)" (parenthesized_expression "(uVar3 <= uVar9)" ( (binary_expression "uVar3 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" { (expression_statement "uVar4 = uVar12 - 2;" (assignment_expression "uVar4 = uVar12 - 2" identifier = (binary_expression "uVar12 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" identifier = (binary_expression "uVar9 + uVar3" identifier + identifier)) ;) })) })) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" identifier = (binary_expression "uVar9 - uVar11" identifier - identifier)) ;) (expression_statement "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;" (assignment_expression "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" identifier = (binary_expression "(ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" (call_expression "(ulonglong)(uVar10 << 0x10 | uVar4)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar10 << 0x10 | uVar4)" ( (binary_expression "uVar10 << 0x10 | uVar4" (binary_expression "uVar10 << 0x10" identifier << number_literal) | identifier) ))) * (cast_expression "(ulonglong)param_4" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar4 = (uint)lVar1;" (assignment_expression "uVar4 = (uint)lVar1" identifier = (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar10 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" if (parenthesized_expression "((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4))))" ( (binary_expression "(uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))" (parenthesized_expression "(uVar9 < uVar10)" ( (binary_expression "uVar9 < uVar10" identifier < identifier) )) || (parenthesized_expression "((uVar9 == uVar10 && (param_2 < uVar4)))" ( (parenthesized_expression "(uVar9 == uVar10 && (param_2 < uVar4))" ( (binary_expression "uVar9 == uVar10 && (param_2 < uVar4)" (binary_expression "uVar9 == uVar10" identifier == identifier) && (parenthesized_expression "(param_2 < uVar4)" ( (binary_expression "param_2 < uVar4" identifier < identifier) ))) )) ))) )) (compound_statement "{\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" { (expression_statement "param_4 = uVar4 - param_4;" (assignment_expression "param_4 = uVar4 - param_4" identifier = (binary_expression "uVar4 - param_4" identifier - identifier)) ;) (expression_statement "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);" (assignment_expression "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier = (call_expression "CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" identifier (argument_list "((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" ( (binary_expression "(uVar10 - uVar3) - (uint)(uVar4 < param_4)" (parenthesized_expression "(uVar10 - uVar3)" ( (binary_expression "uVar10 - uVar3" identifier - identifier) )) - (call_expression "(uint)(uVar4 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < param_4)" ( (binary_expression "uVar4 < param_4" identifier < identifier) )))) , identifier )))) ;) })) (expression_statement "uVar10 = param_2 - (int)lVar1;" (assignment_expression "uVar10 = param_2 - (int)lVar1" identifier = (binary_expression "param_2 - (int)lVar1" identifier - (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);" (assignment_expression "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" identifier = (binary_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" (parenthesized_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20))" ( (binary_expression "uVar9 - (int)((ulonglong)lVar1 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < uVar10)" ( (binary_expression "param_2 < uVar10" identifier < identifier) ))))) ;) (expression_statement "param_1 = uVar4 >> (uVar2 & 0x1f);" (assignment_expression "param_1 = uVar4 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);" (assignment_expression "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" identifier = (binary_expression "uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" (binary_expression "uVar4 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar10 >> (uVar2 & 0x1f)" identifier >> (parenthesized_expression "(uVar2 & 0x1f)" ( (binary_expression "uVar2 & 0x1f" identifier & number_literal) ))))) ;) }))) })) }))) (if_statement "if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" { (expression_statement "param_1 = -(uint)(-uVar10 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(-uVar10 != 0) - param_1" identifier = (binary_expression "-(uint)(-uVar10 != 0) - param_1" (unary_expression "-(uint)(-uVar10 != 0)" - (call_expression "(uint)(-uVar10 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(-uVar10 != 0)" ( (binary_expression "-uVar10 != 0" (unary_expression "-uVar10" - identifier) != number_literal) )))) - identifier)) ;) (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" identifier = (unary_expression "-uVar10" - identifier)) ;) })) (return_statement "return CONCAT44(param_1,uVar10);" return (call_expression "CONCAT44(param_1,uVar10)" identifier (argument_list "(param_1,uVar10)" ( identifier , identifier ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (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 (parenthesized_expression ( (binary_expression IDENT / IDENT) )) * (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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)) ;) })) })) (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 (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT) )) * (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 IDENT = (binary_expression IDENT - IDENT)) ;) }) (else_clause else (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 LIT / LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) )))) ;) (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 IDENT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT / IDENT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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)) ;) })) })) (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 (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / 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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 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 (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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)) ;) })) })) (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 (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / 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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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 IDENT = (binary_expression IDENT - IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - 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) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (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 IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (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 IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression 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) | (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 IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT << LIT) | IDENT) ))) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_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 IDENT = (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) , IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_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) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }))) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (unary_expression - IDENT) != LIT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })))
(function_definition "undefined8 FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" (type_identifier "undefined8") (function_declarator "FUN_0001f070(uint param_1,uint param_2,uint param_3,uint param_4)" (identifier "FUN_0001f070") (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }\n  if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }\n  if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }\n  if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }\n  return CONCAT44(param_1,uVar10);\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (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 "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (if_statement "if ((int)param_1 < 0) {\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }\n  else {\n    iVar6 = 0;\n  }" (if "if") (parenthesized_expression "((int)param_1 < 0)" (( "(") (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    param_2 = -param_2;\n    param_1 = -(uint)(param_2 != 0) - param_1;\n    iVar6 = -1;\n  }" ({ "{") (expression_statement "param_2 = -param_2;" (assignment_expression "param_2 = -param_2" (identifier "param_2") (= "=") (unary_expression "-param_2" (- "-") (identifier "param_2"))) (; ";")) (expression_statement "param_1 = -(uint)(param_2 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(param_2 != 0) - param_1" (identifier "param_1") (= "=") (binary_expression "-(uint)(param_2 != 0) - param_1" (unary_expression "-(uint)(param_2 != 0)" (- "-") (call_expression "(uint)(param_2 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")))) (- "-") (identifier "param_1"))) (; ";")) (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" (identifier "iVar6") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n    iVar6 = 0;\n  }" (else "else") (compound_statement "{\n    iVar6 = 0;\n  }" ({ "{") (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if ((int)param_3 < 0) {\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0)" (( "(") (binary_expression "(int)param_3 < 0" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    param_4 = -param_4;\n    param_3 = -(uint)(param_4 != 0) - param_3;\n  }" ({ "{") (expression_statement "param_4 = -param_4;" (assignment_expression "param_4 = -param_4" (identifier "param_4") (= "=") (unary_expression "-param_4" (- "-") (identifier "param_4"))) (; ";")) (expression_statement "param_3 = -(uint)(param_4 != 0) - param_3;" (assignment_expression "param_3 = -(uint)(param_4 != 0) - param_3" (identifier "param_3") (= "=") (binary_expression "-(uint)(param_4 != 0) - param_3" (unary_expression "-(uint)(param_4 != 0)" (- "-") (call_expression "(uint)(param_4 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")))) (- "-") (identifier "param_3"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }\n  else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = LZCOUNT(param_4);\n    if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }\n    param_1 = 0;\n    uVar10 = uVar4 >> (uVar10 & 0x1f);\n  }" ({ "{") (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" (identifier "uVar10") (= "=") (call_expression "LZCOUNT(param_4)" (identifier "LZCOUNT") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (param_1 < param_4) {\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }\n    else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" (if "if") (parenthesized_expression "(param_1 < param_4)" (( "(") (binary_expression "param_1 < param_4" (identifier "param_1") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }\n      uVar2 = param_4 >> 0x10;\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);\n      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;\n      if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      if (uVar2 == 0) {\n        trap(7);\n      }\n      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);\n      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar3;\n    }" ({ "{") (if_statement "if (uVar10 != 0) {\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar2 = param_2 >> (-uVar10 & 0x1f);\n        param_4 = param_4 << (uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);\n      }" ({ "{") (expression_statement "uVar2 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar2 = param_2 >> (-uVar10 & 0x1f)" (identifier "uVar2") (= "=") (binary_expression "param_2 >> (-uVar10 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(-uVar10 & 0x1f)" (( "(") (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" (- "-") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" (identifier "param_4") (= "=") (binary_expression "param_4 << (uVar10 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" (identifier "param_2") (= "=") (binary_expression "param_2 << (uVar10 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_1 = uVar2 | param_1 << (uVar10 & 0x1f);" (assignment_expression "param_1 = uVar2 | param_1 << (uVar10 & 0x1f)" (identifier "param_1") (= "=") (binary_expression "uVar2 | param_1 << (uVar10 & 0x1f)" (identifier "uVar2") (| "|") (binary_expression "param_1 << (uVar10 & 0x1f)" (identifier "param_1") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = param_4 >> 0x10;" (assignment_expression "uVar2 = param_4 >> 0x10" (identifier "uVar2") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (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 = (param_1 / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar7 = (param_1 / uVar2) * (param_4 & 0xffff)" (identifier "uVar7") (= "=") (binary_expression "(param_1 / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "(param_1 / uVar2)" (( "(") (binary_expression "param_1 / uVar2" (identifier "param_1") (/ "/") (identifier "uVar2")) () ")")) (* "*") (parenthesized_expression "(param_4 & 0xffff)" (( "(") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (expression_statement "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "param_1 % uVar2 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar2 << 0x10" (binary_expression "param_1 % uVar2" (identifier "param_1") (% "%") (identifier "uVar2")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")))) (; ";")) (if_statement "if (uVar4 < uVar7) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" (if "if") (parenthesized_expression "(uVar4 < uVar7)" (( "(") (binary_expression "uVar4 < uVar7" (identifier "uVar4") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar7)) {\n          uVar4 = uVar4 + param_4;\n        }" (if "if") (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar7))" (( "(") (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar7)" (parenthesized_expression "(param_4 <= uVar4)" (( "(") (binary_expression "param_4 <= uVar4" (identifier "param_4") (<= "<=") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 < uVar7)" (( "(") (binary_expression "uVar4 < uVar7" (identifier "uVar4") (< "<") (identifier "uVar7")) () ")"))) () ")")) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar2 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (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 "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);" (assignment_expression "uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" (identifier "uVar3") (= "=") (binary_expression "((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff)" (parenthesized_expression "((uVar4 - uVar7) / uVar2)" (( "(") (binary_expression "(uVar4 - uVar7) / uVar2" (parenthesized_expression "(uVar4 - uVar7)" (( "(") (binary_expression "uVar4 - uVar7" (identifier "uVar4") (- "-") (identifier "uVar7")) () ")")) (/ "/") (identifier "uVar2")) () ")")) (* "*") (parenthesized_expression "(param_4 & 0xffff)" (( "(") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff")) () ")")))) (; ";")) (expression_statement "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" (identifier "uVar4") (= "=") (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar4 - uVar7) % uVar2 << 0x10" (binary_expression "(uVar4 - uVar7) % uVar2" (parenthesized_expression "(uVar4 - uVar7)" (( "(") (binary_expression "uVar4 - uVar7" (identifier "uVar4") (- "-") (identifier "uVar7")) () ")")) (% "%") (identifier "uVar2")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 & 0xffff" (identifier "param_2") (& "&") (number_literal "0xffff")))) (; ";")) (if_statement "if (uVar4 < uVar3) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" (if "if") (parenthesized_expression "(uVar4 < uVar3)" (( "(") (binary_expression "uVar4 < uVar3" (identifier "uVar4") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar3)) {\n          uVar4 = uVar4 + param_4;\n        }" (if "if") (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar3))" (( "(") (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar3)" (parenthesized_expression "(param_4 <= uVar4)" (( "(") (binary_expression "param_4 <= uVar4" (identifier "param_4") (<= "<=") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 < uVar3)" (( "(") (binary_expression "uVar4 < uVar3" (identifier "uVar4") (< "<") (identifier "uVar3")) () ")"))) () ")")) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar4 = uVar4 - uVar3;" (assignment_expression "uVar4 = uVar4 - uVar3" (identifier "uVar4") (= "=") (binary_expression "uVar4 - uVar3" (identifier "uVar4") (- "-") (identifier "uVar3"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" (else "else") (compound_statement "{\n      if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }\n      uVar10 = LZCOUNT(param_4);\n      if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar7 = (param_1 / uVar4) * uVar2;\n      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;\n      if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }\n      if (uVar4 == 0) {\n        trap(7);\n      }\n      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;\n      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;\n      if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }\n      uVar4 = uVar4 - uVar2;\n    }" ({ "{") (if_statement "if (param_4 == 0) {\n        trap(7);\n        param_4 = 1 / 0;\n      }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n        param_4 = 1 / 0;\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" (identifier "param_4") (= "=") (binary_expression "1 / 0" (number_literal "1") (/ "/") (number_literal "0"))) (; ";")) (} "}"))) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" (identifier "uVar10") (= "=") (call_expression "LZCOUNT(param_4)" (identifier "LZCOUNT") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (uVar10 == 0) {\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }\n      else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_1 = param_1 - param_4;\n        uVar4 = param_4 >> 0x10;\n        uVar2 = param_4 & 0xffff;\n      }" ({ "{") (expression_statement "param_1 = param_1 - param_4;" (assignment_expression "param_1 = param_1 - param_4" (identifier "param_1") (= "=") (binary_expression "param_1 - param_4" (identifier "param_1") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" (identifier "uVar2") (= "=") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff"))) (; ";")) (} "}")) (else_clause "else {\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" (else "else") (compound_statement "{\n        param_4 = param_4 << (uVar10 & 0x1f);\n        uVar4 = param_4 >> 0x10;\n        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);\n        uVar2 = param_4 & 0xffff;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);\n        param_2 = param_2 << (uVar10 & 0x1f);\n        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);\n        uVar3 = (uVar7 / uVar4) * uVar2;\n        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;\n        if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;\n        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;\n        if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }\n        param_1 = param_1 - uVar5;\n      }" ({ "{") (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" (identifier "param_4") (= "=") (binary_expression "param_4 << (uVar10 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar4 = param_4 >> 0x10;" (assignment_expression "uVar4 = param_4 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar7 = param_1 >> (0x20 - uVar10 & 0x1f)" (identifier "uVar7") (= "=") (binary_expression "param_1 >> (0x20 - uVar10 & 0x1f)" (identifier "param_1") (>> ">>") (parenthesized_expression "(0x20 - uVar10 & 0x1f)" (( "(") (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" (number_literal "0x20") (- "-") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar2 = param_4 & 0xffff;" (assignment_expression "uVar2 = param_4 & 0xffff" (identifier "uVar2") (= "=") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff"))) (; ";")) (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 "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (0x20 - uVar10 & 0x1f)" (identifier "uVar9") (= "=") (binary_expression "param_2 >> (0x20 - uVar10 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(0x20 - uVar10 & 0x1f)" (( "(") (binary_expression "0x20 - uVar10 & 0x1f" (binary_expression "0x20 - uVar10" (number_literal "0x20") (- "-") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" (identifier "param_2") (= "=") (binary_expression "param_2 << (uVar10 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar9 | param_1 << (uVar10 & 0x1f)" (identifier "uVar9") (= "=") (binary_expression "uVar9 | param_1 << (uVar10 & 0x1f)" (identifier "uVar9") (| "|") (binary_expression "param_1 << (uVar10 & 0x1f)" (identifier "param_1") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar3 = (uVar7 / uVar4) * uVar2;" (assignment_expression "uVar3 = (uVar7 / uVar4) * uVar2" (identifier "uVar3") (= "=") (binary_expression "(uVar7 / uVar4) * uVar2" (parenthesized_expression "(uVar7 / uVar4)" (( "(") (binary_expression "uVar7 / uVar4" (identifier "uVar7") (/ "/") (identifier "uVar4")) () ")")) (* "*") (identifier "uVar2"))) (; ";")) (expression_statement "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" (identifier "uVar7") (= "=") (binary_expression "uVar7 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar7 % uVar4 << 0x10" (binary_expression "uVar7 % uVar4" (identifier "uVar7") (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")))) (; ";")) (if_statement "if (uVar7 < uVar3) {\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" (if "if") (parenthesized_expression "(uVar7 < uVar3)" (( "(") (binary_expression "uVar7 < uVar3" (identifier "uVar7") (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n          uVar7 = uVar7 + param_4;\n          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }\n        }" ({ "{") (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" (identifier "uVar7") (= "=") (binary_expression "uVar7 + param_4" (identifier "uVar7") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= uVar7) && (uVar7 < uVar3)) {\n            uVar7 = uVar7 + param_4;\n          }" (if "if") (parenthesized_expression "((param_4 <= uVar7) && (uVar7 < uVar3))" (( "(") (binary_expression "(param_4 <= uVar7) && (uVar7 < uVar3)" (parenthesized_expression "(param_4 <= uVar7)" (( "(") (binary_expression "param_4 <= uVar7" (identifier "param_4") (<= "<=") (identifier "uVar7")) () ")")) (&& "&&") (parenthesized_expression "(uVar7 < uVar3)" (( "(") (binary_expression "uVar7 < uVar3" (identifier "uVar7") (< "<") (identifier "uVar3")) () ")"))) () ")")) (compound_statement "{\n            uVar7 = uVar7 + param_4;\n          }" ({ "{") (expression_statement "uVar7 = uVar7 + param_4;" (assignment_expression "uVar7 = uVar7 + param_4" (identifier "uVar7") (= "=") (binary_expression "uVar7 + param_4" (identifier "uVar7") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (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 "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;" (assignment_expression "uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2" (identifier "uVar5") (= "=") (binary_expression "((uVar7 - uVar3) / uVar4) * uVar2" (parenthesized_expression "((uVar7 - uVar3) / uVar4)" (( "(") (binary_expression "(uVar7 - uVar3) / uVar4" (parenthesized_expression "(uVar7 - uVar3)" (( "(") (binary_expression "uVar7 - uVar3" (identifier "uVar7") (- "-") (identifier "uVar3")) () ")")) (/ "/") (identifier "uVar4")) () ")")) (* "*") (identifier "uVar2"))) (; ";")) (expression_statement "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" (identifier "param_1") (= "=") (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar7 - uVar3) % uVar4 << 0x10" (binary_expression "(uVar7 - uVar3) % uVar4" (parenthesized_expression "(uVar7 - uVar3)" (( "(") (binary_expression "uVar7 - uVar3" (identifier "uVar7") (- "-") (identifier "uVar3")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")))) (; ";")) (if_statement "if (param_1 < uVar5) {\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" (if "if") (parenthesized_expression "(param_1 < uVar5)" (( "(") (binary_expression "param_1 < uVar5" (identifier "param_1") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n          param_1 = param_1 + param_4;\n          if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }\n        }" ({ "{") (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" (identifier "param_1") (= "=") (binary_expression "param_1 + param_4" (identifier "param_1") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= param_1) && (param_1 < uVar5)) {\n            param_1 = param_1 + param_4;\n          }" (if "if") (parenthesized_expression "((param_4 <= param_1) && (param_1 < uVar5))" (( "(") (binary_expression "(param_4 <= param_1) && (param_1 < uVar5)" (parenthesized_expression "(param_4 <= param_1)" (( "(") (binary_expression "param_4 <= param_1" (identifier "param_4") (<= "<=") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(param_1 < uVar5)" (( "(") (binary_expression "param_1 < uVar5" (identifier "param_1") (< "<") (identifier "uVar5")) () ")"))) () ")")) (compound_statement "{\n            param_1 = param_1 + param_4;\n          }" ({ "{") (expression_statement "param_1 = param_1 + param_4;" (assignment_expression "param_1 = param_1 + param_4" (identifier "param_1") (= "=") (binary_expression "param_1 + param_4" (identifier "param_1") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_1 = param_1 - uVar5;" (assignment_expression "param_1 = param_1 - uVar5" (identifier "param_1") (= "=") (binary_expression "param_1 - uVar5" (identifier "param_1") (- "-") (identifier "uVar5"))) (; ";")) (} "}")))) (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 = (param_1 / uVar4) * uVar2;" (assignment_expression "uVar7 = (param_1 / uVar4) * uVar2" (identifier "uVar7") (= "=") (binary_expression "(param_1 / uVar4) * uVar2" (parenthesized_expression "(param_1 / uVar4)" (( "(") (binary_expression "param_1 / uVar4" (identifier "param_1") (/ "/") (identifier "uVar4")) () ")")) (* "*") (identifier "uVar2"))) (; ";")) (expression_statement "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10" (identifier "uVar3") (= "=") (binary_expression "param_1 % uVar4 << 0x10 | param_2 >> 0x10" (binary_expression "param_1 % uVar4 << 0x10" (binary_expression "param_1 % uVar4" (identifier "param_1") (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")))) (; ";")) (if_statement "if (uVar3 < uVar7) {\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" (if "if") (parenthesized_expression "(uVar3 < uVar7)" (( "(") (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n        uVar3 = uVar3 + param_4;\n        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }\n      }" ({ "{") (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" (identifier "uVar3") (= "=") (binary_expression "uVar3 + param_4" (identifier "uVar3") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= uVar3) && (uVar3 < uVar7)) {\n          uVar3 = uVar3 + param_4;\n        }" (if "if") (parenthesized_expression "((param_4 <= uVar3) && (uVar3 < uVar7))" (( "(") (binary_expression "(param_4 <= uVar3) && (uVar3 < uVar7)" (parenthesized_expression "(param_4 <= uVar3)" (( "(") (binary_expression "param_4 <= uVar3" (identifier "param_4") (<= "<=") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(uVar3 < uVar7)" (( "(") (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) () ")"))) () ")")) (compound_statement "{\n          uVar3 = uVar3 + param_4;\n        }" ({ "{") (expression_statement "uVar3 = uVar3 + param_4;" (assignment_expression "uVar3 = uVar3 + param_4" (identifier "uVar3") (= "=") (binary_expression "uVar3 + param_4" (identifier "uVar3") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (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 "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;" (assignment_expression "uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2" (identifier "uVar2") (= "=") (binary_expression "((uVar3 - uVar7) / uVar4) * uVar2" (parenthesized_expression "((uVar3 - uVar7) / uVar4)" (( "(") (binary_expression "(uVar3 - uVar7) / uVar4" (parenthesized_expression "(uVar3 - uVar7)" (( "(") (binary_expression "uVar3 - uVar7" (identifier "uVar3") (- "-") (identifier "uVar7")) () ")")) (/ "/") (identifier "uVar4")) () ")")) (* "*") (identifier "uVar2"))) (; ";")) (expression_statement "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" (identifier "uVar4") (= "=") (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar3 - uVar7) % uVar4 << 0x10" (binary_expression "(uVar3 - uVar7) % uVar4" (parenthesized_expression "(uVar3 - uVar7)" (( "(") (binary_expression "uVar3 - uVar7" (identifier "uVar3") (- "-") (identifier "uVar7")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 & 0xffff" (identifier "param_2") (& "&") (number_literal "0xffff")))) (; ";")) (if_statement "if (uVar4 < uVar2) {\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" (if "if") (parenthesized_expression "(uVar4 < uVar2)" (( "(") (binary_expression "uVar4 < uVar2" (identifier "uVar4") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n        uVar4 = uVar4 + param_4;\n        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }\n      }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if ((param_4 <= uVar4) && (uVar4 < uVar2)) {\n          uVar4 = uVar4 + param_4;\n        }" (if "if") (parenthesized_expression "((param_4 <= uVar4) && (uVar4 < uVar2))" (( "(") (binary_expression "(param_4 <= uVar4) && (uVar4 < uVar2)" (parenthesized_expression "(param_4 <= uVar4)" (( "(") (binary_expression "param_4 <= uVar4" (identifier "param_4") (<= "<=") (identifier "uVar4")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 < uVar2)" (( "(") (binary_expression "uVar4 < uVar2" (identifier "uVar4") (< "<") (identifier "uVar2")) () ")"))) () ")")) (compound_statement "{\n          uVar4 = uVar4 + param_4;\n        }" ({ "{") (expression_statement "uVar4 = uVar4 + param_4;" (assignment_expression "uVar4 = uVar4 + param_4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_4" (identifier "uVar4") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar4 = uVar4 - uVar2;" (assignment_expression "uVar4 = uVar4 - uVar2" (identifier "uVar4") (= "=") (binary_expression "uVar4 - uVar2" (identifier "uVar4") (- "-") (identifier "uVar2"))) (; ";")) (} "}")))) (expression_statement "param_1 = 0;" (assignment_expression "param_1 = 0" (identifier "param_1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = uVar4 >> (uVar10 & 0x1f);" (assignment_expression "uVar10 = uVar4 >> (uVar10 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "uVar4 >> (uVar10 & 0x1f)" (identifier "uVar4") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" (else "else") (compound_statement "{\n    uVar10 = param_2;\n    if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }\n  }" ({ "{") (expression_statement "uVar10 = param_2;" (assignment_expression "uVar10 = param_2" (identifier "uVar10") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_3 <= param_1) {\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" (if "if") (parenthesized_expression "(param_3 <= param_1)" (( "(") (binary_expression "param_3 <= param_1" (identifier "param_3") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n      uVar2 = LZCOUNT(param_3);\n      if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }\n    }" ({ "{") (expression_statement "uVar2 = LZCOUNT(param_3);" (assignment_expression "uVar2 = LZCOUNT(param_3)" (identifier "uVar2") (= "=") (call_expression "LZCOUNT(param_3)" (identifier "LZCOUNT") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (uVar2 == 0) {\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }\n      else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" (if "if") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }\n      }" ({ "{") (if_statement "if ((param_3 < param_1) || (param_4 <= param_2)) {\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" (if "if") (parenthesized_expression "((param_3 < param_1) || (param_4 <= param_2))" (( "(") (binary_expression "(param_3 < param_1) || (param_4 <= param_2)" (parenthesized_expression "(param_3 < param_1)" (( "(") (binary_expression "param_3 < param_1" (identifier "param_3") (< "<") (identifier "param_1")) () ")")) (|| "||") (parenthesized_expression "(param_4 <= param_2)" (( "(") (binary_expression "param_4 <= param_2" (identifier "param_4") (<= "<=") (identifier "param_2")) () ")"))) () ")")) (compound_statement "{\n          uVar10 = param_2 - param_4;\n          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);\n        }" ({ "{") (expression_statement "uVar10 = param_2 - param_4;" (assignment_expression "uVar10 = param_2 - param_4" (identifier "uVar10") (= "=") (binary_expression "param_2 - param_4" (identifier "param_2") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);" (assignment_expression "param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10)" (identifier "param_1") (= "=") (binary_expression "(param_1 - param_3) - (uint)(param_2 < uVar10)" (parenthesized_expression "(param_1 - param_3)" (( "(") (binary_expression "param_1 - param_3" (identifier "param_1") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < uVar10)" (( "(") (binary_expression "param_2 < uVar10" (identifier "param_2") (< "<") (identifier "uVar10")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" (else "else") (compound_statement "{\n        uVar7 = 0x20 - uVar2;\n        uVar10 = param_1 >> (uVar7 & 0x1f);\n        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);\n        uVar4 = uVar3 >> 0x10;\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar11 = uVar10 / uVar4;\n        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);\n        param_4 = param_4 << (uVar2 & 0x1f);\n        uVar5 = (uVar3 & 0xffff) * uVar11;\n        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;\n        param_2 = param_2 << (uVar2 & 0x1f);\n        uVar10 = uVar11;\n        if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }\n        if (uVar4 == 0) {\n          trap(7);\n        }\n        uVar12 = (uVar8 - uVar5) / uVar4;\n        uVar11 = (uVar3 & 0xffff) * uVar12;\n        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;\n        uVar4 = uVar12;\n        if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }\n        uVar9 = uVar9 - uVar11;\n        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;\n        uVar4 = (uint)lVar1;\n        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);\n        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }\n        uVar10 = param_2 - (int)lVar1;\n        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);\n        param_1 = uVar4 >> (uVar2 & 0x1f);\n        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);\n      }" ({ "{") (expression_statement "uVar7 = 0x20 - uVar2;" (assignment_expression "uVar7 = 0x20 - uVar2" (identifier "uVar7") (= "=") (binary_expression "0x20 - uVar2" (number_literal "0x20") (- "-") (identifier "uVar2"))) (; ";")) (expression_statement "uVar10 = param_1 >> (uVar7 & 0x1f);" (assignment_expression "uVar10 = param_1 >> (uVar7 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "param_1 >> (uVar7 & 0x1f)" (identifier "param_1") (>> ">>") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);" (assignment_expression "uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" (identifier "uVar3") (= "=") (binary_expression "param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f)" (binary_expression "param_4 >> (uVar7 & 0x1f)" (identifier "param_4") (>> ">>") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_3 << (uVar2 & 0x1f)" (identifier "param_3") (<< "<<") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar3 >> 0x10;" (assignment_expression "uVar4 = uVar3 >> 0x10" (identifier "uVar4") (= "=") (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10"))) (; ";")) (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 "uVar11 = uVar10 / uVar4;" (assignment_expression "uVar11 = uVar10 / uVar4" (identifier "uVar11") (= "=") (binary_expression "uVar10 / uVar4" (identifier "uVar10") (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);" (assignment_expression "uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" (identifier "uVar9") (= "=") (binary_expression "param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f)" (binary_expression "param_2 >> (uVar7 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_1 << (uVar2 & 0x1f)" (identifier "param_1") (<< "<<") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "param_4 = param_4 << (uVar2 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar2 & 0x1f)" (identifier "param_4") (= "=") (binary_expression "param_4 << (uVar2 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar5 = (uVar3 & 0xffff) * uVar11;" (assignment_expression "uVar5 = (uVar3 & 0xffff) * uVar11" (identifier "uVar5") (= "=") (binary_expression "(uVar3 & 0xffff) * uVar11" (parenthesized_expression "(uVar3 & 0xffff)" (( "(") (binary_expression "uVar3 & 0xffff" (identifier "uVar3") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar11"))) (; ";")) (expression_statement "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;" (assignment_expression "uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" (identifier "uVar8") (= "=") (binary_expression "uVar10 % uVar4 << 0x10 | uVar9 >> 0x10" (binary_expression "uVar10 % uVar4 << 0x10" (binary_expression "uVar10 % uVar4" (identifier "uVar10") (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar9 >> 0x10" (identifier "uVar9") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "param_2 = param_2 << (uVar2 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar2 & 0x1f)" (identifier "param_2") (= "=") (binary_expression "param_2 << (uVar2 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if (uVar8 < uVar5) {\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" (if "if") (parenthesized_expression "(uVar8 < uVar5)" (( "(") (binary_expression "uVar8 < uVar5" (identifier "uVar8") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n          uVar8 = uVar8 + uVar3;\n          uVar10 = uVar11 - 1;\n          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }\n        }" ({ "{") (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" (identifier "uVar8") (= "=") (binary_expression "uVar8 + uVar3" (identifier "uVar8") (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "uVar10 = uVar11 - 1;" (assignment_expression "uVar10 = uVar11 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" (if "if") (parenthesized_expression "((uVar3 <= uVar8) && (uVar8 < uVar5))" (( "(") (binary_expression "(uVar3 <= uVar8) && (uVar8 < uVar5)" (parenthesized_expression "(uVar3 <= uVar8)" (( "(") (binary_expression "uVar3 <= uVar8" (identifier "uVar3") (<= "<=") (identifier "uVar8")) () ")")) (&& "&&") (parenthesized_expression "(uVar8 < uVar5)" (( "(") (binary_expression "uVar8 < uVar5" (identifier "uVar8") (< "<") (identifier "uVar5")) () ")"))) () ")")) (compound_statement "{\n            uVar10 = uVar11 - 2;\n            uVar8 = uVar8 + uVar3;\n          }" ({ "{") (expression_statement "uVar10 = uVar11 - 2;" (assignment_expression "uVar10 = uVar11 - 2" (identifier "uVar10") (= "=") (binary_expression "uVar11 - 2" (identifier "uVar11") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = uVar8 + uVar3;" (assignment_expression "uVar8 = uVar8 + uVar3" (identifier "uVar8") (= "=") (binary_expression "uVar8 + uVar3" (identifier "uVar8") (+ "+") (identifier "uVar3"))) (; ";")) (} "}"))) (} "}"))) (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 "uVar12 = (uVar8 - uVar5) / uVar4;" (assignment_expression "uVar12 = (uVar8 - uVar5) / uVar4" (identifier "uVar12") (= "=") (binary_expression "(uVar8 - uVar5) / uVar4" (parenthesized_expression "(uVar8 - uVar5)" (( "(") (binary_expression "uVar8 - uVar5" (identifier "uVar8") (- "-") (identifier "uVar5")) () ")")) (/ "/") (identifier "uVar4"))) (; ";")) (expression_statement "uVar11 = (uVar3 & 0xffff) * uVar12;" (assignment_expression "uVar11 = (uVar3 & 0xffff) * uVar12" (identifier "uVar11") (= "=") (binary_expression "(uVar3 & 0xffff) * uVar12" (parenthesized_expression "(uVar3 & 0xffff)" (( "(") (binary_expression "uVar3 & 0xffff" (identifier "uVar3") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar12"))) (; ";")) (expression_statement "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;" (assignment_expression "uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" (identifier "uVar9") (= "=") (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff" (binary_expression "(uVar8 - uVar5) % uVar4 << 0x10" (binary_expression "(uVar8 - uVar5) % uVar4" (parenthesized_expression "(uVar8 - uVar5)" (( "(") (binary_expression "uVar8 - uVar5" (identifier "uVar8") (- "-") (identifier "uVar5")) () ")")) (% "%") (identifier "uVar4")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar9 & 0xffff" (identifier "uVar9") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar4 = uVar12;" (assignment_expression "uVar4 = uVar12" (identifier "uVar4") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (uVar9 < uVar11) {\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" (if "if") (parenthesized_expression "(uVar9 < uVar11)" (( "(") (binary_expression "uVar9 < uVar11" (identifier "uVar9") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n          uVar9 = uVar9 + uVar3;\n          uVar4 = uVar12 - 1;\n          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }\n        }" ({ "{") (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" (identifier "uVar9") (= "=") (binary_expression "uVar9 + uVar3" (identifier "uVar9") (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "uVar4 = uVar12 - 1;" (assignment_expression "uVar4 = uVar12 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" (if "if") (parenthesized_expression "((uVar3 <= uVar9) && (uVar9 < uVar11))" (( "(") (binary_expression "(uVar3 <= uVar9) && (uVar9 < uVar11)" (parenthesized_expression "(uVar3 <= uVar9)" (( "(") (binary_expression "uVar3 <= uVar9" (identifier "uVar3") (<= "<=") (identifier "uVar9")) () ")")) (&& "&&") (parenthesized_expression "(uVar9 < uVar11)" (( "(") (binary_expression "uVar9 < uVar11" (identifier "uVar9") (< "<") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n            uVar4 = uVar12 - 2;\n            uVar9 = uVar9 + uVar3;\n          }" ({ "{") (expression_statement "uVar4 = uVar12 - 2;" (assignment_expression "uVar4 = uVar12 - 2" (identifier "uVar4") (= "=") (binary_expression "uVar12 - 2" (identifier "uVar12") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar9 = uVar9 + uVar3;" (assignment_expression "uVar9 = uVar9 + uVar3" (identifier "uVar9") (= "=") (binary_expression "uVar9 + uVar3" (identifier "uVar9") (+ "+") (identifier "uVar3"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar9 = uVar9 - uVar11;" (assignment_expression "uVar9 = uVar9 - uVar11" (identifier "uVar9") (= "=") (binary_expression "uVar9 - uVar11" (identifier "uVar9") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;" (assignment_expression "lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4" (call_expression "(ulonglong)(uVar10 << 0x10 | uVar4)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar10 << 0x10 | uVar4)" (( "(") (binary_expression "uVar10 << 0x10 | uVar4" (binary_expression "uVar10 << 0x10" (identifier "uVar10") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar4")) () ")"))) (* "*") (cast_expression "(ulonglong)param_4" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_4")))) (; ";")) (expression_statement "uVar4 = (uint)lVar1;" (assignment_expression "uVar4 = (uint)lVar1" (identifier "uVar4") (= "=") (cast_expression "(uint)lVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar1"))) (; ";")) (expression_statement "uVar10 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar10 = (uint)((ulonglong)lVar1 >> 0x20)" (identifier "uVar10") (= "=") (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" (if "if") (parenthesized_expression "((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4))))" (( "(") (binary_expression "(uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))" (parenthesized_expression "(uVar9 < uVar10)" (( "(") (binary_expression "uVar9 < uVar10" (identifier "uVar9") (< "<") (identifier "uVar10")) () ")")) (|| "||") (parenthesized_expression "((uVar9 == uVar10 && (param_2 < uVar4)))" (( "(") (parenthesized_expression "(uVar9 == uVar10 && (param_2 < uVar4))" (( "(") (binary_expression "uVar9 == uVar10 && (param_2 < uVar4)" (binary_expression "uVar9 == uVar10" (identifier "uVar9") (== "==") (identifier "uVar10")) (&& "&&") (parenthesized_expression "(param_2 < uVar4)" (( "(") (binary_expression "param_2 < uVar4" (identifier "param_2") (< "<") (identifier "uVar4")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          param_4 = uVar4 - param_4;\n          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);\n        }" ({ "{") (expression_statement "param_4 = uVar4 - param_4;" (assignment_expression "param_4 = uVar4 - param_4" (identifier "param_4") (= "=") (binary_expression "uVar4 - param_4" (identifier "uVar4") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);" (assignment_expression "lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" (identifier "lVar1") (= "=") (call_expression "CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" (identifier "CONCAT44") (argument_list "((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4)" (( "(") (binary_expression "(uVar10 - uVar3) - (uint)(uVar4 < param_4)" (parenthesized_expression "(uVar10 - uVar3)" (( "(") (binary_expression "uVar10 - uVar3" (identifier "uVar10") (- "-") (identifier "uVar3")) () ")")) (- "-") (call_expression "(uint)(uVar4 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar4 < param_4)" (( "(") (binary_expression "uVar4 < param_4" (identifier "uVar4") (< "<") (identifier "param_4")) () ")")))) (, ",") (identifier "param_4") () ")")))) (; ";")) (} "}"))) (expression_statement "uVar10 = param_2 - (int)lVar1;" (assignment_expression "uVar10 = param_2 - (int)lVar1" (identifier "uVar10") (= "=") (binary_expression "param_2 - (int)lVar1" (identifier "param_2") (- "-") (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1")))) (; ";")) (expression_statement "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);" (assignment_expression "uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" (identifier "uVar4") (= "=") (binary_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10)" (parenthesized_expression "(uVar9 - (int)((ulonglong)lVar1 >> 0x20))" (( "(") (binary_expression "uVar9 - (int)((ulonglong)lVar1 >> 0x20)" (identifier "uVar9") (- "-") (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")")))) () ")")) (- "-") (call_expression "(uint)(param_2 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < uVar10)" (( "(") (binary_expression "param_2 < uVar10" (identifier "param_2") (< "<") (identifier "uVar10")) () ")"))))) (; ";")) (expression_statement "param_1 = uVar4 >> (uVar2 & 0x1f);" (assignment_expression "param_1 = uVar4 >> (uVar2 & 0x1f)" (identifier "param_1") (= "=") (binary_expression "uVar4 >> (uVar2 & 0x1f)" (identifier "uVar4") (>> ">>") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);" (assignment_expression "uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f)" (binary_expression "uVar4 << (uVar7 & 0x1f)" (identifier "uVar4") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar10 >> (uVar2 & 0x1f)" (identifier "uVar10") (>> ">>") (parenthesized_expression "(uVar2 & 0x1f)" (( "(") (binary_expression "uVar2 & 0x1f" (identifier "uVar2") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}")))) (if_statement "if (iVar6 != 0) {\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    param_1 = -(uint)(-uVar10 != 0) - param_1;\n    uVar10 = -uVar10;\n  }" ({ "{") (expression_statement "param_1 = -(uint)(-uVar10 != 0) - param_1;" (assignment_expression "param_1 = -(uint)(-uVar10 != 0) - param_1" (identifier "param_1") (= "=") (binary_expression "-(uint)(-uVar10 != 0) - param_1" (unary_expression "-(uint)(-uVar10 != 0)" (- "-") (call_expression "(uint)(-uVar10 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(-uVar10 != 0)" (( "(") (binary_expression "-uVar10 != 0" (unary_expression "-uVar10" (- "-") (identifier "uVar10")) (!= "!=") (number_literal "0")) () ")")))) (- "-") (identifier "param_1"))) (; ";")) (expression_statement "uVar10 = -uVar10;" (assignment_expression "uVar10 = -uVar10" (identifier "uVar10") (= "=") (unary_expression "-uVar10" (- "-") (identifier "uVar10"))) (; ";")) (} "}"))) (return_statement "return CONCAT44(param_1,uVar10);" (return "return") (call_expression "CONCAT44(param_1,uVar10)" (identifier "CONCAT44") (argument_list "(param_1,uVar10)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (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: (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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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))))) (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)))) (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (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))))) (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)))) (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: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (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: (number_literal) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (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: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (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: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_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: (parenthesized_expression (binary_expression left: (identifier) right: (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))))) (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)))) (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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))))) (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)))) (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: (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: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (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)))) (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)))))))) (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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))))) (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)))) (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: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (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: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) 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: (binary_expression left: (identifier) right: (parenthesized_expression (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: (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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) 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: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (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: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_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)))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_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: (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 (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (return_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))

undefined8 MASKED(uint param_1,uint param_2,uint param_3,uint param_4)

{
  longlong lVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  if ((int)param_1 < 0) {
    param_2 = -param_2;
    param_1 = -(uint)(param_2 != 0) - param_1;
    iVar6 = -1;
  }
  else {
    iVar6 = 0;
  }
  if ((int)param_3 < 0) {
    param_4 = -param_4;
    param_3 = -(uint)(param_4 != 0) - param_3;
  }
  if (param_3 == 0) {
    uVar10 = LZCOUNT(param_4);
    if (param_1 < param_4) {
      if (uVar10 != 0) {
        uVar2 = param_2 >> (-uVar10 & 0x1f);
        param_4 = param_4 << (uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        param_1 = uVar2 | param_1 << (uVar10 & 0x1f);
      }
      uVar2 = param_4 >> 0x10;
      if (uVar2 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar2) * (param_4 & 0xffff);
      uVar4 = param_1 % uVar2 << 0x10 | param_2 >> 0x10;
      if (uVar4 < uVar7) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar7)) {
          uVar4 = uVar4 + param_4;
        }
      }
      if (uVar2 == 0) {
        trap(7);
      }
      uVar3 = ((uVar4 - uVar7) / uVar2) * (param_4 & 0xffff);
      uVar4 = (uVar4 - uVar7) % uVar2 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar3) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar3)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar3;
    }
    else {
      if (param_4 == 0) {
        trap(7);
        param_4 = 1 / 0;
      }
      uVar10 = LZCOUNT(param_4);
      if (uVar10 == 0) {
        param_1 = param_1 - param_4;
        uVar4 = param_4 >> 0x10;
        uVar2 = param_4 & 0xffff;
      }
      else {
        param_4 = param_4 << (uVar10 & 0x1f);
        uVar4 = param_4 >> 0x10;
        uVar7 = param_1 >> (0x20 - uVar10 & 0x1f);
        uVar2 = param_4 & 0xffff;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar9 = param_2 >> (0x20 - uVar10 & 0x1f);
        param_2 = param_2 << (uVar10 & 0x1f);
        uVar9 = uVar9 | param_1 << (uVar10 & 0x1f);
        uVar3 = (uVar7 / uVar4) * uVar2;
        uVar7 = uVar7 % uVar4 << 0x10 | uVar9 >> 0x10;
        if (uVar7 < uVar3) {
          uVar7 = uVar7 + param_4;
          if ((param_4 <= uVar7) && (uVar7 < uVar3)) {
            uVar7 = uVar7 + param_4;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar5 = ((uVar7 - uVar3) / uVar4) * uVar2;
        param_1 = (uVar7 - uVar3) % uVar4 << 0x10 | uVar9 & 0xffff;
        if (param_1 < uVar5) {
          param_1 = param_1 + param_4;
          if ((param_4 <= param_1) && (param_1 < uVar5)) {
            param_1 = param_1 + param_4;
          }
        }
        param_1 = param_1 - uVar5;
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar7 = (param_1 / uVar4) * uVar2;
      uVar3 = param_1 % uVar4 << 0x10 | param_2 >> 0x10;
      if (uVar3 < uVar7) {
        uVar3 = uVar3 + param_4;
        if ((param_4 <= uVar3) && (uVar3 < uVar7)) {
          uVar3 = uVar3 + param_4;
        }
      }
      if (uVar4 == 0) {
        trap(7);
      }
      uVar2 = ((uVar3 - uVar7) / uVar4) * uVar2;
      uVar4 = (uVar3 - uVar7) % uVar4 << 0x10 | param_2 & 0xffff;
      if (uVar4 < uVar2) {
        uVar4 = uVar4 + param_4;
        if ((param_4 <= uVar4) && (uVar4 < uVar2)) {
          uVar4 = uVar4 + param_4;
        }
      }
      uVar4 = uVar4 - uVar2;
    }
    param_1 = 0;
    uVar10 = uVar4 >> (uVar10 & 0x1f);
  }
  else {
    uVar10 = param_2;
    if (param_3 <= param_1) {
      uVar2 = LZCOUNT(param_3);
      if (uVar2 == 0) {
        if ((param_3 < param_1) || (param_4 <= param_2)) {
          uVar10 = param_2 - param_4;
          param_1 = (param_1 - param_3) - (uint)(param_2 < uVar10);
        }
      }
      else {
        uVar7 = 0x20 - uVar2;
        uVar10 = param_1 >> (uVar7 & 0x1f);
        uVar3 = param_4 >> (uVar7 & 0x1f) | param_3 << (uVar2 & 0x1f);
        uVar4 = uVar3 >> 0x10;
        if (uVar4 == 0) {
          trap(7);
        }
        uVar11 = uVar10 / uVar4;
        uVar9 = param_2 >> (uVar7 & 0x1f) | param_1 << (uVar2 & 0x1f);
        param_4 = param_4 << (uVar2 & 0x1f);
        uVar5 = (uVar3 & 0xffff) * uVar11;
        uVar8 = uVar10 % uVar4 << 0x10 | uVar9 >> 0x10;
        param_2 = param_2 << (uVar2 & 0x1f);
        uVar10 = uVar11;
        if (uVar8 < uVar5) {
          uVar8 = uVar8 + uVar3;
          uVar10 = uVar11 - 1;
          if ((uVar3 <= uVar8) && (uVar8 < uVar5)) {
            uVar10 = uVar11 - 2;
            uVar8 = uVar8 + uVar3;
          }
        }
        if (uVar4 == 0) {
          trap(7);
        }
        uVar12 = (uVar8 - uVar5) / uVar4;
        uVar11 = (uVar3 & 0xffff) * uVar12;
        uVar9 = (uVar8 - uVar5) % uVar4 << 0x10 | uVar9 & 0xffff;
        uVar4 = uVar12;
        if (uVar9 < uVar11) {
          uVar9 = uVar9 + uVar3;
          uVar4 = uVar12 - 1;
          if ((uVar3 <= uVar9) && (uVar9 < uVar11)) {
            uVar4 = uVar12 - 2;
            uVar9 = uVar9 + uVar3;
          }
        }
        uVar9 = uVar9 - uVar11;
        lVar1 = (ulonglong)(uVar10 << 0x10 | uVar4) * (ulonglong)param_4;
        uVar4 = (uint)lVar1;
        uVar10 = (uint)((ulonglong)lVar1 >> 0x20);
        if ((uVar9 < uVar10) || ((uVar9 == uVar10 && (param_2 < uVar4)))) {
          param_4 = uVar4 - param_4;
          lVar1 = CONCAT44((uVar10 - uVar3) - (uint)(uVar4 < param_4),param_4);
        }
        uVar10 = param_2 - (int)lVar1;
        uVar4 = (uVar9 - (int)((ulonglong)lVar1 >> 0x20)) - (uint)(param_2 < uVar10);
        param_1 = uVar4 >> (uVar2 & 0x1f);
        uVar10 = uVar4 << (uVar7 & 0x1f) | uVar10 >> (uVar2 & 0x1f);
      }
    }
  }
  if (iVar6 != 0) {
    param_1 = -(uint)(-uVar10 != 0) - param_1;
    uVar10 = -uVar10;
  }
  return CONCAT44(param_1,uVar10);
}

