
/* WARNING: Removing unreachable block (ram,0x000151d4) */
/* WARNING: Removing unreachable block (ram,0x00015078) */
/* WARNING: Removing unreachable block (ram,0x00015104) */
/* WARNING: Removing unreachable block (ram,0x00015260) */

uintmax_t powm(uintmax_t b,uintmax_t e,uintmax_t n,uintmax_t ni,uintmax_t one)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  ulonglong uVar5;
  undefined4 in_a0;
  undefined4 in_a1;
  uint in_a2;
  uint in_a3;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  
  uVar2 = CONCAT44(in_a0,in_a1);
  uVar1 = uVar2;
  if ((in_a3 & 1) == 0) goto LAB_000152f0;
  do {
    n = uVar1;
    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);
    do {
      while( true ) {
        uVar6 = (uint)(uVar2 >> 0x20);
        uVar9 = (uint)(n >> 0x20);
        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);
        uVar10 = (uint)(uVar2 >> 0x20);
        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;
        iVar11 = (int)((ulonglong)lVar3 >> 0x20);
        uVar6 = uVar10 + (uint)uVar1 * 2;
        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);
        if (CONCAT44(uVar10,uVar6) < uVar1) {
          iVar11 = iVar11 + 1;
        }
        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);
        uVar8 = uVar10 + (int)lVar3;
        uVar10 = (uint)(uVar8 < uVar10) + iVar11;
        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);
        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);
        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;
        iVar11 = (int)((ulonglong)lVar3 >> 0x20);
        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +
                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);
        uVar6 = (uint)(uVar1 >> 0x20);
        if (uVar1 < uVar2) {
          iVar11 = iVar11 + 1;
        }
        uVar7 = uVar6 + (int)lVar3;
        uVar6 = (uint)(uVar7 < uVar6) + iVar11;
        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);
        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {
          uVar2 = b + uVar2;
        }
        uVar6 = (uint)(uVar2 >> 0x20);
        uVar10 = in_a3 >> 1;
        in_a3 = in_a2 << 0x1f | uVar10;
        in_a2 = in_a2 >> 1;
        if ((uVar10 & 1) != 0) break;
LAB_000152f0:
        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);
        if (in_a2 == 0 && in_a3 == 0) {
          return n;
        }
      }
      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);
      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);
      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;
      iVar11 = (int)((ulonglong)lVar3 >> 0x20);
      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);
      uVar9 = (uint)(uVar5 >> 0x20);
      if (uVar5 < uVar1) {
        iVar11 = iVar11 + 1;
      }
      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);
      uVar10 = uVar9 + (int)lVar3;
      uVar8 = (uint)(uVar10 < uVar9) + iVar11;
      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);
      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);
      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;
      iVar11 = (int)((ulonglong)lVar3 >> 0x20);
      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +
              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);
      uVar9 = (uint)(uVar1 >> 0x20);
      if (uVar1 < uVar4) {
        iVar11 = iVar11 + 1;
      }
      uVar7 = uVar9 + (int)lVar3;
      uVar9 = (uint)(uVar7 < uVar9) + iVar11;
      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);
    } while ((uVar9 <= uVar8) &&
            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))
            );
    uVar1 = b + n;
  } while( true );
}



/* WARNING: Removing unreachable block (ram,0x000151d4) */
/* WARNING: Removing unreachable block (ram,0x00015078) */
/* WARNING: Removing unreachable block (ram,0x00015104) */
/* WARNING: Removing unreachable block (ram,0x00015260) */

void FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,
                 int param_7,uint param_8,uint param_9,uint param_10)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  
  uVar5 = param_9;
  uVar6 = param_1;
  uVar11 = param_2;
  if ((param_4 & 1) == 0) goto LAB_000152f0;
  do {
    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;
    param_10 = param_2;
    do {
      while( true ) {
        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;
        uVar11 = (uint)(uVar2 >> 0x20);
        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);
        uVar5 = uVar11 + (uint)uVar1 * 2;
        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);
        if (CONCAT44(uVar11,uVar5) < uVar1) {
          iVar12 = iVar12 + 1;
        }
        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;
        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);
        uVar10 = (uint)(uVar9 < uVar11) + iVar12;
        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);
        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;
        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;
        iVar12 = (int)((ulonglong)lVar3 >> 0x20);
        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +
                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);
        uVar5 = (uint)(uVar1 >> 0x20);
        if (uVar1 < uVar2) {
          iVar12 = iVar12 + 1;
        }
        uVar8 = uVar5 + (int)lVar3;
        uVar5 = (uint)(uVar8 < uVar5) + iVar12;
        uVar7 = uVar9 - uVar8;
        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);
        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {
          uVar11 = uVar7 + param_6;
          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;
        }
        uVar9 = param_4 >> 1;
        param_4 = param_3 << 0x1f | uVar9;
        param_3 = param_3 >> 1;
        uVar5 = param_1;
        if ((uVar9 & 1) != 0) break;
LAB_000152f0:
        param_1 = uVar5;
        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;
        if (param_3 == 0 && param_4 == 0) {
          return;
        }
      }
      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;
      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);
      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +
              (uVar1 >> 0x20);
      uVar5 = (uint)(uVar2 >> 0x20);
      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {
        iVar12 = iVar12 + 1;
      }
      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;
      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);
      uVar10 = (uint)(uVar9 < uVar5) + iVar12;
      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);
      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;
      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;
      iVar12 = (int)((ulonglong)lVar3 >> 0x20);
      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +
              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);
      uVar5 = (uint)(uVar2 >> 0x20);
      if (uVar2 < uVar1) {
        iVar12 = iVar12 + 1;
      }
      uVar7 = uVar5 + (int)lVar3;
      uVar5 = (uint)(uVar7 < uVar5) + iVar12;
      param_10 = uVar9 - uVar7;
      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);
    } while ((uVar5 <= uVar10) &&
            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));
    param_2 = param_10 + param_6;
    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;
  } while( true );
}


addiu sp,sp,-0x20
andi t0,a3,0x1
lw t8,0x30(sp)
lw t9,0x34(sp)
lw v0,0x40(sp)
lw v1,0x44(sp)
sw s1,0x4(sp)
sw s0,0x0(sp)
sw s7,0x1c(sp)
sw s6,0x18(sp)
sw s5,0x14(sp)
sw s4,0x10(sp)
sw s3,0xc(sp)
sw s2,0x8(sp)
lw s0,0x38(sp)
beq t0,zero,0x000152f0
_lw s1,0x3c(sp)
or v0,a0,zero
or v1,a1,zero
multu a0,a1
mflo t7
mfhi t6
multu a1,a1
mfhi t4
sll t0,t7,0x1
srl s2,t7,0x1f
sll t1,t6,0x1
mflo t5
or t1,s2,t1
multu a0,a0
addu t0,t4,t0
sltu t3,t0,t4
addu t3,t3,t1
mflo a1
sltu t1,t3,t6
bne t1,zero,0x000152c0
_mfhi a0
bne t3,t6,0x00015088
_mul t2,s0,t5
sltu t1,t0,t7
bne t1,zero,0x000152c4
_addiu t2,a0,0x1
mul t2,s0,t5
multu t5,s1
addu s2,t3,a1
sltu t3,s2,t3
mflo t5
mfhi t4
mul t1,t0,s1
addu s3,t3,a0
multu t8,t5
addu t2,t1,t2
mflo t7
mfhi t6
multu t5,t9
addu t2,t2,t4
mfhi t0
multu t2,t9
mflo t5
mfhi t4
multu t2,t8
mfhi t2
addu a0,t7,t5
addu t3,t6,t4
sltu a1,a0,t7
addu a0,t0,a0
addu a1,a1,t3
sltu t0,a0,t0
addu t0,t0,a1
sltu a1,t0,t4
bne a1,zero,0x000152cc
_mflo t3
bne t0,t4,0x00015114
_addu t4,t0,t3
sltu a0,a0,t5
bne a0,zero,0x000152cc
_nop
addu t4,t0,t3
sltu t0,t4,t0
addu t0,t0,t2
subu t3,s2,t4
subu t2,s3,t0
sltu a0,s2,t3
subu t2,t2,a0
sltu t5,s3,t0
or a0,t2,zero
bne t5,zero,0x00015150
_or a1,t3,zero
bne t0,s3,0x00015164
_sll t0,a2,0x1f
sltu s2,s2,t4
beq s2,zero,0x00015164
_nop
addu a1,t3,t9
addu a0,t2,t8
sltu t3,a1,t3
addu a0,t3,a0
sll t0,a2,0x1f
srl a3,a3,0x1
or a3,t0,a3
andi t0,a3,0x1
beq t0,zero,0x000152f0
_srl a2,a2,0x1
multu v0,a1
mfhi t0
mflo t1
multu a0,v1
mflo t3
mfhi t2
multu v1,a1
mfhi t6
addu t5,t3,t1
addu s3,t2,t0
sltu s2,t5,t3
addu s2,s2,s3
mflo t7
multu v0,a0
addu t2,t6,t5
sltu t4,t2,t6
addu s2,t4,s2
mflo s5
sltu t3,s2,t0
bne t3,zero,0x000152e4
_mfhi s4
bne s2,t0,0x000151e4
_mul t0,s0,t7
sltu t0,t2,t1
bne t0,zero,0x000152e8
_addiu t1,s4,0x1
mul t0,s0,t7
multu t7,s1
addu t6,s2,s5
sltu s2,t6,s2
mflo t5
mfhi t4
mul v0,t2,s1
addu s2,s2,s4
multu t8,t5
addu t0,v0,t0
mflo s7
mfhi s6
multu t5,t9
addu v1,t0,t4
mfhi t0
multu v1,t9
mflo t5
mfhi t4
multu t8,v1
mflo s5
addu v0,s7,t5
addu t2,s6,t4
sltu t1,v0,s7
addu v0,t0,v0
addu t1,t1,t2
sltu t0,v0,t0
addu t0,t0,t1
sltu v1,t0,t4
bne v1,zero,0x000152d8
_mfhi s4
bne t0,t4,0x00015270
_addu t3,t0,s5
sltu v0,v0,t5
bne v0,zero,0x000152d8
_nop
addu t3,t0,s5
sltu t0,t3,t0
addu t0,t0,s4
subu t2,t6,t3
subu t1,s2,t0
sltu v0,t6,t2
subu t1,t1,v0
sltu t4,s2,t0
or v0,t1,zero
bne t4,zero,0x000152ac
_or v1,t2,zero
bne t0,s2,0x0001502c
_multu a0,a1
sltu t6,t6,t3
beq t6,zero,0x00015030
_mflo t7
addu v1,t2,t9
addu v0,t1,t8
sltu t2,v1,t2
b 0x00015028
_addu v0,t2,v0
addiu t2,a0,0x1
b 0x00015084
_or a0,t2,zero
addiu a1,t2,0x1
b 0x00015110
_or t2,a1,zero
addiu v1,s4,0x1
b 0x0001526c
_or s4,v1,zero
addiu t1,s4,0x1
b 0x000151e0
_or s4,t1,zero
or t0,a2,a3
bne t0,zero,0x0001502c
_multu a0,a1
lw s7,0x1c(sp)
lw s6,0x18(sp)
lw s5,0x14(sp)
lw s4,0x10(sp)
lw s3,0xc(sp)
lw s2,0x8(sp)
lw s1,0x4(sp)
lw s0,0x0(sp)
jr ra
_addiu sp,sp,0x20
(translation_unit "/* WARNING: Removing unreachable block (ram,0x000151d4) */\n/* WARNING: Removing unreachable block (ram,0x00015078) */\n/* WARNING: Removing unreachable block (ram,0x00015104) */\n/* WARNING: Removing unreachable block (ram,0x00015260) */\n\nvoid FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}\n\n" comment comment comment comment (function_definition "void FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" ( (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) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint param_8" type_identifier identifier) , (parameter_declaration "uint param_9" type_identifier identifier) , (parameter_declaration "uint param_10" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (expression_statement "uVar5 = param_9;" (assignment_expression "uVar5 = param_9" identifier = identifier) ;) (expression_statement "uVar6 = param_1;" (assignment_expression "uVar6 = param_1" identifier = identifier) ;) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" identifier = identifier) ;) (if_statement "if ((param_4 & 1) == 0) goto LAB_000152f0;" if (parenthesized_expression "((param_4 & 1) == 0)" ( (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000152f0;" goto statement_identifier ;)) (do_statement "do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );" do (compound_statement "{\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  }" { (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "param_10 = param_2;" (assignment_expression "param_10 = param_2" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));" do (compound_statement "{\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    }" { (while_statement "while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" { (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar11 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar11 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = uVar11 + (uint)uVar1 * 2;" (assignment_expression "uVar5 = uVar11 + (uint)uVar1 * 2" identifier = (binary_expression "uVar11 + (uint)uVar1 * 2" identifier + (binary_expression "(uint)uVar1 * 2" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);" (assignment_expression "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" identifier = (binary_expression "(uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (call_expression "(uint)(uVar5 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar11)" ( (binary_expression "uVar5 < uVar11" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" ( (binary_expression "(uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1" (binary_expression "(uint)uVar1 >> 0x1f" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar1 >> 0x20) << 1" (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (if_statement "if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }" if (parenthesized_expression "(CONCAT44(uVar11,uVar5) < uVar1)" ( (binary_expression "CONCAT44(uVar11,uVar5) < uVar1" (call_expression "CONCAT44(uVar11,uVar5)" identifier (argument_list "(uVar11,uVar5)" ( identifier , identifier ))) < identifier) )) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8" identifier = (binary_expression "(uVar2 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_8" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" identifier = (binary_expression "uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" identifier + (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6)" ( (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar10 = (uint)(uVar9 < uVar11) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar11) + iVar12" identifier = (binary_expression "(uint)(uVar9 < uVar11) + iVar12" (call_expression "(uint)(uVar9 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);" (assignment_expression "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" identifier = (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2" (binary_expression "uVar5 * param_8" identifier * identifier) + (binary_expression "param_7 * (int)uVar2" identifier * (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;" (assignment_expression "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_5" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" identifier = (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff)" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar1 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar1 >> 0x20)" identifier = (call_expression "(uint)(uVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }" if (parenthesized_expression "(uVar1 < uVar2)" ( (binary_expression "uVar1 < uVar2" identifier < identifier) )) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar8 = uVar5 + (int)lVar3;" (assignment_expression "uVar8 = uVar5 + (int)lVar3" identifier = (binary_expression "uVar5 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (uint)(uVar8 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar8 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar8 < uVar5) + iVar12" (call_expression "(uint)(uVar8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar7 = uVar9 - uVar8;" (assignment_expression "uVar7 = uVar9 - uVar8" identifier = (binary_expression "uVar9 - uVar8" identifier - identifier)) ;) (expression_statement "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);" (assignment_expression "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7)" identifier = (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < uVar7)" (parenthesized_expression "(uVar10 - uVar5)" ( (binary_expression "uVar10 - uVar5" identifier - identifier) )) - (call_expression "(uint)(uVar9 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar7)" ( (binary_expression "uVar9 < uVar7" identifier < identifier) ))))) ;) (if_statement "if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" if (parenthesized_expression "((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))))" ( (binary_expression "(uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" (parenthesized_expression "(uVar10 < uVar5)" ( (binary_expression "uVar10 < uVar5" identifier < identifier) )) || (parenthesized_expression "((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" ( (parenthesized_expression "(uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))" ( (comma_expression "uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)" (assignment_expression "uVar11 = uVar7" identifier = identifier) , (binary_expression "uVar5 == uVar10 && (uVar9 < uVar8)" (binary_expression "uVar5 == uVar10" identifier == identifier) && (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )))) )) ))) )) (compound_statement "{\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" { (expression_statement "uVar11 = uVar7 + param_6;" (assignment_expression "uVar11 = uVar7 + param_6" identifier = (binary_expression "uVar7 + param_6" identifier + identifier)) ;) (expression_statement "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;" (assignment_expression "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5" identifier = (binary_expression "(uint)(uVar11 < uVar7) + uVar6 + param_5" (binary_expression "(uint)(uVar11 < uVar7) + uVar6" (call_expression "(uint)(uVar11 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar7)" ( (binary_expression "uVar11 < uVar7" identifier < identifier) ))) + identifier) + identifier)) ;) })) (expression_statement "uVar9 = param_4 >> 1;" (assignment_expression "uVar9 = param_4 >> 1" identifier = (binary_expression "param_4 >> 1" identifier >> number_literal)) ;) (expression_statement "param_4 = param_3 << 0x1f | uVar9;" (assignment_expression "param_4 = param_3 << 0x1f | uVar9" identifier = (binary_expression "param_3 << 0x1f | uVar9" (binary_expression "param_3 << 0x1f" identifier << number_literal) | identifier)) ;) (expression_statement "param_3 = param_3 >> 1;" (assignment_expression "param_3 = param_3 >> 1" identifier = (binary_expression "param_3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" identifier = identifier) ;) (if_statement "if ((uVar9 & 1) != 0) break;" if (parenthesized_expression "((uVar9 & 1) != 0)" ( (binary_expression "(uVar9 & 1) != 0" (parenthesized_expression "(uVar9 & 1)" ( (binary_expression "uVar9 & 1" identifier & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000152f0:\n        param_1 = uVar5;" statement_identifier : (expression_statement "param_1 = uVar5;" (assignment_expression "param_1 = uVar5" identifier = identifier) ;)) (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (if_statement "if (param_3 == 0 && param_4 == 0) {\n          return;\n        }" if (parenthesized_expression "(param_3 == 0 && param_4 == 0)" ( (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "param_4 == 0" identifier == number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)param_10 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" identifier = (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) + (binary_expression "(ulonglong)uVar6 * (ulonglong)param_10" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_10" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }" if (parenthesized_expression "(uVar2 < (ulonglong)param_1 * (ulonglong)uVar11)" ( (binary_expression "uVar2 < (ulonglong)param_1 * (ulonglong)uVar11" identifier < (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) )) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8" identifier = (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_8" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" identifier = (binary_expression "uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" identifier + (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6)" ( (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar10 = (uint)(uVar9 < uVar5) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar9 < uVar5) + iVar12" (call_expression "(uint)(uVar9 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar5)" ( (binary_expression "uVar9 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);" (assignment_expression "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" identifier = (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1" (binary_expression "(int)uVar2 * param_8" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) * identifier) + (binary_expression "param_7 * (int)uVar1" identifier * (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;" (assignment_expression "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5" identifier = (binary_expression "(ulonglong)param_5 * (ulonglong)uVar5" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" identifier = (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff)" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }" if (parenthesized_expression "(uVar2 < uVar1)" ( (binary_expression "uVar2 < uVar1" identifier < identifier) )) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = uVar5 + (int)lVar3;" (assignment_expression "uVar7 = uVar5 + (int)lVar3" identifier = (binary_expression "uVar5 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (uint)(uVar7 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar7 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar7 < uVar5) + iVar12" (call_expression "(uint)(uVar7 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "param_10 = uVar9 - uVar7;" (assignment_expression "param_10 = uVar9 - uVar7" identifier = (binary_expression "uVar9 - uVar7" identifier - identifier)) ;) (expression_statement "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);" (assignment_expression "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10)" identifier = (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < param_10)" (parenthesized_expression "(uVar10 - uVar5)" ( (binary_expression "uVar10 - uVar5" identifier - identifier) )) - (call_expression "(uint)(uVar9 < param_10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < param_10)" ( (binary_expression "uVar9 < param_10" identifier < identifier) ))))) ;) }) while (parenthesized_expression "((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))))" ( (binary_expression "(uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" (parenthesized_expression "(uVar5 <= uVar10)" ( (binary_expression "uVar5 <= uVar10" identifier <= identifier) )) && (parenthesized_expression "((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" ( (parenthesized_expression "(uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))" ( (comma_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) , (binary_expression "uVar5 != uVar10 || (uVar7 <= uVar9)" (binary_expression "uVar5 != uVar10" identifier != identifier) || (parenthesized_expression "(uVar7 <= uVar9)" ( (binary_expression "uVar7 <= uVar9" identifier <= identifier) )))) )) ))) )) ;) (expression_statement "param_2 = param_10 + param_6;" (assignment_expression "param_2 = param_10 + param_6" identifier = (binary_expression "param_10 + param_6" identifier + identifier)) ;) (expression_statement "param_1 = (uint)(param_2 < param_10) + param_1 + param_5;" (assignment_expression "param_1 = (uint)(param_2 < param_10) + param_1 + param_5" identifier = (binary_expression "(uint)(param_2 < param_10) + param_1 + param_5" (binary_expression "(uint)(param_2 < param_10) + param_1" (call_expression "(uint)(param_2 < param_10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_10)" ( (binary_expression "param_2 < param_10" identifier < identifier) ))) + identifier) + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x000151d4) */\n/* WARNING: Removing unreachable block (ram,0x00015078) */\n/* WARNING: Removing unreachable block (ram,0x00015104) */\n/* WARNING: Removing unreachable block (ram,0x00015260) */\n\nuintmax_t powm(uintmax_t b,uintmax_t e,uintmax_t n,uintmax_t ni,uintmax_t one)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  undefined4 in_a0;\n  undefined4 in_a1;\n  uint in_a2;\n  uint in_a3;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  \n  uVar2 = CONCAT44(in_a0,in_a1);\n  uVar1 = uVar2;\n  if ((in_a3 & 1) == 0) goto LAB_000152f0;\n  do {\n    n = uVar1;\n    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n    do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );\n    uVar1 = b + n;\n  } while( true );\n}\n\n" comment comment comment comment (function_definition "uintmax_t powm(uintmax_t b,uintmax_t e,uintmax_t n,uintmax_t ni,uintmax_t one)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  undefined4 in_a0;\n  undefined4 in_a1;\n  uint in_a2;\n  uint in_a3;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  \n  uVar2 = CONCAT44(in_a0,in_a1);\n  uVar1 = uVar2;\n  if ((in_a3 & 1) == 0) goto LAB_000152f0;\n  do {\n    n = uVar1;\n    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n    do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );\n    uVar1 = b + n;\n  } while( true );\n}" type_identifier (function_declarator "powm(uintmax_t b,uintmax_t e,uintmax_t n,uintmax_t ni,uintmax_t one)" identifier (parameter_list "(uintmax_t b,uintmax_t e,uintmax_t n,uintmax_t ni,uintmax_t one)" ( (parameter_declaration "uintmax_t b" type_identifier identifier) , (parameter_declaration "uintmax_t e" type_identifier identifier) , (parameter_declaration "uintmax_t n" type_identifier identifier) , (parameter_declaration "uintmax_t ni" type_identifier identifier) , (parameter_declaration "uintmax_t one" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  ulonglong uVar5;\n  undefined4 in_a0;\n  undefined4 in_a1;\n  uint in_a2;\n  uint in_a3;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  \n  uVar2 = CONCAT44(in_a0,in_a1);\n  uVar1 = uVar2;\n  if ((in_a3 & 1) == 0) goto LAB_000152f0;\n  do {\n    n = uVar1;\n    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n    do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );\n    uVar1 = b + n;\n  } while( true );\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "ulonglong uVar5;" type_identifier identifier ;) (declaration "undefined4 in_a0;" type_identifier identifier ;) (declaration "undefined4 in_a1;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (expression_statement "uVar2 = CONCAT44(in_a0,in_a1);" (assignment_expression "uVar2 = CONCAT44(in_a0,in_a1)" identifier = (call_expression "CONCAT44(in_a0,in_a1)" identifier (argument_list "(in_a0,in_a1)" ( identifier , identifier )))) ;) (expression_statement "uVar1 = uVar2;" (assignment_expression "uVar1 = uVar2" identifier = identifier) ;) (if_statement "if ((in_a3 & 1) == 0) goto LAB_000152f0;" if (parenthesized_expression "((in_a3 & 1) == 0)" ( (binary_expression "(in_a3 & 1) == 0" (parenthesized_expression "(in_a3 & 1)" ( (binary_expression "in_a3 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000152f0;" goto statement_identifier ;)) (do_statement "do {\n    n = uVar1;\n    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n    do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );\n    uVar1 = b + n;\n  } while( true );" do (compound_statement "{\n    n = uVar1;\n    uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n    do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );\n    uVar1 = b + n;\n  }" { (expression_statement "n = uVar1;" (assignment_expression "n = uVar1" identifier = identifier) ;) (expression_statement "uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);" (assignment_expression "uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff)" identifier = (binary_expression "(uVar2 >> 0x20) * (uVar2 & 0xffffffff)" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    } while ((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            );" do (compound_statement "{\n      while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }\n      uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);\n      uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);\n      lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);\n      uVar9 = (uint)(uVar5 >> 0x20);\n      if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);\n      uVar10 = uVar9 + (int)lVar3;\n      uVar8 = (uint)(uVar10 < uVar9) + iVar11;\n      uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);\n      uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);\n      lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;\n      iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n      uVar9 = (uint)(uVar1 >> 0x20);\n      if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }\n      uVar7 = uVar9 + (int)lVar3;\n      uVar9 = (uint)(uVar7 < uVar9) + iVar11;\n      n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);\n    }" { (while_statement "while( true ) {\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar9 = (uint)(n >> 0x20);\n        uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);\n        uVar10 = (uint)(uVar2 >> 0x20);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar6 = uVar10 + (uint)uVar1 * 2;\n        uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);\n        uVar8 = uVar10 + (int)lVar3;\n        uVar10 = (uint)(uVar8 < uVar10) + iVar11;\n        uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);\n        lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;\n        iVar11 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);\n        uVar6 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }\n        uVar7 = uVar6 + (int)lVar3;\n        uVar6 = (uint)(uVar7 < uVar6) + iVar11;\n        uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);\n        if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }\n        uVar6 = (uint)(uVar2 >> 0x20);\n        uVar10 = in_a3 >> 1;\n        in_a3 = in_a2 << 0x1f | uVar10;\n        in_a2 = in_a2 >> 1;\n        if ((uVar10 & 1) != 0) break;\nLAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);\n        if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }\n      }" { (expression_statement "uVar6 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar6 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = (uint)(n >> 0x20);" (assignment_expression "uVar9 = (uint)(n >> 0x20)" identifier = (call_expression "(uint)(n >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(n >> 0x20)" ( (binary_expression "n >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff);" (assignment_expression "uVar2 = (uVar2 & 0xffffffff) * (uVar2 & 0xffffffff)" identifier = (binary_expression "(uVar2 & 0xffffffff) * (uVar2 & 0xffffffff)" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar10 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar10 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6;" (assignment_expression "lVar3 = (ulonglong)uVar6 * (ulonglong)uVar6" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar6 = uVar10 + (uint)uVar1 * 2;" (assignment_expression "uVar6 = uVar10 + (uint)uVar1 * 2" identifier = (binary_expression "uVar10 + (uint)uVar1 * 2" identifier + (binary_expression "(uint)uVar1 * 2" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);" (assignment_expression "uVar10 = (uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" identifier = (binary_expression "(uint)(uVar6 < uVar10) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (call_expression "(uint)(uVar6 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar10)" ( (binary_expression "uVar6 < uVar10" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" ( (binary_expression "(uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1" (binary_expression "(uint)uVar1 >> 0x1f" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar1 >> 0x20) << 1" (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (if_statement "if (CONCAT44(uVar10,uVar6) < uVar1) {\n          iVar11 = iVar11 + 1;\n        }" if (parenthesized_expression "(CONCAT44(uVar10,uVar6) < uVar1)" ( (binary_expression "CONCAT44(uVar10,uVar6) < uVar1" (call_expression "CONCAT44(uVar10,uVar6)" identifier (argument_list "(uVar10,uVar6)" ( identifier , identifier ))) < identifier) )) (compound_statement "{\n          iVar11 = iVar11 + 1;\n        }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff);" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) * (e & 0xffffffff)" identifier = (binary_expression "(uVar2 & 0xffffffff) * (e & 0xffffffff)" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(e & 0xffffffff)" ( (binary_expression "e & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar8 = uVar10 + (int)lVar3;" (assignment_expression "uVar8 = uVar10 + (int)lVar3" identifier = (binary_expression "uVar10 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar10 = (uint)(uVar8 < uVar10) + iVar11;" (assignment_expression "uVar10 = (uint)(uVar8 < uVar10) + iVar11" identifier = (binary_expression "(uint)(uVar8 < uVar10) + iVar11" (call_expression "(uint)(uVar8 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar10)" ( (binary_expression "uVar8 < uVar10" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20);" (assignment_expression "uVar6 = uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20)" identifier = (binary_expression "uVar6 * e._4_4_ + e._0_4_ * (int)uVar2 + (int)(uVar1 >> 0x20)" (binary_expression "uVar6 * e._4_4_ + e._0_4_ * (int)uVar2" (binary_expression "uVar6 * e._4_4_" identifier * (field_expression "e._4_4_" identifier . field_identifier)) + (binary_expression "e._0_4_ * (int)uVar2" (field_expression "e._0_4_" identifier . field_identifier) * (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar2 = (ulonglong)uVar6 * (b & 0xffffffff);" (assignment_expression "uVar2 = (ulonglong)uVar6 * (b & 0xffffffff)" identifier = (binary_expression "(ulonglong)uVar6 * (b & 0xffffffff)" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(b & 0xffffffff)" ( (binary_expression "b & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_;" (assignment_expression "lVar3 = (ulonglong)uVar6 * (ulonglong)b._0_4_" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)b._0_4_" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)b._0_4_" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "b._0_4_" identifier . field_identifier)))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);" (assignment_expression "uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" identifier = (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar2" (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff)" (cast_expression "(ulonglong)b._0_4_" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "b._0_4_" identifier . field_identifier)) * (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" ( (binary_expression "(uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20" (binary_expression "(uVar1 & 0xffffffff) * (b & 0xffffffff)" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(b & 0xffffffff)" ( (binary_expression "b & 0xffffffff" identifier & number_literal) ))) >> number_literal) )))) ;) (expression_statement "uVar6 = (uint)(uVar1 >> 0x20);" (assignment_expression "uVar6 = (uint)(uVar1 >> 0x20)" identifier = (call_expression "(uint)(uVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar1 < uVar2) {\n          iVar11 = iVar11 + 1;\n        }" if (parenthesized_expression "(uVar1 < uVar2)" ( (binary_expression "uVar1 < uVar2" identifier < identifier) )) (compound_statement "{\n          iVar11 = iVar11 + 1;\n        }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = uVar6 + (int)lVar3;" (assignment_expression "uVar7 = uVar6 + (int)lVar3" identifier = (binary_expression "uVar6 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar6 = (uint)(uVar7 < uVar6) + iVar11;" (assignment_expression "uVar6 = (uint)(uVar7 < uVar6) + iVar11" identifier = (binary_expression "(uint)(uVar7 < uVar6) + iVar11" (call_expression "(uint)(uVar7 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar6)" ( (binary_expression "uVar7 < uVar6" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7);" (assignment_expression "uVar2 = CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7)" identifier = (call_expression "CONCAT44((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7)" identifier (argument_list "((uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7),uVar8 - uVar7)" ( (binary_expression "(uVar10 - uVar6) - (uint)(uVar8 < uVar8 - uVar7)" (parenthesized_expression "(uVar10 - uVar6)" ( (binary_expression "uVar10 - uVar6" identifier - identifier) )) - (call_expression "(uint)(uVar8 < uVar8 - uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar8 - uVar7)" ( (binary_expression "uVar8 < uVar8 - uVar7" identifier < (binary_expression "uVar8 - uVar7" identifier - identifier)) )))) , (binary_expression "uVar8 - uVar7" identifier - identifier) )))) ;) (if_statement "if ((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))) {\n          uVar2 = b + uVar2;\n        }" if (parenthesized_expression "((uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7))))" ( (binary_expression "(uVar10 < uVar6) || ((uVar6 == uVar10 && (uVar8 < uVar7)))" (parenthesized_expression "(uVar10 < uVar6)" ( (binary_expression "uVar10 < uVar6" identifier < identifier) )) || (parenthesized_expression "((uVar6 == uVar10 && (uVar8 < uVar7)))" ( (parenthesized_expression "(uVar6 == uVar10 && (uVar8 < uVar7))" ( (binary_expression "uVar6 == uVar10 && (uVar8 < uVar7)" (binary_expression "uVar6 == uVar10" identifier == identifier) && (parenthesized_expression "(uVar8 < uVar7)" ( (binary_expression "uVar8 < uVar7" identifier < identifier) ))) )) ))) )) (compound_statement "{\n          uVar2 = b + uVar2;\n        }" { (expression_statement "uVar2 = b + uVar2;" (assignment_expression "uVar2 = b + uVar2" identifier = (binary_expression "b + uVar2" identifier + identifier)) ;) })) (expression_statement "uVar6 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar6 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar10 = in_a3 >> 1;" (assignment_expression "uVar10 = in_a3 >> 1" identifier = (binary_expression "in_a3 >> 1" identifier >> number_literal)) ;) (expression_statement "in_a3 = in_a2 << 0x1f | uVar10;" (assignment_expression "in_a3 = in_a2 << 0x1f | uVar10" identifier = (binary_expression "in_a2 << 0x1f | uVar10" (binary_expression "in_a2 << 0x1f" identifier << number_literal) | identifier)) ;) (expression_statement "in_a2 = in_a2 >> 1;" (assignment_expression "in_a2 = in_a2 >> 1" identifier = (binary_expression "in_a2 >> 1" identifier >> number_literal)) ;) (if_statement "if ((uVar10 & 1) != 0) break;" if (parenthesized_expression "((uVar10 & 1) != 0)" ( (binary_expression "(uVar10 & 1) != 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000152f0:\n        uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);" statement_identifier : (expression_statement "uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff);" (assignment_expression "uVar1 = (uVar2 >> 0x20) * (uVar2 & 0xffffffff)" identifier = (binary_expression "(uVar2 >> 0x20) * (uVar2 & 0xffffffff)" (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) ;)) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n          return n;\n        }" if (parenthesized_expression "(in_a2 == 0 && in_a3 == 0)" ( (binary_expression "in_a2 == 0 && in_a3 == 0" (binary_expression "in_a2 == 0" identifier == number_literal) && (binary_expression "in_a3 == 0" identifier == number_literal)) )) (compound_statement "{\n          return n;\n        }" { (return_statement "return n;" return identifier ;) })) })) (expression_statement "uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff);" (assignment_expression "uVar1 = (ulonglong)uVar9 * (uVar2 & 0xffffffff)" identifier = (binary_expression "(ulonglong)uVar9 * (uVar2 & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff);" (assignment_expression "uVar4 = (n & 0xffffffff) * (uVar2 & 0xffffffff)" identifier = (binary_expression "(n & 0xffffffff) * (uVar2 & 0xffffffff)" (parenthesized_expression "(n & 0xffffffff)" ( (binary_expression "n & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6;" (assignment_expression "lVar3 = (ulonglong)uVar9 * (ulonglong)uVar6" identifier = (binary_expression "(ulonglong)uVar9 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20);" (assignment_expression "uVar5 = uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20)" identifier = (binary_expression "uVar1 + (ulonglong)uVar6 * (n & 0xffffffff) + (uVar4 >> 0x20)" (binary_expression "uVar1 + (ulonglong)uVar6 * (n & 0xffffffff)" identifier + (binary_expression "(ulonglong)uVar6 * (n & 0xffffffff)" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(n & 0xffffffff)" ( (binary_expression "n & 0xffffffff" identifier & number_literal) )))) + (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = (uint)(uVar5 >> 0x20);" (assignment_expression "uVar9 = (uint)(uVar5 >> 0x20)" identifier = (call_expression "(uint)(uVar5 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 >> 0x20)" ( (binary_expression "uVar5 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar5 < uVar1) {\n        iVar11 = iVar11 + 1;\n      }" if (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) )) (compound_statement "{\n        iVar11 = iVar11 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff);" (assignment_expression "uVar1 = (uVar4 & 0xffffffff) * (e & 0xffffffff)" identifier = (binary_expression "(uVar4 & 0xffffffff) * (e & 0xffffffff)" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(e & 0xffffffff)" ( (binary_expression "e & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar9 + (int)lVar3;" (assignment_expression "uVar10 = uVar9 + (int)lVar3" identifier = (binary_expression "uVar9 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar8 = (uint)(uVar10 < uVar9) + iVar11;" (assignment_expression "uVar8 = (uint)(uVar10 < uVar9) + iVar11" identifier = (binary_expression "(uint)(uVar10 < uVar9) + iVar11" (call_expression "(uint)(uVar10 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar9)" ( (binary_expression "uVar10 < uVar9" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20);" (assignment_expression "uVar9 = (int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20)" identifier = (binary_expression "(int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4 + (int)(uVar1 >> 0x20)" (binary_expression "(int)uVar5 * e._4_4_ + e._0_4_ * (int)uVar4" (binary_expression "(int)uVar5 * e._4_4_" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) * (field_expression "e._4_4_" identifier . field_identifier)) + (binary_expression "e._0_4_ * (int)uVar4" (field_expression "e._0_4_" identifier . field_identifier) * (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar4 = (ulonglong)uVar9 * (b & 0xffffffff);" (assignment_expression "uVar4 = (ulonglong)uVar9 * (b & 0xffffffff)" identifier = (binary_expression "(ulonglong)uVar9 * (b & 0xffffffff)" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(b & 0xffffffff)" ( (binary_expression "b & 0xffffffff" identifier & number_literal) )))) ;) (expression_statement "lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9;" (assignment_expression "lVar3 = (ulonglong)b._0_4_ * (ulonglong)uVar9" identifier = (binary_expression "(ulonglong)b._0_4_ * (ulonglong)uVar9" (cast_expression "(ulonglong)b._0_4_" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "b._0_4_" identifier . field_identifier)) * (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar11 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar11 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20);" (assignment_expression "uVar1 = (ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" identifier = (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4 +\n              ((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff) + uVar4" (binary_expression "(ulonglong)b._0_4_ * (uVar1 & 0xffffffff)" (cast_expression "(ulonglong)b._0_4_" ( (type_descriptor "ulonglong" type_identifier) ) (field_expression "b._0_4_" identifier . field_identifier)) * (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20)" ( (binary_expression "(uVar1 & 0xffffffff) * (b & 0xffffffff) >> 0x20" (binary_expression "(uVar1 & 0xffffffff) * (b & 0xffffffff)" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (parenthesized_expression "(b & 0xffffffff)" ( (binary_expression "b & 0xffffffff" identifier & number_literal) ))) >> number_literal) )))) ;) (expression_statement "uVar9 = (uint)(uVar1 >> 0x20);" (assignment_expression "uVar9 = (uint)(uVar1 >> 0x20)" identifier = (call_expression "(uint)(uVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar1 < uVar4) {\n        iVar11 = iVar11 + 1;\n      }" if (parenthesized_expression "(uVar1 < uVar4)" ( (binary_expression "uVar1 < uVar4" identifier < identifier) )) (compound_statement "{\n        iVar11 = iVar11 + 1;\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = uVar9 + (int)lVar3;" (assignment_expression "uVar7 = uVar9 + (int)lVar3" identifier = (binary_expression "uVar9 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar9 = (uint)(uVar7 < uVar9) + iVar11;" (assignment_expression "uVar9 = (uint)(uVar7 < uVar9) + iVar11" identifier = (binary_expression "(uint)(uVar7 < uVar9) + iVar11" (call_expression "(uint)(uVar7 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) ))) + identifier)) ;) (expression_statement "n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7);" (assignment_expression "n = CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7)" identifier = (call_expression "CONCAT44((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7)" identifier (argument_list "((uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7),uVar10 - uVar7)" ( (binary_expression "(uVar8 - uVar9) - (uint)(uVar10 < uVar10 - uVar7)" (parenthesized_expression "(uVar8 - uVar9)" ( (binary_expression "uVar8 - uVar9" identifier - identifier) )) - (call_expression "(uint)(uVar10 < uVar10 - uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar10 - uVar7)" ( (binary_expression "uVar10 < uVar10 - uVar7" identifier < (binary_expression "uVar10 - uVar7" identifier - identifier)) )))) , (binary_expression "uVar10 - uVar7" identifier - identifier) )))) ;) }) while (parenthesized_expression "((uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))\n            )" ( (binary_expression "(uVar9 <= uVar8) &&\n            ((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))" (parenthesized_expression "(uVar9 <= uVar8)" ( (binary_expression "uVar9 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "((uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)))" ( (parenthesized_expression "(uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10))" ( (comma_expression "uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff), uVar9 != uVar8 || (uVar7 <= uVar10)" (assignment_expression "uVar1 = (ulonglong)uVar6 * (uVar2 & 0xffffffff)" identifier = (binary_expression "(ulonglong)uVar6 * (uVar2 & 0xffffffff)" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )))) , (binary_expression "uVar9 != uVar8 || (uVar7 <= uVar10)" (binary_expression "uVar9 != uVar8" identifier != identifier) || (parenthesized_expression "(uVar7 <= uVar10)" ( (binary_expression "uVar7 <= uVar10" identifier <= identifier) )))) )) ))) )) ;) (expression_statement "uVar1 = b + n;" (assignment_expression "uVar1 = b + n" identifier = (binary_expression "b + n" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}\n\n" (function_definition "void FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" ( (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) , (parameter_declaration "uint param_5" type_identifier identifier) , (parameter_declaration "uint param_6" type_identifier identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint param_8" type_identifier identifier) , (parameter_declaration "uint param_9" type_identifier identifier) , (parameter_declaration "uint param_10" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "longlong lVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (expression_statement "uVar5 = param_9;" (assignment_expression "uVar5 = param_9" identifier = identifier) ;) (expression_statement "uVar6 = param_1;" (assignment_expression "uVar6 = param_1" identifier = identifier) ;) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" identifier = identifier) ;) (if_statement "if ((param_4 & 1) == 0) goto LAB_000152f0;" if (parenthesized_expression "((param_4 & 1) == 0)" ( (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" ( (binary_expression "param_4 & 1" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000152f0;" goto statement_identifier ;)) (do_statement "do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );" do (compound_statement "{\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  }" { (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "param_10 = param_2;" (assignment_expression "param_10 = param_2" identifier = identifier) ;) (do_statement "do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));" do (compound_statement "{\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    }" { (while_statement "while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" { (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar11 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar11 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = uVar11 + (uint)uVar1 * 2;" (assignment_expression "uVar5 = uVar11 + (uint)uVar1 * 2" identifier = (binary_expression "uVar11 + (uint)uVar1 * 2" identifier + (binary_expression "(uint)uVar1 * 2" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);" (assignment_expression "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" identifier = (binary_expression "(uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (call_expression "(uint)(uVar5 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar11)" ( (binary_expression "uVar5 < uVar11" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" ( (binary_expression "(uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1" (binary_expression "(uint)uVar1 >> 0x1f" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar1 >> 0x20) << 1" (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (if_statement "if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }" if (parenthesized_expression "(CONCAT44(uVar11,uVar5) < uVar1)" ( (binary_expression "CONCAT44(uVar11,uVar5) < uVar1" (call_expression "CONCAT44(uVar11,uVar5)" identifier (argument_list "(uVar11,uVar5)" ( identifier , identifier ))) < identifier) )) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8" identifier = (binary_expression "(uVar2 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar2 & 0xffffffff)" ( (binary_expression "uVar2 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_8" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" identifier = (binary_expression "uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" identifier + (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6)" ( (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar10 = (uint)(uVar9 < uVar11) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar11) + iVar12" identifier = (binary_expression "(uint)(uVar9 < uVar11) + iVar12" (call_expression "(uint)(uVar9 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);" (assignment_expression "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" identifier = (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2" (binary_expression "uVar5 * param_8" identifier * identifier) + (binary_expression "param_7 * (int)uVar2" identifier * (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;" (assignment_expression "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_5" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" identifier = (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff)" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar1 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar1 >> 0x20)" identifier = (call_expression "(uint)(uVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }" if (parenthesized_expression "(uVar1 < uVar2)" ( (binary_expression "uVar1 < uVar2" identifier < identifier) )) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar8 = uVar5 + (int)lVar3;" (assignment_expression "uVar8 = uVar5 + (int)lVar3" identifier = (binary_expression "uVar5 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (uint)(uVar8 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar8 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar8 < uVar5) + iVar12" (call_expression "(uint)(uVar8 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar5)" ( (binary_expression "uVar8 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar7 = uVar9 - uVar8;" (assignment_expression "uVar7 = uVar9 - uVar8" identifier = (binary_expression "uVar9 - uVar8" identifier - identifier)) ;) (expression_statement "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);" (assignment_expression "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7)" identifier = (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < uVar7)" (parenthesized_expression "(uVar10 - uVar5)" ( (binary_expression "uVar10 - uVar5" identifier - identifier) )) - (call_expression "(uint)(uVar9 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar7)" ( (binary_expression "uVar9 < uVar7" identifier < identifier) ))))) ;) (if_statement "if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" if (parenthesized_expression "((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))))" ( (binary_expression "(uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" (parenthesized_expression "(uVar10 < uVar5)" ( (binary_expression "uVar10 < uVar5" identifier < identifier) )) || (parenthesized_expression "((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" ( (parenthesized_expression "(uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))" ( (comma_expression "uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)" (assignment_expression "uVar11 = uVar7" identifier = identifier) , (binary_expression "uVar5 == uVar10 && (uVar9 < uVar8)" (binary_expression "uVar5 == uVar10" identifier == identifier) && (parenthesized_expression "(uVar9 < uVar8)" ( (binary_expression "uVar9 < uVar8" identifier < identifier) )))) )) ))) )) (compound_statement "{\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" { (expression_statement "uVar11 = uVar7 + param_6;" (assignment_expression "uVar11 = uVar7 + param_6" identifier = (binary_expression "uVar7 + param_6" identifier + identifier)) ;) (expression_statement "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;" (assignment_expression "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5" identifier = (binary_expression "(uint)(uVar11 < uVar7) + uVar6 + param_5" (binary_expression "(uint)(uVar11 < uVar7) + uVar6" (call_expression "(uint)(uVar11 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar11 < uVar7)" ( (binary_expression "uVar11 < uVar7" identifier < identifier) ))) + identifier) + identifier)) ;) })) (expression_statement "uVar9 = param_4 >> 1;" (assignment_expression "uVar9 = param_4 >> 1" identifier = (binary_expression "param_4 >> 1" identifier >> number_literal)) ;) (expression_statement "param_4 = param_3 << 0x1f | uVar9;" (assignment_expression "param_4 = param_3 << 0x1f | uVar9" identifier = (binary_expression "param_3 << 0x1f | uVar9" (binary_expression "param_3 << 0x1f" identifier << number_literal) | identifier)) ;) (expression_statement "param_3 = param_3 >> 1;" (assignment_expression "param_3 = param_3 >> 1" identifier = (binary_expression "param_3 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" identifier = identifier) ;) (if_statement "if ((uVar9 & 1) != 0) break;" if (parenthesized_expression "((uVar9 & 1) != 0)" ( (binary_expression "(uVar9 & 1) != 0" (parenthesized_expression "(uVar9 & 1)" ( (binary_expression "uVar9 & 1" identifier & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000152f0:\n        param_1 = uVar5;" statement_identifier : (expression_statement "param_1 = uVar5;" (assignment_expression "param_1 = uVar5" identifier = identifier) ;)) (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (if_statement "if (param_3 == 0 && param_4 == 0) {\n          return;\n        }" if (parenthesized_expression "(param_3 == 0 && param_4 == 0)" ( (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" identifier == number_literal) && (binary_expression "param_4 == 0" identifier == number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) })) (expression_statement "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)param_10 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" ( (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" identifier = (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) + (binary_expression "(ulonglong)uVar6 * (ulonglong)param_10" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_10" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) + (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }" if (parenthesized_expression "(uVar2 < (ulonglong)param_1 * (ulonglong)uVar11)" ( (binary_expression "uVar2 < (ulonglong)param_1 * (ulonglong)uVar11" identifier < (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) )) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8" identifier = (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar1 & 0xffffffff)" ( (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_8" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" identifier = (binary_expression "uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" identifier + (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6)" ( (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar10 = (uint)(uVar9 < uVar5) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar9 < uVar5) + iVar12" (call_expression "(uint)(uVar9 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar5)" ( (binary_expression "uVar9 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);" (assignment_expression "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" identifier = (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1" (binary_expression "(int)uVar2 * param_8" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) * identifier) + (binary_expression "param_7 * (int)uVar1" identifier * (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier))) + (cast_expression "(int)(uVar4 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x20)" ( (binary_expression "uVar4 >> 0x20" identifier >> number_literal) ))))) ;) (expression_statement "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6" identifier = (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;" (assignment_expression "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5" identifier = (binary_expression "(ulonglong)param_5 * (ulonglong)uVar5" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" ( (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" identifier = (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff)" (cast_expression "(ulonglong)param_5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) ))) + identifier) + (parenthesized_expression "((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" ( (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar4 & 0xffffffff)" ( (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) )) * (cast_expression "(ulonglong)param_6" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" identifier = (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) )))) ;) (if_statement "if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }" if (parenthesized_expression "(uVar2 < uVar1)" ( (binary_expression "uVar2 < uVar1" identifier < identifier) )) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = uVar5 + (int)lVar3;" (assignment_expression "uVar7 = uVar5 + (int)lVar3" identifier = (binary_expression "uVar5 + (int)lVar3" identifier + (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (uint)(uVar7 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar7 < uVar5) + iVar12" identifier = (binary_expression "(uint)(uVar7 < uVar5) + iVar12" (call_expression "(uint)(uVar7 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < uVar5)" ( (binary_expression "uVar7 < uVar5" identifier < identifier) ))) + identifier)) ;) (expression_statement "param_10 = uVar9 - uVar7;" (assignment_expression "param_10 = uVar9 - uVar7" identifier = (binary_expression "uVar9 - uVar7" identifier - identifier)) ;) (expression_statement "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);" (assignment_expression "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10)" identifier = (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < param_10)" (parenthesized_expression "(uVar10 - uVar5)" ( (binary_expression "uVar10 - uVar5" identifier - identifier) )) - (call_expression "(uint)(uVar9 < param_10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < param_10)" ( (binary_expression "uVar9 < param_10" identifier < identifier) ))))) ;) }) while (parenthesized_expression "((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))))" ( (binary_expression "(uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" (parenthesized_expression "(uVar5 <= uVar10)" ( (binary_expression "uVar5 <= uVar10" identifier <= identifier) )) && (parenthesized_expression "((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" ( (parenthesized_expression "(uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))" ( (comma_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" identifier = (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) , (binary_expression "uVar5 != uVar10 || (uVar7 <= uVar9)" (binary_expression "uVar5 != uVar10" identifier != identifier) || (parenthesized_expression "(uVar7 <= uVar9)" ( (binary_expression "uVar7 <= uVar9" identifier <= identifier) )))) )) ))) )) ;) (expression_statement "param_2 = param_10 + param_6;" (assignment_expression "param_2 = param_10 + param_6" identifier = (binary_expression "param_10 + param_6" identifier + identifier)) ;) (expression_statement "param_1 = (uint)(param_2 < param_10) + param_1 + param_5;" (assignment_expression "param_1 = (uint)(param_2 < param_10) + param_1 + param_5" identifier = (binary_expression "(uint)(param_2 < param_10) + param_1 + param_5" (binary_expression "(uint)(param_2 < param_10) + param_1" (call_expression "(uint)(param_2 < param_10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2 < param_10)" ( (binary_expression "param_2 < param_10" identifier < identifier) ))) + identifier) + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(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) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (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 ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) << LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT & LIT) ))) + IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (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 + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (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 = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT))) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT & LIT) ))) + IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (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 + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT)) ;) (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) ))))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) , (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) )))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00014fdc(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" (identifier "FUN_00014fdc") (parameter_list "(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,\n                 int param_7,uint param_8,uint param_9,uint param_10)" (( "(") (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")) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) (, ",") (parameter_declaration "uint param_6" (type_identifier "uint") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint param_8" (type_identifier "uint") (identifier "param_8")) (, ",") (parameter_declaration "uint param_9" (type_identifier "uint") (identifier "param_9")) (, ",") (parameter_declaration "uint param_10" (type_identifier "uint") (identifier "param_10")) () ")"))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  longlong lVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  \n  uVar5 = param_9;\n  uVar6 = param_1;\n  uVar11 = param_2;\n  if ((param_4 & 1) == 0) goto LAB_000152f0;\n  do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );\n}" ({ "{") (declaration "ulonglong uVar1;" (type_identifier "ulonglong") (identifier "uVar1") (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "longlong lVar3;" (type_identifier "longlong") (identifier "lVar3") (; ";")) (declaration "ulonglong uVar4;" (type_identifier "ulonglong") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (expression_statement "uVar5 = param_9;" (assignment_expression "uVar5 = param_9" (identifier "uVar5") (= "=") (identifier "param_9")) (; ";")) (expression_statement "uVar6 = param_1;" (assignment_expression "uVar6 = param_1" (identifier "uVar6") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar11 = param_2;" (assignment_expression "uVar11 = param_2" (identifier "uVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((param_4 & 1) == 0) goto LAB_000152f0;" (if "if") (parenthesized_expression "((param_4 & 1) == 0)" (( "(") (binary_expression "(param_4 & 1) == 0" (parenthesized_expression "(param_4 & 1)" (( "(") (binary_expression "param_4 & 1" (identifier "param_4") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000152f0;" (goto "goto") (statement_identifier "LAB_000152f0") (; ";"))) (do_statement "do {\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  } while( true );" (do "do") (compound_statement "{\n    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n    param_10 = param_2;\n    do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));\n    param_2 = param_10 + param_6;\n    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;\n  }" ({ "{") (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) (; ";")) (expression_statement "param_10 = param_2;" (assignment_expression "param_10 = param_2" (identifier "param_10") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    } while ((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));" (do "do") (compound_statement "{\n      while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }\n      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;\n      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);\n      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;\n      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);\n      uVar10 = (uint)(uVar9 < uVar5) + iVar12;\n      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);\n      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;\n      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;\n      iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n      uVar5 = (uint)(uVar2 >> 0x20);\n      if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }\n      uVar7 = uVar5 + (int)lVar3;\n      uVar5 = (uint)(uVar7 < uVar5) + iVar12;\n      param_10 = uVar9 - uVar7;\n      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);\n    }" ({ "{") (while_statement "while( true ) {\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;\n        uVar11 = (uint)(uVar2 >> 0x20);\n        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);\n        uVar5 = uVar11 + (uint)uVar1 * 2;\n        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);\n        if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;\n        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);\n        uVar10 = (uint)(uVar9 < uVar11) + iVar12;\n        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);\n        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;\n        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;\n        iVar12 = (int)((ulonglong)lVar3 >> 0x20);\n        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);\n        uVar5 = (uint)(uVar1 >> 0x20);\n        if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }\n        uVar8 = uVar5 + (int)lVar3;\n        uVar5 = (uint)(uVar8 < uVar5) + iVar12;\n        uVar7 = uVar9 - uVar8;\n        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);\n        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }\n        uVar9 = param_4 >> 1;\n        param_4 = param_3 << 0x1f | uVar9;\n        param_3 = param_3 >> 1;\n        uVar5 = param_1;\n        if ((uVar9 & 1) != 0) break;\nLAB_000152f0:\n        param_1 = uVar5;\n        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;\n        if (param_3 == 0 && param_4 == 0) {\n          return;\n        }\n      }" ({ "{") (expression_statement "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;" (assignment_expression "uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)uVar11 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) (; ";")) (expression_statement "uVar11 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar11 = (uint)(uVar2 >> 0x20)" (identifier "uVar11") (= "=") (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" (identifier "iVar12") (= "=") (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = uVar11 + (uint)uVar1 * 2;" (assignment_expression "uVar5 = uVar11 + (uint)uVar1 * 2" (identifier "uVar5") (= "=") (binary_expression "uVar11 + (uint)uVar1 * 2" (identifier "uVar11") (+ "+") (binary_expression "(uint)uVar1 * 2" (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);" (assignment_expression "uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (identifier "uVar11") (= "=") (binary_expression "(uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (call_expression "(uint)(uVar5 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < uVar11)" (( "(") (binary_expression "uVar5 < uVar11" (identifier "uVar5") (< "<") (identifier "uVar11")) () ")"))) (+ "+") (parenthesized_expression "((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1)" (( "(") (binary_expression "(uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1" (binary_expression "(uint)uVar1 >> 0x1f" (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1")) (>> ">>") (number_literal "0x1f")) (| "|") (binary_expression "(int)(uVar1 >> 0x20) << 1" (cast_expression "(int)(uVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "1"))) () ")")))) (; ";")) (if_statement "if (CONCAT44(uVar11,uVar5) < uVar1) {\n          iVar12 = iVar12 + 1;\n        }" (if "if") (parenthesized_expression "(CONCAT44(uVar11,uVar5) < uVar1)" (( "(") (binary_expression "CONCAT44(uVar11,uVar5) < uVar1" (call_expression "CONCAT44(uVar11,uVar5)" (identifier "CONCAT44") (argument_list "(uVar11,uVar5)" (( "(") (identifier "uVar11") (, ",") (identifier "uVar5") () ")"))) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" ({ "{") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8" (identifier "uVar1") (= "=") (binary_expression "(uVar2 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar2 & 0xffffffff)" (( "(") (binary_expression "uVar2 & 0xffffffff" (identifier "uVar2") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (cast_expression "(ulonglong)param_8" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_8")))) (; ";")) (expression_statement "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" (identifier "uVar9") (= "=") (binary_expression "uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6)" (identifier "uVar11") (+ "+") (cast_expression "(int)((ulonglong)uVar6 * (ulonglong)uVar6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar6 * (ulonglong)uVar6)" (( "(") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar6" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6"))) () ")"))))) (; ";")) (expression_statement "uVar10 = (uint)(uVar9 < uVar11) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar11) + iVar12" (identifier "uVar10") (= "=") (binary_expression "(uint)(uVar9 < uVar11) + iVar12" (call_expression "(uint)(uVar9 < uVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < uVar11)" (( "(") (binary_expression "uVar9 < uVar11" (identifier "uVar9") (< "<") (identifier "uVar11")) () ")"))) (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);" (assignment_expression "uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" (identifier "uVar5") (= "=") (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20)" (binary_expression "uVar5 * param_8 + param_7 * (int)uVar2" (binary_expression "uVar5 * param_8" (identifier "uVar5") (* "*") (identifier "param_8")) (+ "+") (binary_expression "param_7 * (int)uVar2" (identifier "param_7") (* "*") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")))) (+ "+") (cast_expression "(int)(uVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar2 = (ulonglong)uVar5 * (ulonglong)param_6" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6")))) (; ";")) (expression_statement "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;" (assignment_expression "lVar3 = (ulonglong)uVar5 * (ulonglong)param_5" (identifier "lVar3") (= "=") (binary_expression "(ulonglong)uVar5 * (ulonglong)param_5" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (* "*") (cast_expression "(ulonglong)param_5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_5")))) (; ";")) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" (identifier "iVar12") (= "=") (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +\n                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2" (binary_expression "(ulonglong)param_5 * (uVar1 & 0xffffffff)" (cast_expression "(ulonglong)param_5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_5")) (* "*") (parenthesized_expression "(uVar1 & 0xffffffff)" (( "(") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")"))) (+ "+") (identifier "uVar2")) (+ "+") (parenthesized_expression "((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (( "(") (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar1 & 0xffffffff)" (( "(") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar1 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar1 >> 0x20)" (identifier "uVar5") (= "=") (call_expression "(uint)(uVar1 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (uVar1 < uVar2) {\n          iVar12 = iVar12 + 1;\n        }" (if "if") (parenthesized_expression "(uVar1 < uVar2)" (( "(") (binary_expression "uVar1 < uVar2" (identifier "uVar1") (< "<") (identifier "uVar2")) () ")")) (compound_statement "{\n          iVar12 = iVar12 + 1;\n        }" ({ "{") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar8 = uVar5 + (int)lVar3;" (assignment_expression "uVar8 = uVar5 + (int)lVar3" (identifier "uVar8") (= "=") (binary_expression "uVar5 + (int)lVar3" (identifier "uVar5") (+ "+") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar8 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar8 < uVar5) + iVar12" (identifier "uVar5") (= "=") (binary_expression "(uint)(uVar8 < uVar5) + iVar12" (call_expression "(uint)(uVar8 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar5)" (( "(") (binary_expression "uVar8 < uVar5" (identifier "uVar8") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "uVar7 = uVar9 - uVar8;" (assignment_expression "uVar7 = uVar9 - uVar8" (identifier "uVar7") (= "=") (binary_expression "uVar9 - uVar8" (identifier "uVar9") (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);" (assignment_expression "uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7)" (identifier "uVar6") (= "=") (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < uVar7)" (parenthesized_expression "(uVar10 - uVar5)" (( "(") (binary_expression "uVar10 - uVar5" (identifier "uVar10") (- "-") (identifier "uVar5")) () ")")) (- "-") (call_expression "(uint)(uVar9 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < uVar7)" (( "(") (binary_expression "uVar9 < uVar7" (identifier "uVar9") (< "<") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" (if "if") (parenthesized_expression "((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))))" (( "(") (binary_expression "(uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" (parenthesized_expression "(uVar10 < uVar5)" (( "(") (binary_expression "uVar10 < uVar5" (identifier "uVar10") (< "<") (identifier "uVar5")) () ")")) (|| "||") (parenthesized_expression "((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))" (( "(") (parenthesized_expression "(uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8))" (( "(") (comma_expression "uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)" (assignment_expression "uVar11 = uVar7" (identifier "uVar11") (= "=") (identifier "uVar7")) (, ",") (binary_expression "uVar5 == uVar10 && (uVar9 < uVar8)" (binary_expression "uVar5 == uVar10" (identifier "uVar5") (== "==") (identifier "uVar10")) (&& "&&") (parenthesized_expression "(uVar9 < uVar8)" (( "(") (binary_expression "uVar9 < uVar8" (identifier "uVar9") (< "<") (identifier "uVar8")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n          uVar11 = uVar7 + param_6;\n          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;\n        }" ({ "{") (expression_statement "uVar11 = uVar7 + param_6;" (assignment_expression "uVar11 = uVar7 + param_6" (identifier "uVar11") (= "=") (binary_expression "uVar7 + param_6" (identifier "uVar7") (+ "+") (identifier "param_6"))) (; ";")) (expression_statement "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;" (assignment_expression "uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5" (identifier "uVar6") (= "=") (binary_expression "(uint)(uVar11 < uVar7) + uVar6 + param_5" (binary_expression "(uint)(uVar11 < uVar7) + uVar6" (call_expression "(uint)(uVar11 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar11 < uVar7)" (( "(") (binary_expression "uVar11 < uVar7" (identifier "uVar11") (< "<") (identifier "uVar7")) () ")"))) (+ "+") (identifier "uVar6")) (+ "+") (identifier "param_5"))) (; ";")) (} "}"))) (expression_statement "uVar9 = param_4 >> 1;" (assignment_expression "uVar9 = param_4 >> 1" (identifier "uVar9") (= "=") (binary_expression "param_4 >> 1" (identifier "param_4") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "param_4 = param_3 << 0x1f | uVar9;" (assignment_expression "param_4 = param_3 << 0x1f | uVar9" (identifier "param_4") (= "=") (binary_expression "param_3 << 0x1f | uVar9" (binary_expression "param_3 << 0x1f" (identifier "param_3") (<< "<<") (number_literal "0x1f")) (| "|") (identifier "uVar9"))) (; ";")) (expression_statement "param_3 = param_3 >> 1;" (assignment_expression "param_3 = param_3 >> 1" (identifier "param_3") (= "=") (binary_expression "param_3 >> 1" (identifier "param_3") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = param_1;" (assignment_expression "uVar5 = param_1" (identifier "uVar5") (= "=") (identifier "param_1")) (; ";")) (if_statement "if ((uVar9 & 1) != 0) break;" (if "if") (parenthesized_expression "((uVar9 & 1) != 0)" (( "(") (binary_expression "(uVar9 & 1) != 0" (parenthesized_expression "(uVar9 & 1)" (( "(") (binary_expression "uVar9 & 1" (identifier "uVar9") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000152f0:\n        param_1 = uVar5;" (statement_identifier "LAB_000152f0") (: ":") (expression_statement "param_1 = uVar5;" (assignment_expression "param_1 = uVar5" (identifier "param_1") (= "=") (identifier "uVar5")) (; ";"))) (expression_statement "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) (; ";")) (if_statement "if (param_3 == 0 && param_4 == 0) {\n          return;\n        }" (if "if") (parenthesized_expression "(param_3 == 0 && param_4 == 0)" (( "(") (binary_expression "param_3 == 0 && param_4 == 0" (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;" (assignment_expression "uVar1 = (ulonglong)param_10 * (ulonglong)uVar11" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)param_10 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_10" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_10")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) (; ";")) (expression_statement "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" (identifier "iVar12") (= "=") (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20)" (( "(") (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6 >> 0x20" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_1")) (* "*") (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +\n              (uVar1 >> 0x20)" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10" (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_1")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11"))) (+ "+") (binary_expression "(ulonglong)uVar6 * (ulonglong)param_10" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)param_10" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_10")))) (+ "+") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" (identifier "uVar5") (= "=") (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {\n        iVar12 = iVar12 + 1;\n      }" (if "if") (parenthesized_expression "(uVar2 < (ulonglong)param_1 * (ulonglong)uVar11)" (( "(") (binary_expression "uVar2 < (ulonglong)param_1 * (ulonglong)uVar11" (identifier "uVar2") (< "<") (binary_expression "(ulonglong)param_1 * (ulonglong)uVar11" (cast_expression "(ulonglong)param_1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_1")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) () ")")) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" ({ "{") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;" (assignment_expression "uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8" (identifier "uVar4") (= "=") (binary_expression "(uVar1 & 0xffffffff) * (ulonglong)param_8" (parenthesized_expression "(uVar1 & 0xffffffff)" (( "(") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (cast_expression "(ulonglong)param_8" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_8")))) (; ";")) (expression_statement "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);" (assignment_expression "uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" (identifier "uVar9") (= "=") (binary_expression "uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6)" (identifier "uVar5") (+ "+") (cast_expression "(int)((ulonglong)param_1 * (ulonglong)uVar6)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_1 * (ulonglong)uVar6)" (( "(") (binary_expression "(ulonglong)param_1 * (ulonglong)uVar6" (cast_expression "(ulonglong)param_1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_1")) (* "*") (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6"))) () ")"))))) (; ";")) (expression_statement "uVar10 = (uint)(uVar9 < uVar5) + iVar12;" (assignment_expression "uVar10 = (uint)(uVar9 < uVar5) + iVar12" (identifier "uVar10") (= "=") (binary_expression "(uint)(uVar9 < uVar5) + iVar12" (call_expression "(uint)(uVar9 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < uVar5)" (( "(") (binary_expression "uVar9 < uVar5" (identifier "uVar9") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);" (assignment_expression "uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" (identifier "uVar5") (= "=") (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20)" (binary_expression "(int)uVar2 * param_8 + param_7 * (int)uVar1" (binary_expression "(int)uVar2 * param_8" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (* "*") (identifier "param_8")) (+ "+") (binary_expression "param_7 * (int)uVar1" (identifier "param_7") (* "*") (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")))) (+ "+") (cast_expression "(int)(uVar4 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar4 >> 0x20)" (( "(") (binary_expression "uVar4 >> 0x20" (identifier "uVar4") (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;" (assignment_expression "uVar1 = (ulonglong)uVar5 * (ulonglong)param_6" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)uVar5 * (ulonglong)param_6" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6")))) (; ";")) (expression_statement "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;" (assignment_expression "lVar3 = (ulonglong)param_5 * (ulonglong)uVar5" (identifier "lVar3") (= "=") (binary_expression "(ulonglong)param_5 * (ulonglong)uVar5" (cast_expression "(ulonglong)param_5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_5")) (* "*") (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")))) (; ";")) (expression_statement "iVar12 = (int)((ulonglong)lVar3 >> 0x20);" (assignment_expression "iVar12 = (int)((ulonglong)lVar3 >> 0x20)" (identifier "iVar12") (= "=") (cast_expression "(int)((ulonglong)lVar3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar3 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar3 >> 0x20" (cast_expression "(ulonglong)lVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar3")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);" (assignment_expression "uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (identifier "uVar2") (= "=") (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +\n              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1" (binary_expression "(ulonglong)param_5 * (uVar4 & 0xffffffff)" (cast_expression "(ulonglong)param_5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_5")) (* "*") (parenthesized_expression "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")"))) (+ "+") (identifier "uVar1")) (+ "+") (parenthesized_expression "((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20)" (( "(") (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20" (binary_expression "(uVar4 & 0xffffffff) * (ulonglong)param_6" (parenthesized_expression "(uVar4 & 0xffffffff)" (( "(") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) () ")")) (* "*") (cast_expression "(ulonglong)param_6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_6"))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar2 >> 0x20);" (assignment_expression "uVar5 = (uint)(uVar2 >> 0x20)" (identifier "uVar5") (= "=") (call_expression "(uint)(uVar2 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (uVar2 < uVar1) {\n        iVar12 = iVar12 + 1;\n      }" (if "if") (parenthesized_expression "(uVar2 < uVar1)" (( "(") (binary_expression "uVar2 < uVar1" (identifier "uVar2") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n        iVar12 = iVar12 + 1;\n      }" ({ "{") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar5 + (int)lVar3;" (assignment_expression "uVar7 = uVar5 + (int)lVar3" (identifier "uVar7") (= "=") (binary_expression "uVar5 + (int)lVar3" (identifier "uVar5") (+ "+") (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar7 < uVar5) + iVar12;" (assignment_expression "uVar5 = (uint)(uVar7 < uVar5) + iVar12" (identifier "uVar5") (= "=") (binary_expression "(uint)(uVar7 < uVar5) + iVar12" (call_expression "(uint)(uVar7 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < uVar5)" (( "(") (binary_expression "uVar7 < uVar5" (identifier "uVar7") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "param_10 = uVar9 - uVar7;" (assignment_expression "param_10 = uVar9 - uVar7" (identifier "param_10") (= "=") (binary_expression "uVar9 - uVar7" (identifier "uVar9") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);" (assignment_expression "param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10)" (identifier "param_1") (= "=") (binary_expression "(uVar10 - uVar5) - (uint)(uVar9 < param_10)" (parenthesized_expression "(uVar10 - uVar5)" (( "(") (binary_expression "uVar10 - uVar5" (identifier "uVar10") (- "-") (identifier "uVar5")) () ")")) (- "-") (call_expression "(uint)(uVar9 < param_10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < param_10)" (( "(") (binary_expression "uVar9 < param_10" (identifier "uVar9") (< "<") (identifier "param_10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))))" (( "(") (binary_expression "(uVar5 <= uVar10) &&\n            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" (parenthesized_expression "(uVar5 <= uVar10)" (( "(") (binary_expression "uVar5 <= uVar10" (identifier "uVar5") (<= "<=") (identifier "uVar10")) () ")")) (&& "&&") (parenthesized_expression "((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)))" (( "(") (parenthesized_expression "(uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))" (( "(") (comma_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9)" (assignment_expression "uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11" (identifier "uVar1") (= "=") (binary_expression "(ulonglong)uVar6 * (ulonglong)uVar11" (cast_expression "(ulonglong)uVar6" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar6")) (* "*") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")))) (, ",") (binary_expression "uVar5 != uVar10 || (uVar7 <= uVar9)" (binary_expression "uVar5 != uVar10" (identifier "uVar5") (!= "!=") (identifier "uVar10")) (|| "||") (parenthesized_expression "(uVar7 <= uVar9)" (( "(") (binary_expression "uVar7 <= uVar9" (identifier "uVar7") (<= "<=") (identifier "uVar9")) () ")")))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "param_2 = param_10 + param_6;" (assignment_expression "param_2 = param_10 + param_6" (identifier "param_2") (= "=") (binary_expression "param_10 + param_6" (identifier "param_10") (+ "+") (identifier "param_6"))) (; ";")) (expression_statement "param_1 = (uint)(param_2 < param_10) + param_1 + param_5;" (assignment_expression "param_1 = (uint)(param_2 < param_10) + param_1 + param_5" (identifier "param_1") (= "=") (binary_expression "(uint)(param_2 < param_10) + param_1 + param_5" (binary_expression "(uint)(param_2 < param_10) + param_1" (call_expression "(uint)(param_2 < param_10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2 < param_10)" (( "(") (binary_expression "param_2 < param_10" (identifier "param_2") (< "<") (identifier "param_10")) () ")"))) (+ "+") (identifier "param_1")) (+ "+") (identifier "param_5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Removing unreachable block (ram,0x000151d4) */
/* WARNING: Removing unreachable block (ram,0x00015078) */
/* WARNING: Removing unreachable block (ram,0x00015104) */
/* WARNING: Removing unreachable block (ram,0x00015260) */

type_1 function_1(type_1 var_11,type_1 var_9,type_1 var_4,type_1 ni,type_1 one)

{
  type_2 var_7;
  type_2 var_3;
  type_3 lVar3;
  type_2 var_14;
  type_2 var_15;
  type_4 in_a0;
  type_4 in_a1;
  type_5 var_13;
  type_5 var_2;
  type_5 var_6;
  type_5 var_12;
  type_5 var_10;
  type_5 var_16;
  type_5 var_5;
  int var_8;
  
  var_3 = var_1(in_a0,in_a1);
  var_7 = var_3;
  if ((var_2 & 1) == 0) goto LAB_000152f0;
  do {
    var_4 = var_7;
    var_7 = (var_3 >> 0x20) * (var_3 & 0xffffffff);
    do {
      while( true ) {
        var_6 = (type_5)(var_3 >> 0x20);
        var_16 = (type_5)(var_4 >> 0x20);
        var_3 = (var_3 & 0xffffffff) * (var_3 & 0xffffffff);
        var_5 = (type_5)(var_3 >> 0x20);
        lVar3 = (type_2)var_6 * (type_2)var_6;
        var_8 = (int)((type_2)lVar3 >> 0x20);
        var_6 = var_5 + (type_5)var_7 * 2;
        var_5 = (type_5)(var_6 < var_5) + ((type_5)var_7 >> 0x1f | (int)(var_7 >> 0x20) << 1);
        if (var_1(var_5,var_6) < var_7) {
          var_8 = var_8 + 1;
        }
        var_7 = (var_3 & 0xffffffff) * (var_9 & 0xffffffff);
        var_10 = var_5 + (int)lVar3;
        var_5 = (type_5)(var_10 < var_5) + var_8;
        var_6 = var_6 * var_9._4_4_ + var_9._0_4_ * (int)var_3 + (int)(var_7 >> 0x20);
        var_3 = (type_2)var_6 * (var_11 & 0xffffffff);
        lVar3 = (type_2)var_6 * (type_2)var_11._0_4_;
        var_8 = (int)((type_2)lVar3 >> 0x20);
        var_7 = (type_2)var_11._0_4_ * (var_7 & 0xffffffff) + var_3 +
                ((var_7 & 0xffffffff) * (var_11 & 0xffffffff) >> 0x20);
        var_6 = (type_5)(var_7 >> 0x20);
        if (var_7 < var_3) {
          var_8 = var_8 + 1;
        }
        var_12 = var_6 + (int)lVar3;
        var_6 = (type_5)(var_12 < var_6) + var_8;
        var_3 = var_1((var_5 - var_6) - (type_5)(var_10 < var_10 - var_12),var_10 - var_12);
        if ((var_5 < var_6) || ((var_6 == var_5 && (var_10 < var_12)))) {
          var_3 = var_11 + var_3;
        }
        var_6 = (type_5)(var_3 >> 0x20);
        var_5 = var_2 >> 1;
        var_2 = var_13 << 0x1f | var_5;
        var_13 = var_13 >> 1;
        if ((var_5 & 1) != 0) break;
LAB_000152f0:
        var_7 = (var_3 >> 0x20) * (var_3 & 0xffffffff);
        if (var_13 == 0 && var_2 == 0) {
          return var_4;
        }
      }
      var_7 = (type_2)var_16 * (var_3 & 0xffffffff);
      var_14 = (var_4 & 0xffffffff) * (var_3 & 0xffffffff);
      lVar3 = (type_2)var_16 * (type_2)var_6;
      var_8 = (int)((type_2)lVar3 >> 0x20);
      var_15 = var_7 + (type_2)var_6 * (var_4 & 0xffffffff) + (var_14 >> 0x20);
      var_16 = (type_5)(var_15 >> 0x20);
      if (var_15 < var_7) {
        var_8 = var_8 + 1;
      }
      var_7 = (var_14 & 0xffffffff) * (var_9 & 0xffffffff);
      var_5 = var_16 + (int)lVar3;
      var_10 = (type_5)(var_5 < var_16) + var_8;
      var_16 = (int)var_15 * var_9._4_4_ + var_9._0_4_ * (int)var_14 + (int)(var_7 >> 0x20);
      var_14 = (type_2)var_16 * (var_11 & 0xffffffff);
      lVar3 = (type_2)var_11._0_4_ * (type_2)var_16;
      var_8 = (int)((type_2)lVar3 >> 0x20);
      var_7 = (type_2)var_11._0_4_ * (var_7 & 0xffffffff) + var_14 +
              ((var_7 & 0xffffffff) * (var_11 & 0xffffffff) >> 0x20);
      var_16 = (type_5)(var_7 >> 0x20);
      if (var_7 < var_14) {
        var_8 = var_8 + 1;
      }
      var_12 = var_16 + (int)lVar3;
      var_16 = (type_5)(var_12 < var_16) + var_8;
      var_4 = var_1((var_10 - var_16) - (type_5)(var_5 < var_5 - var_12),var_5 - var_12);
    } while ((var_16 <= var_10) &&
            ((var_7 = (type_2)var_6 * (var_3 & 0xffffffff), var_16 != var_10 || (var_12 <= var_5)))
            );
    var_7 = var_11 + var_4;
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) 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)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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 (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (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: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (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: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (identifier)) right: (identifier))))) condition: (parenthesized_expression (true))))))

/* WARNING: Removing unreachable block (ram,0x000151d4) */
/* WARNING: Removing unreachable block (ram,0x00015078) */
/* WARNING: Removing unreachable block (ram,0x00015104) */
/* WARNING: Removing unreachable block (ram,0x00015260) */

void MASKED(uint param_1,uint param_2,uint param_3,uint param_4,uint param_5,uint param_6,
                 int param_7,uint param_8,uint param_9,uint param_10)

{
  ulonglong uVar1;
  ulonglong uVar2;
  longlong lVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  
  uVar5 = param_9;
  uVar6 = param_1;
  uVar11 = param_2;
  if ((param_4 & 1) == 0) goto LAB_000152f0;
  do {
    uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;
    param_10 = param_2;
    do {
      while( true ) {
        uVar2 = (ulonglong)uVar11 * (ulonglong)uVar11;
        uVar11 = (uint)(uVar2 >> 0x20);
        iVar12 = (int)((ulonglong)uVar6 * (ulonglong)uVar6 >> 0x20);
        uVar5 = uVar11 + (uint)uVar1 * 2;
        uVar11 = (uint)(uVar5 < uVar11) + ((uint)uVar1 >> 0x1f | (int)(uVar1 >> 0x20) << 1);
        if (CONCAT44(uVar11,uVar5) < uVar1) {
          iVar12 = iVar12 + 1;
        }
        uVar1 = (uVar2 & 0xffffffff) * (ulonglong)param_8;
        uVar9 = uVar11 + (int)((ulonglong)uVar6 * (ulonglong)uVar6);
        uVar10 = (uint)(uVar9 < uVar11) + iVar12;
        uVar5 = uVar5 * param_8 + param_7 * (int)uVar2 + (int)(uVar1 >> 0x20);
        uVar2 = (ulonglong)uVar5 * (ulonglong)param_6;
        lVar3 = (ulonglong)uVar5 * (ulonglong)param_5;
        iVar12 = (int)((ulonglong)lVar3 >> 0x20);
        uVar1 = (ulonglong)param_5 * (uVar1 & 0xffffffff) + uVar2 +
                ((uVar1 & 0xffffffff) * (ulonglong)param_6 >> 0x20);
        uVar5 = (uint)(uVar1 >> 0x20);
        if (uVar1 < uVar2) {
          iVar12 = iVar12 + 1;
        }
        uVar8 = uVar5 + (int)lVar3;
        uVar5 = (uint)(uVar8 < uVar5) + iVar12;
        uVar7 = uVar9 - uVar8;
        uVar6 = (uVar10 - uVar5) - (uint)(uVar9 < uVar7);
        if ((uVar10 < uVar5) || ((uVar11 = uVar7, uVar5 == uVar10 && (uVar9 < uVar8)))) {
          uVar11 = uVar7 + param_6;
          uVar6 = (uint)(uVar11 < uVar7) + uVar6 + param_5;
        }
        uVar9 = param_4 >> 1;
        param_4 = param_3 << 0x1f | uVar9;
        param_3 = param_3 >> 1;
        uVar5 = param_1;
        if ((uVar9 & 1) != 0) break;
LAB_000152f0:
        param_1 = uVar5;
        uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11;
        if (param_3 == 0 && param_4 == 0) {
          return;
        }
      }
      uVar1 = (ulonglong)param_10 * (ulonglong)uVar11;
      iVar12 = (int)((ulonglong)param_1 * (ulonglong)uVar6 >> 0x20);
      uVar2 = (ulonglong)param_1 * (ulonglong)uVar11 + (ulonglong)uVar6 * (ulonglong)param_10 +
              (uVar1 >> 0x20);
      uVar5 = (uint)(uVar2 >> 0x20);
      if (uVar2 < (ulonglong)param_1 * (ulonglong)uVar11) {
        iVar12 = iVar12 + 1;
      }
      uVar4 = (uVar1 & 0xffffffff) * (ulonglong)param_8;
      uVar9 = uVar5 + (int)((ulonglong)param_1 * (ulonglong)uVar6);
      uVar10 = (uint)(uVar9 < uVar5) + iVar12;
      uVar5 = (int)uVar2 * param_8 + param_7 * (int)uVar1 + (int)(uVar4 >> 0x20);
      uVar1 = (ulonglong)uVar5 * (ulonglong)param_6;
      lVar3 = (ulonglong)param_5 * (ulonglong)uVar5;
      iVar12 = (int)((ulonglong)lVar3 >> 0x20);
      uVar2 = (ulonglong)param_5 * (uVar4 & 0xffffffff) + uVar1 +
              ((uVar4 & 0xffffffff) * (ulonglong)param_6 >> 0x20);
      uVar5 = (uint)(uVar2 >> 0x20);
      if (uVar2 < uVar1) {
        iVar12 = iVar12 + 1;
      }
      uVar7 = uVar5 + (int)lVar3;
      uVar5 = (uint)(uVar7 < uVar5) + iVar12;
      param_10 = uVar9 - uVar7;
      param_1 = (uVar10 - uVar5) - (uint)(uVar9 < param_10);
    } while ((uVar5 <= uVar10) &&
            ((uVar1 = (ulonglong)uVar6 * (ulonglong)uVar11, uVar5 != uVar10 || (uVar7 <= uVar9))));
    param_2 = param_10 + param_6;
    param_1 = (uint)(param_2 < param_10) + param_1 + param_5;
  } while( true );
}

