
/* WARNING: Removing unreachable block (ram,0x00014040) */

uintmax_t mod2(uintmax_t *r1,uintmax_t a1,uintmax_t a0,uintmax_t d1,uintmax_t d0)

{
  bool bVar1;
  ulonglong uVar2;
  ulonglong uVar3;
  ulonglong uVar4;
  uint uVar5;
  uint uVar6;
  uint in_a2;
  uint in_a3;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  int iVar13;
  uint uVar14;
  uint uVar15;
  uint uVar16;
  uintmax_t uVar17;
  
  if (a0 == 0) {
    uVar17 = (*(code *)PTR___assert_fail_00039238)
                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,
                        PTR_LAB_00039108 + 0x50a0);
    return uVar17;
  }
  if (in_a2 == 0 && in_a3 == 0) {
    *(undefined4 *)((int)r1 + 4) = 0;
    *(undefined4 *)r1 = 0;
    return a1;
  }
  iVar13 = 0;
  uVar2 = a0 & 0xff00000000000000;
  uVar4 = a0;
  uVar3 = a0;
  while (uVar2 == 0) {
    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));
    iVar13 = iVar13 + 8;
    uVar2 = uVar4 & 0xff000000000000;
    uVar4 = uVar4 << 8;
  }
  while (-1 < (longlong)uVar4) {
    iVar13 = iVar13 + 1;
    uVar3 = uVar3 << 1;
    uVar4 = uVar3;
  }
  iVar11 = 0;
  uVar6 = in_a2;
  uVar9 = in_a3;
  for (uVar5 = in_a2 & 0xff000000; uVar5 == 0; uVar5 = uVar5 & 0xff000000) {
    uVar15 = uVar9 >> 0x18;
    uVar5 = uVar6 << 8;
    uVar9 = uVar9 << 8;
    uVar6 = uVar15 | uVar5;
    iVar11 = iVar11 + 8;
  }
  for (; -1 < (int)uVar6; uVar6 = uVar5 | uVar6 << 1) {
    uVar5 = uVar9 >> 0x1f;
    uVar9 = uVar9 << 1;
    iVar11 = iVar11 + 1;
  }
  uVar15 = iVar13 - iVar11;
  uVar6 = 0x40 - uVar15;
  uVar16 = d1._0_4_ >> (uVar6 & 0x1f);
  uVar5 = a0._4_4_ << (uVar15 & 0x1f);
  uVar14 = uVar15 & 0x20;
  uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f);
  if (uVar14 != 0) {
    uVar9 = uVar5;
  }
  uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f);
  if ((uVar6 & 0x20) != 0) {
    uVar7 = uVar16;
  }
  if ((uVar6 & 0x20) != 0) {
    uVar16 = 0;
  }
  uVar8 = d1._4_4_ << (uVar15 & 0x1f);
  uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f);
  if (uVar14 != 0) {
    uVar5 = 0;
    uVar6 = uVar8;
  }
  uVar16 = uVar16 | uVar9;
  uVar7 = uVar7 | uVar5;
  if (uVar14 != 0) {
    uVar8 = 0;
  }
  if (0 < (int)uVar15) {
    uVar5 = 0;
    do {
      while( true ) {
        uVar9 = (uint)(a1 >> 0x20);
        uVar14 = (uint)a1;
        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&
           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;
        iVar13 = 1;
        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {
          iVar13 = 0;
        }
        uVar10 = in_a3 - uVar7;
        bVar1 = in_a3 < uVar10;
        in_a3 = uVar10 - iVar13;
        uVar12 = uVar6 << 0x1f;
        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);
        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);
        uVar5 = uVar5 + 1;
        uVar6 = uVar7 << 0x1f | uVar6 >> 1;
        uVar8 = uVar12 | uVar8 >> 1;
        uVar7 = uVar16 << 0x1f | uVar7 >> 1;
        uVar16 = uVar16 >> 1;
        if (uVar15 == uVar5) goto LAB_00013ff8;
      }
      uVar9 = uVar6 << 0x1f;
      uVar5 = uVar5 + 1;
      uVar6 = uVar7 << 0x1f | uVar6 >> 1;
      uVar8 = uVar9 | uVar8 >> 1;
      uVar7 = uVar16 << 0x1f | uVar7 >> 1;
      uVar16 = uVar16 >> 1;
    } while (uVar15 != uVar5);
  }
LAB_00013ff8:
  *(uint *)r1 = in_a2;
  *(uint *)((int)r1 + 4) = in_a3;
  return a1;
}



void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,
                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  if (param_7 == 0 && param_8 == 0) {
    (*(code *)PTR___assert_fail_00039238)
              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);
    return;
  }
  if (param_3 == 0 && param_4 == 0) {
    param_1[1] = 0;
    *param_1 = 0;
    return;
  }
  iVar9 = 0;
  uVar3 = param_7;
  uVar6 = param_8;
  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {
    uVar7 = uVar6 >> 0x18;
    uVar2 = uVar3 << 8;
    uVar6 = uVar6 << 8;
    uVar3 = uVar7 | uVar2;
    iVar9 = iVar9 + 8;
  }
  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {
    uVar2 = uVar6 >> 0x1f;
    uVar6 = uVar6 << 1;
    iVar9 = iVar9 + 1;
  }
  iVar8 = 0;
  uVar3 = param_3;
  uVar6 = param_4;
  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {
    uVar7 = uVar6 >> 0x18;
    uVar2 = uVar3 << 8;
    uVar6 = uVar6 << 8;
    uVar3 = uVar7 | uVar2;
    iVar8 = iVar8 + 8;
  }
  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {
    uVar2 = uVar6 >> 0x1f;
    uVar6 = uVar6 << 1;
    iVar8 = iVar8 + 1;
  }
  uVar7 = iVar9 - iVar8;
  uVar3 = 0x40 - uVar7;
  uVar11 = param_9 >> (uVar3 & 0x1f);
  uVar2 = param_8 << (uVar7 & 0x1f);
  uVar10 = uVar7 & 0x20;
  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);
  if (uVar10 != 0) {
    uVar6 = uVar2;
  }
  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);
  if ((uVar3 & 0x20) != 0) {
    uVar4 = uVar11;
  }
  if ((uVar3 & 0x20) != 0) {
    uVar11 = 0;
  }
  uVar5 = param_10 << (uVar7 & 0x1f);
  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);
  if (uVar10 != 0) {
    uVar2 = 0;
    uVar3 = uVar5;
  }
  uVar11 = uVar11 | uVar6;
  uVar4 = uVar4 | uVar2;
  if (uVar10 != 0) {
    uVar5 = 0;
  }
  if (0 < (int)uVar7) {
    uVar2 = 0;
    do {
      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||
             ((param_3 == uVar11 &&
              (((param_4 == uVar4 && (uVar3 <= param_5)) &&
               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {
        iVar9 = 1;
        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {
          iVar9 = 0;
        }
        uVar6 = param_4 - uVar4;
        bVar1 = param_4 < uVar6;
        uVar12 = param_6 - uVar5;
        param_4 = uVar6 - iVar9;
        uVar10 = uVar3 << 0x1f;
        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);
        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);
        uVar2 = uVar2 + 1;
        uVar3 = uVar4 << 0x1f | uVar3 >> 1;
        uVar5 = uVar10 | uVar5 >> 1;
        uVar4 = uVar11 << 0x1f | uVar4 >> 1;
        uVar11 = uVar11 >> 1;
        param_6 = uVar12;
        if (uVar7 == uVar2) goto LAB_00013ff8;
      }
      uVar6 = uVar3 << 0x1f;
      uVar2 = uVar2 + 1;
      uVar3 = uVar4 << 0x1f | uVar3 >> 1;
      uVar5 = uVar6 | uVar5 >> 1;
      uVar4 = uVar11 << 0x1f | uVar4 >> 1;
      uVar11 = uVar11 >> 1;
    } while (uVar7 != uVar2);
  }
LAB_00013ff8:
  *param_1 = param_3;
  param_1[1] = param_4;
  return;
}


lui gp,0x3
addiu gp,gp,-0x2cd4
addu gp,gp,t9
addiu sp,sp,-0x28
lw t7,0x40(sp)
lw t8,0x44(sp)
lw v0,0x38(sp)
lw v1,0x3c(sp)
lw t1,0x48(sp)
or a1,t7,t8
lw t4,0x4c(sp)
sw gp,0x10(sp)
sw ra,0x24(sp)
sw s1,0x20(sp)
beq a1,zero,0x00014090
_sw s0,0x1c(sp)
or a1,a2,a3
beq a1,zero,0x00014054
_lui a1,0xff00
and a1,t7,a1
bne a1,zero,0x00014084
_or t5,zero,zero
lui t6,0xff00
or a1,t7,zero
or t2,t8,zero
srl t3,t2,0x18
sll t0,a1,0x8
sll t2,t2,0x8
or a1,t3,t0
and t0,a1,t6
beq t0,zero,0x00013e08
_addiu t5,t5,0x8
bltz a1,0x00013e48
_nop
srl t3,t2,0x1f
sll t0,a1,0x1
sll t2,t2,0x1
addiu t5,t5,0x1
or a1,t3,t0
bgez a1,0x00013e2c
_nop
lui a1,0xff00
and a1,a2,a1
bne a1,zero,0x00014078
_or t3,zero,zero
lui t9,0xff00
or a1,a2,zero
or t2,a3,zero
srl t6,t2,0x18
sll t0,a1,0x8
sll t2,t2,0x8
or a1,t6,t0
and t0,a1,t9
beq t0,zero,0x00013e64
_addiu t3,t3,0x8
bltz a1,0x00013ea0
_srl t6,t2,0x1f
sll t0,a1,0x1
sll t2,t2,0x1
addiu t3,t3,0x1
or a1,t6,t0
bgez a1,0x00013e88
_srl t6,t2,0x1f
subu t3,t5,t3
li a1,0x40
sll s0,t1,0x1
subu a1,a1,t3
srl t9,t8,0x1
nor t0,zero,a1
nor s1,zero,t3
sllv s0,s0,t0
srlv t9,t9,s1
srlv t0,t4,a1
sllv t7,t7,t3
srlv t6,t1,a1
sllv t8,t8,t3
andi t5,t3,0x20
andi t2,a1,0x20
or t7,t9,t7
or t0,s0,t0
movn t7,t8,t5
srl t9,t4,0x1
movn t0,t6,t2
sllv a1,t1,t3
srlv t9,t9,s1
movn t6,zero,t2
sllv t1,t4,t3
or a1,t9,a1
movn t8,zero,t5
movn a1,t1,t5
or t7,t6,t7
or t0,t0,t8
blez t3,0x00013ff8
_movn t1,zero,t5
b 0x00013f6c
_or t5,zero,zero
bne a2,t7,0x00013f34
_sltu t2,t0,a3
bne t2,zero,0x00013f78
_sltu t2,v0,a1
beq a2,t7,0x00014024
_nop
sll t4,a1,0x1f
sll t6,t0,0x1f
sll t2,t7,0x1f
srl t1,t1,0x1
srl a1,a1,0x1
srl t0,t0,0x1
addiu t5,t5,0x1
or a1,t6,a1
or t1,t4,t1
or t0,t2,t0
beq t3,t5,0x00013ff8
_srl t7,t7,0x1
sltu t2,t7,a2
beq t2,zero,0x00013f24
_sltu t2,v0,a1
or t8,zero,zero
bne t2,zero,0x00013f94
_li t4,0x1
beq a1,v0,0x00014014
_sltu t2,v1,t1
or t8,zero,zero
or t4,zero,zero
subu t2,a3,t0
subu a2,a2,t7
sltu a3,a3,t2
subu a2,a2,a3
subu t6,v1,t1
subu a3,t2,t4
subu v0,v0,a1
subu a2,a2,t8
sltu v1,v1,t6
sltu t2,t2,a3
sll t4,a1,0x1f
subu v0,v0,v1
subu a2,a2,t2
or v1,t6,zero
sll t2,t7,0x1f
sll t6,t0,0x1f
srl t1,t1,0x1
srl a1,a1,0x1
srl t0,t0,0x1
addiu t5,t5,0x1
or a1,t6,a1
or t1,t4,t1
or t0,t2,t0
bne t3,t5,0x00013f6c
_srl t7,t7,0x1
lw ra,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
sw a2,0x0(a0)
sw a3,0x4(a0)
jr ra
_addiu sp,sp,0x28
bne t2,zero,0x00013f98
_subu t2,a3,t0
b 0x00013f90
_or t8,zero,zero
bne a3,t0,0x00013f40
_sll t4,a1,0x1f
sltu t2,v0,a1
bne t2,zero,0x00013f44
_sll t6,t0,0x1f
bne a1,v0,0x00013f7c
_or t8,zero,zero
sltu t4,v1,t1
bne t4,zero,0x00013f3c
_nop
b 0x00013f7c
_nop
lw ra,0x24(sp)
or a3,zero,zero
or a2,zero,zero
lw s1,0x20(sp)
lw s0,0x1c(sp)
sw a3,0x4(a0)
sw a2,0x0(a0)
jr ra
_addiu sp,sp,0x28
or a1,a2,zero
b 0x00013e98
_or t2,a3,zero
or a1,t7,zero
b 0x00013e40
_or t2,t8,zero
lw a3,-0x7fc8(gp)
li a2,0x1a3
lw a1,-0x7fc8(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x7e98(gp)
addiu a3,a3,0x50a0
addiu a1,a1,0x4b84
jalr t9
_addiu a0,a0,0x4c18
(translation_unit "void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}\n\n" (function_definition "void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" primitive_type (function_declarator "FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 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 "uint param_7" type_identifier 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  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" if (parenthesized_expression "(param_7 == 0 && param_8 == 0)" ( (binary_expression "param_7 == 0 && param_8 == 0" (binary_expression "param_7 == 0" identifier == number_literal) && (binary_expression "param_8 == 0" identifier == number_literal)) )) (compound_statement "{\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" { (expression_statement "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);" (call_expression "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" (parenthesized_expression "(*(code *)PTR___assert_fail_00039238)" ( (pointer_expression "*(code *)PTR___assert_fail_00039238" * (cast_expression "(code *)PTR___assert_fail_00039238" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" ( (binary_expression "PTR_LAB_00039108 + 0x4c18" identifier + number_literal) , (binary_expression "PTR_LAB_00039108 + 0x4b84" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_00039108 + 0x50a0" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 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    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_7;" (assignment_expression "uVar3 = param_7" identifier = identifier) ;) (expression_statement "uVar6 = param_8;" (assignment_expression "uVar6 = param_8" identifier = identifier) ;) (for_statement "for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" for ( (assignment_expression "uVar2 = param_7 & 0xff000000" identifier = (binary_expression "param_7 & 0xff000000" identifier & number_literal)) ; (binary_expression "uVar2 == 0" identifier == number_literal) ; (assignment_expression "uVar2 = uVar2 & 0xff000000" identifier = (binary_expression "uVar2 & 0xff000000" identifier & number_literal)) ) (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" { (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" identifier = (binary_expression "uVar6 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" identifier = (binary_expression "uVar3 << 8" identifier << number_literal)) ;) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" identifier = (binary_expression "uVar6 << 8" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" identifier = (binary_expression "uVar7 | uVar2" identifier | identifier)) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) })) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar2 | uVar3 << 1" identifier = (binary_expression "uVar2 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" { (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" identifier = (binary_expression "uVar6 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) (expression_statement "uVar6 = param_4;" (assignment_expression "uVar6 = param_4" identifier = identifier) ;) (for_statement "for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" for ( (assignment_expression "uVar2 = param_3 & 0xff000000" identifier = (binary_expression "param_3 & 0xff000000" identifier & number_literal)) ; (binary_expression "uVar2 == 0" identifier == number_literal) ; (assignment_expression "uVar2 = uVar2 & 0xff000000" identifier = (binary_expression "uVar2 & 0xff000000" identifier & number_literal)) ) (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" { (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" identifier = (binary_expression "uVar6 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" identifier = (binary_expression "uVar3 << 8" identifier << number_literal)) ;) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" identifier = (binary_expression "uVar6 << 8" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" identifier = (binary_expression "uVar7 | uVar2" identifier | identifier)) ;) (expression_statement "iVar8 = iVar8 + 8;" (assignment_expression "iVar8 = iVar8 + 8" identifier = (binary_expression "iVar8 + 8" identifier + number_literal)) ;) })) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar2 | uVar3 << 1" identifier = (binary_expression "uVar2 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" { (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" identifier = (binary_expression "uVar6 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = iVar9 - iVar8;" (assignment_expression "uVar7 = iVar9 - iVar8" identifier = (binary_expression "iVar9 - iVar8" identifier - identifier)) ;) (expression_statement "uVar3 = 0x40 - uVar7;" (assignment_expression "uVar3 = 0x40 - uVar7" identifier = (binary_expression "0x40 - uVar7" number_literal - identifier)) ;) (expression_statement "uVar11 = param_9 >> (uVar3 & 0x1f);" (assignment_expression "uVar11 = param_9 >> (uVar3 & 0x1f)" identifier = (binary_expression "param_9 >> (uVar3 & 0x1f)" identifier >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar2 = param_8 << (uVar7 & 0x1f);" (assignment_expression "uVar2 = param_8 << (uVar7 & 0x1f)" identifier = (binary_expression "param_8 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar7 & 0x20;" (assignment_expression "uVar10 = uVar7 & 0x20" identifier = (binary_expression "uVar7 & 0x20" identifier & number_literal)) ;) (expression_statement "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);" (assignment_expression "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" identifier = (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_8 >> 1)" ( (binary_expression "param_8 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar7 & 0x1f)" ( (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" ~ identifier) & number_literal) ))) | (binary_expression "param_7 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = uVar2;\n  }" { (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" identifier = identifier) ;) })) (expression_statement "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);" (assignment_expression "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" identifier = (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f)" (parenthesized_expression "(param_9 << 1)" ( (binary_expression "param_9 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar3 & 0x1f)" ( (binary_expression "~uVar3 & 0x1f" (unary_expression "~uVar3" ~ identifier) & number_literal) ))) | (binary_expression "param_10 >> (uVar3 & 0x1f)" identifier >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar4 = uVar11;\n  }" { (expression_statement "uVar4 = uVar11;" (assignment_expression "uVar4 = uVar11" identifier = identifier) ;) })) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "uVar5 = param_10 << (uVar7 & 0x1f);" (assignment_expression "uVar5 = param_10 << (uVar7 & 0x1f)" identifier = (binary_expression "param_10 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);" (assignment_expression "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" identifier = (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_10 >> 1)" ( (binary_expression "param_10 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar7 & 0x1f)" ( (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" ~ identifier) & number_literal) ))) | (binary_expression "param_9 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar11 | uVar6;" (assignment_expression "uVar11 = uVar11 | uVar6" identifier = (binary_expression "uVar11 | uVar6" identifier | identifier)) ;) (expression_statement "uVar4 = uVar4 | uVar2;" (assignment_expression "uVar4 = uVar4 | uVar2" identifier = (binary_expression "uVar4 | uVar2" identifier | identifier)) ;) (if_statement "if (uVar10 != 0) {\n    uVar5 = 0;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = 0;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" if (parenthesized_expression "(0 < (int)uVar7)" ( (binary_expression "0 < (int)uVar7" number_literal < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);" do (compound_statement "{\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    }" { (while_statement "while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" while (parenthesized_expression "(((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))))" ( (parenthesized_expression "((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))" ( (binary_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" (parenthesized_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4))))" ( (binary_expression "uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))" (binary_expression "uVar11 < param_3" identifier < identifier) || (parenthesized_expression "((param_3 == uVar11 && (uVar4 < param_4)))" ( (parenthesized_expression "(param_3 == uVar11 && (uVar4 < param_4))" ( (binary_expression "param_3 == uVar11 && (uVar4 < param_4)" (binary_expression "param_3 == uVar11" identifier == identifier) && (parenthesized_expression "(uVar4 < param_4)" ( (binary_expression "uVar4 < param_4" identifier < identifier) ))) )) ))) )) || (parenthesized_expression "((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" ( (parenthesized_expression "(param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))" ( (binary_expression "param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" (binary_expression "param_3 == uVar11" identifier == identifier) && (parenthesized_expression "(((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" ( (parenthesized_expression "((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))" ( (binary_expression "(param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(param_4 == uVar4 && (uVar3 <= param_5))" ( (binary_expression "param_4 == uVar4 && (uVar3 <= param_5)" (binary_expression "param_4 == uVar4" identifier == identifier) && (parenthesized_expression "(uVar3 <= param_5)" ( (binary_expression "uVar3 <= param_5" identifier <= identifier) ))) )) && (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" ( (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" ( (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" identifier != identifier) || (parenthesized_expression "(uVar5 <= param_6)" ( (binary_expression "uVar5 <= param_6" identifier <= identifier) ))) )) ))) )) ))) )) ))) )) )) (compound_statement "{\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }" if (parenthesized_expression "((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6))))" ( (binary_expression "(uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(uVar3 <= param_5)" ( (binary_expression "uVar3 <= param_5" identifier <= identifier) )) && (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" ( (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" ( (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" identifier != identifier) || (parenthesized_expression "(uVar5 <= param_6)" ( (binary_expression "uVar5 <= param_6" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n          iVar9 = 0;\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (expression_statement "uVar6 = param_4 - uVar4;" (assignment_expression "uVar6 = param_4 - uVar4" identifier = (binary_expression "param_4 - uVar4" identifier - identifier)) ;) (expression_statement "bVar1 = param_4 < uVar6;" (assignment_expression "bVar1 = param_4 < uVar6" identifier = (binary_expression "param_4 < uVar6" identifier < identifier)) ;) (expression_statement "uVar12 = param_6 - uVar5;" (assignment_expression "uVar12 = param_6 - uVar5" identifier = (binary_expression "param_6 - uVar5" identifier - identifier)) ;) (expression_statement "param_4 = uVar6 - iVar9;" (assignment_expression "param_4 = uVar6 - iVar9" identifier = (binary_expression "uVar6 - iVar9" identifier - identifier)) ;) (expression_statement "uVar10 = uVar3 << 0x1f;" (assignment_expression "uVar10 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);" (assignment_expression "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12)" identifier = (binary_expression "(param_5 - uVar3) - (uint)(param_6 < uVar12)" (parenthesized_expression "(param_5 - uVar3)" ( (binary_expression "param_5 - uVar3" identifier - identifier) )) - (call_expression "(uint)(param_6 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_6 < uVar12)" ( (binary_expression "param_6 < uVar12" identifier < identifier) ))))) ;) (expression_statement "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);" (assignment_expression "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" identifier = (binary_expression "((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" (parenthesized_expression "((param_3 - uVar11) - (uint)bVar1)" ( (binary_expression "(param_3 - uVar11) - (uint)bVar1" (parenthesized_expression "(param_3 - uVar11)" ( (binary_expression "param_3 - uVar11" identifier - identifier) )) - (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) ))))) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar3 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar5 = uVar10 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar10 | uVar5 >> 1" identifier = (binary_expression "uVar10 | uVar5 >> 1" identifier | (binary_expression "uVar5 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" identifier = (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" identifier << number_literal) | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) (expression_statement "param_6 = uVar12;" (assignment_expression "param_6 = uVar12" identifier = identifier) ;) (if_statement "if (uVar7 == uVar2) goto LAB_00013ff8;" if (parenthesized_expression "(uVar7 == uVar2)" ( (binary_expression "uVar7 == uVar2" identifier == identifier) )) (goto_statement "goto LAB_00013ff8;" goto statement_identifier ;)) })) (expression_statement "uVar6 = uVar3 << 0x1f;" (assignment_expression "uVar6 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar3 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar5 = uVar6 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar6 | uVar5 >> 1" identifier = (binary_expression "uVar6 | uVar5 >> 1" identifier | (binary_expression "uVar5 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" identifier = (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" identifier << number_literal) | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(uVar7 != uVar2)" ( (binary_expression "uVar7 != uVar2" identifier != identifier) )) ;) })) (labeled_statement "LAB_00013ff8:\n  *param_1 = param_3;" statement_identifier : (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x00014040) */\n\nuintmax_t mod2(uintmax_t *r1,uintmax_t a1,uintmax_t a0,uintmax_t d1,uintmax_t d0)\n\n{\n  bool bVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint in_a2;\n  uint in_a3;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uintmax_t uVar17;\n  \n  if (a0 == 0) {\n    uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);\n    return uVar17;\n  }\n  if (in_a2 == 0 && in_a3 == 0) {\n    *(undefined4 *)((int)r1 + 4) = 0;\n    *(undefined4 *)r1 = 0;\n    return a1;\n  }\n  iVar13 = 0;\n  uVar2 = a0 & 0xff00000000000000;\n  uVar4 = a0;\n  uVar3 = a0;\n  while (uVar2 == 0) {\n    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));\n    iVar13 = iVar13 + 8;\n    uVar2 = uVar4 & 0xff000000000000;\n    uVar4 = uVar4 << 8;\n  }\n  while (-1 < (longlong)uVar4) {\n    iVar13 = iVar13 + 1;\n    uVar3 = uVar3 << 1;\n    uVar4 = uVar3;\n  }\n  iVar11 = 0;\n  uVar6 = in_a2;\n  uVar9 = in_a3;\n  for (uVar5 = in_a2 & 0xff000000; uVar5 == 0; uVar5 = uVar5 & 0xff000000) {\n    uVar15 = uVar9 >> 0x18;\n    uVar5 = uVar6 << 8;\n    uVar9 = uVar9 << 8;\n    uVar6 = uVar15 | uVar5;\n    iVar11 = iVar11 + 8;\n  }\n  for (; -1 < (int)uVar6; uVar6 = uVar5 | uVar6 << 1) {\n    uVar5 = uVar9 >> 0x1f;\n    uVar9 = uVar9 << 1;\n    iVar11 = iVar11 + 1;\n  }\n  uVar15 = iVar13 - iVar11;\n  uVar6 = 0x40 - uVar15;\n  uVar16 = d1._0_4_ >> (uVar6 & 0x1f);\n  uVar5 = a0._4_4_ << (uVar15 & 0x1f);\n  uVar14 = uVar15 & 0x20;\n  uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar9 = uVar5;\n  }\n  uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f);\n  if ((uVar6 & 0x20) != 0) {\n    uVar7 = uVar16;\n  }\n  if ((uVar6 & 0x20) != 0) {\n    uVar16 = 0;\n  }\n  uVar8 = d1._4_4_ << (uVar15 & 0x1f);\n  uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar5 = 0;\n    uVar6 = uVar8;\n  }\n  uVar16 = uVar16 | uVar9;\n  uVar7 = uVar7 | uVar5;\n  if (uVar14 != 0) {\n    uVar8 = 0;\n  }\n  if (0 < (int)uVar15) {\n    uVar5 = 0;\n    do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);\n  }\nLAB_00013ff8:\n  *(uint *)r1 = in_a2;\n  *(uint *)((int)r1 + 4) = in_a3;\n  return a1;\n}\n\n" comment (function_definition "uintmax_t mod2(uintmax_t *r1,uintmax_t a1,uintmax_t a0,uintmax_t d1,uintmax_t d0)\n\n{\n  bool bVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint in_a2;\n  uint in_a3;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uintmax_t uVar17;\n  \n  if (a0 == 0) {\n    uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);\n    return uVar17;\n  }\n  if (in_a2 == 0 && in_a3 == 0) {\n    *(undefined4 *)((int)r1 + 4) = 0;\n    *(undefined4 *)r1 = 0;\n    return a1;\n  }\n  iVar13 = 0;\n  uVar2 = a0 & 0xff00000000000000;\n  uVar4 = a0;\n  uVar3 = a0;\n  while (uVar2 == 0) {\n    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));\n    iVar13 = iVar13 + 8;\n    uVar2 = uVar4 & 0xff000000000000;\n    uVar4 = uVar4 << 8;\n  }\n  while (-1 < (longlong)uVar4) {\n    iVar13 = iVar13 + 1;\n    uVar3 = uVar3 << 1;\n    uVar4 = uVar3;\n  }\n  iVar11 = 0;\n  uVar6 = in_a2;\n  uVar9 = in_a3;\n  for (uVar5 = in_a2 & 0xff000000; uVar5 == 0; uVar5 = uVar5 & 0xff000000) {\n    uVar15 = uVar9 >> 0x18;\n    uVar5 = uVar6 << 8;\n    uVar9 = uVar9 << 8;\n    uVar6 = uVar15 | uVar5;\n    iVar11 = iVar11 + 8;\n  }\n  for (; -1 < (int)uVar6; uVar6 = uVar5 | uVar6 << 1) {\n    uVar5 = uVar9 >> 0x1f;\n    uVar9 = uVar9 << 1;\n    iVar11 = iVar11 + 1;\n  }\n  uVar15 = iVar13 - iVar11;\n  uVar6 = 0x40 - uVar15;\n  uVar16 = d1._0_4_ >> (uVar6 & 0x1f);\n  uVar5 = a0._4_4_ << (uVar15 & 0x1f);\n  uVar14 = uVar15 & 0x20;\n  uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar9 = uVar5;\n  }\n  uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f);\n  if ((uVar6 & 0x20) != 0) {\n    uVar7 = uVar16;\n  }\n  if ((uVar6 & 0x20) != 0) {\n    uVar16 = 0;\n  }\n  uVar8 = d1._4_4_ << (uVar15 & 0x1f);\n  uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar5 = 0;\n    uVar6 = uVar8;\n  }\n  uVar16 = uVar16 | uVar9;\n  uVar7 = uVar7 | uVar5;\n  if (uVar14 != 0) {\n    uVar8 = 0;\n  }\n  if (0 < (int)uVar15) {\n    uVar5 = 0;\n    do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);\n  }\nLAB_00013ff8:\n  *(uint *)r1 = in_a2;\n  *(uint *)((int)r1 + 4) = in_a3;\n  return a1;\n}" type_identifier (function_declarator "mod2(uintmax_t *r1,uintmax_t a1,uintmax_t a0,uintmax_t d1,uintmax_t d0)" identifier (parameter_list "(uintmax_t *r1,uintmax_t a1,uintmax_t a0,uintmax_t d1,uintmax_t d0)" ( (parameter_declaration "uintmax_t *r1" type_identifier (pointer_declarator "*r1" * identifier)) , (parameter_declaration "uintmax_t a1" type_identifier identifier) , (parameter_declaration "uintmax_t a0" type_identifier identifier) , (parameter_declaration "uintmax_t d1" type_identifier identifier) , (parameter_declaration "uintmax_t d0" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  ulonglong uVar2;\n  ulonglong uVar3;\n  ulonglong uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint in_a2;\n  uint in_a3;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int iVar13;\n  uint uVar14;\n  uint uVar15;\n  uint uVar16;\n  uintmax_t uVar17;\n  \n  if (a0 == 0) {\n    uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);\n    return uVar17;\n  }\n  if (in_a2 == 0 && in_a3 == 0) {\n    *(undefined4 *)((int)r1 + 4) = 0;\n    *(undefined4 *)r1 = 0;\n    return a1;\n  }\n  iVar13 = 0;\n  uVar2 = a0 & 0xff00000000000000;\n  uVar4 = a0;\n  uVar3 = a0;\n  while (uVar2 == 0) {\n    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));\n    iVar13 = iVar13 + 8;\n    uVar2 = uVar4 & 0xff000000000000;\n    uVar4 = uVar4 << 8;\n  }\n  while (-1 < (longlong)uVar4) {\n    iVar13 = iVar13 + 1;\n    uVar3 = uVar3 << 1;\n    uVar4 = uVar3;\n  }\n  iVar11 = 0;\n  uVar6 = in_a2;\n  uVar9 = in_a3;\n  for (uVar5 = in_a2 & 0xff000000; uVar5 == 0; uVar5 = uVar5 & 0xff000000) {\n    uVar15 = uVar9 >> 0x18;\n    uVar5 = uVar6 << 8;\n    uVar9 = uVar9 << 8;\n    uVar6 = uVar15 | uVar5;\n    iVar11 = iVar11 + 8;\n  }\n  for (; -1 < (int)uVar6; uVar6 = uVar5 | uVar6 << 1) {\n    uVar5 = uVar9 >> 0x1f;\n    uVar9 = uVar9 << 1;\n    iVar11 = iVar11 + 1;\n  }\n  uVar15 = iVar13 - iVar11;\n  uVar6 = 0x40 - uVar15;\n  uVar16 = d1._0_4_ >> (uVar6 & 0x1f);\n  uVar5 = a0._4_4_ << (uVar15 & 0x1f);\n  uVar14 = uVar15 & 0x20;\n  uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar9 = uVar5;\n  }\n  uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f);\n  if ((uVar6 & 0x20) != 0) {\n    uVar7 = uVar16;\n  }\n  if ((uVar6 & 0x20) != 0) {\n    uVar16 = 0;\n  }\n  uVar8 = d1._4_4_ << (uVar15 & 0x1f);\n  uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f);\n  if (uVar14 != 0) {\n    uVar5 = 0;\n    uVar6 = uVar8;\n  }\n  uVar16 = uVar16 | uVar9;\n  uVar7 = uVar7 | uVar5;\n  if (uVar14 != 0) {\n    uVar8 = 0;\n  }\n  if (0 < (int)uVar15) {\n    uVar5 = 0;\n    do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);\n  }\nLAB_00013ff8:\n  *(uint *)r1 = in_a2;\n  *(uint *)((int)r1 + 4) = in_a3;\n  return a1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "ulonglong uVar3;" type_identifier identifier ;) (declaration "ulonglong uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uintmax_t uVar17;" type_identifier identifier ;) (if_statement "if (a0 == 0) {\n    uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);\n    return uVar17;\n  }" if (parenthesized_expression "(a0 == 0)" ( (binary_expression "a0 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);\n    return uVar17;\n  }" { (expression_statement "uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0);" (assignment_expression "uVar17 = (*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0)" identifier = (call_expression "(*(code *)PTR___assert_fail_00039238)\n                       (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0)" (parenthesized_expression "(*(code *)PTR___assert_fail_00039238)" ( (pointer_expression "*(code *)PTR___assert_fail_00039238" * (cast_expression "(code *)PTR___assert_fail_00039238" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,\n                        PTR_LAB_00039108 + 0x50a0)" ( (binary_expression "PTR_LAB_00039108 + 0x4c18" identifier + number_literal) , (binary_expression "PTR_LAB_00039108 + 0x4b84" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_00039108 + 0x50a0" identifier + number_literal) )))) ;) (return_statement "return uVar17;" return identifier ;) })) (if_statement "if (in_a2 == 0 && in_a3 == 0) {\n    *(undefined4 *)((int)r1 + 4) = 0;\n    *(undefined4 *)r1 = 0;\n    return a1;\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    *(undefined4 *)((int)r1 + 4) = 0;\n    *(undefined4 *)r1 = 0;\n    return a1;\n  }" { (expression_statement "*(undefined4 *)((int)r1 + 4) = 0;" (assignment_expression "*(undefined4 *)((int)r1 + 4) = 0" (pointer_expression "*(undefined4 *)((int)r1 + 4)" * (cast_expression "(undefined4 *)((int)r1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)r1 + 4)" ( (binary_expression "(int)r1 + 4" (cast_expression "(int)r1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)r1 = 0;" (assignment_expression "*(undefined4 *)r1 = 0" (pointer_expression "*(undefined4 *)r1" * (cast_expression "(undefined4 *)r1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (return_statement "return a1;" return identifier ;) })) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = a0 & 0xff00000000000000;" (assignment_expression "uVar2 = a0 & 0xff00000000000000" identifier = (binary_expression "a0 & 0xff00000000000000" identifier & number_literal)) ;) (expression_statement "uVar4 = a0;" (assignment_expression "uVar4 = a0" identifier = identifier) ;) (expression_statement "uVar3 = a0;" (assignment_expression "uVar3 = a0" identifier = identifier) ;) (while_statement "while (uVar2 == 0) {\n    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));\n    iVar13 = iVar13 + 8;\n    uVar2 = uVar4 & 0xff000000000000;\n    uVar4 = uVar4 << 8;\n  }" while (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));\n    iVar13 = iVar13 + 8;\n    uVar2 = uVar4 & 0xff000000000000;\n    uVar4 = uVar4 << 8;\n  }" { (expression_statement "uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8));" (assignment_expression "uVar3 = CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8))" identifier = (call_expression "CONCAT44((int)(uVar4 >> 0x18),(int)(uVar4 << 8))" identifier (argument_list "((int)(uVar4 >> 0x18),(int)(uVar4 << 8))" ( (cast_expression "(int)(uVar4 >> 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 >> 0x18)" ( (binary_expression "uVar4 >> 0x18" identifier >> number_literal) ))) , (cast_expression "(int)(uVar4 << 8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 << 8)" ( (binary_expression "uVar4 << 8" identifier << number_literal) ))) )))) ;) (expression_statement "iVar13 = iVar13 + 8;" (assignment_expression "iVar13 = iVar13 + 8" identifier = (binary_expression "iVar13 + 8" identifier + number_literal)) ;) (expression_statement "uVar2 = uVar4 & 0xff000000000000;" (assignment_expression "uVar2 = uVar4 & 0xff000000000000" identifier = (binary_expression "uVar4 & 0xff000000000000" identifier & number_literal)) ;) (expression_statement "uVar4 = uVar4 << 8;" (assignment_expression "uVar4 = uVar4 << 8" identifier = (binary_expression "uVar4 << 8" identifier << number_literal)) ;) })) (while_statement "while (-1 < (longlong)uVar4) {\n    iVar13 = iVar13 + 1;\n    uVar3 = uVar3 << 1;\n    uVar4 = uVar3;\n  }" while (parenthesized_expression "(-1 < (longlong)uVar4)" ( (binary_expression "-1 < (longlong)uVar4" number_literal < (cast_expression "(longlong)uVar4" ( (type_descriptor "longlong" type_identifier) ) identifier)) )) (compound_statement "{\n    iVar13 = iVar13 + 1;\n    uVar3 = uVar3 << 1;\n    uVar4 = uVar3;\n  }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = uVar3 << 1;" (assignment_expression "uVar3 = uVar3 << 1" identifier = (binary_expression "uVar3 << 1" identifier << number_literal)) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) })) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = in_a2;" (assignment_expression "uVar6 = in_a2" identifier = identifier) ;) (expression_statement "uVar9 = in_a3;" (assignment_expression "uVar9 = in_a3" identifier = identifier) ;) (for_statement "for (uVar5 = in_a2 & 0xff000000; uVar5 == 0; uVar5 = uVar5 & 0xff000000) {\n    uVar15 = uVar9 >> 0x18;\n    uVar5 = uVar6 << 8;\n    uVar9 = uVar9 << 8;\n    uVar6 = uVar15 | uVar5;\n    iVar11 = iVar11 + 8;\n  }" for ( (assignment_expression "uVar5 = in_a2 & 0xff000000" identifier = (binary_expression "in_a2 & 0xff000000" identifier & number_literal)) ; (binary_expression "uVar5 == 0" identifier == number_literal) ; (assignment_expression "uVar5 = uVar5 & 0xff000000" identifier = (binary_expression "uVar5 & 0xff000000" identifier & number_literal)) ) (compound_statement "{\n    uVar15 = uVar9 >> 0x18;\n    uVar5 = uVar6 << 8;\n    uVar9 = uVar9 << 8;\n    uVar6 = uVar15 | uVar5;\n    iVar11 = iVar11 + 8;\n  }" { (expression_statement "uVar15 = uVar9 >> 0x18;" (assignment_expression "uVar15 = uVar9 >> 0x18" identifier = (binary_expression "uVar9 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar5 = uVar6 << 8;" (assignment_expression "uVar5 = uVar6 << 8" identifier = (binary_expression "uVar6 << 8" identifier << number_literal)) ;) (expression_statement "uVar9 = uVar9 << 8;" (assignment_expression "uVar9 = uVar9 << 8" identifier = (binary_expression "uVar9 << 8" identifier << number_literal)) ;) (expression_statement "uVar6 = uVar15 | uVar5;" (assignment_expression "uVar6 = uVar15 | uVar5" identifier = (binary_expression "uVar15 | uVar5" identifier | identifier)) ;) (expression_statement "iVar11 = iVar11 + 8;" (assignment_expression "iVar11 = iVar11 + 8" identifier = (binary_expression "iVar11 + 8" identifier + number_literal)) ;) })) (for_statement "for (; -1 < (int)uVar6; uVar6 = uVar5 | uVar6 << 1) {\n    uVar5 = uVar9 >> 0x1f;\n    uVar9 = uVar9 << 1;\n    iVar11 = iVar11 + 1;\n  }" for ( ; (binary_expression "-1 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar6 = uVar5 | uVar6 << 1" identifier = (binary_expression "uVar5 | uVar6 << 1" identifier | (binary_expression "uVar6 << 1" identifier << number_literal))) ) (compound_statement "{\n    uVar5 = uVar9 >> 0x1f;\n    uVar9 = uVar9 << 1;\n    iVar11 = iVar11 + 1;\n  }" { (expression_statement "uVar5 = uVar9 >> 0x1f;" (assignment_expression "uVar5 = uVar9 >> 0x1f" identifier = (binary_expression "uVar9 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar9 = uVar9 << 1;" (assignment_expression "uVar9 = uVar9 << 1" identifier = (binary_expression "uVar9 << 1" identifier << number_literal)) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar15 = iVar13 - iVar11;" (assignment_expression "uVar15 = iVar13 - iVar11" identifier = (binary_expression "iVar13 - iVar11" identifier - identifier)) ;) (expression_statement "uVar6 = 0x40 - uVar15;" (assignment_expression "uVar6 = 0x40 - uVar15" identifier = (binary_expression "0x40 - uVar15" number_literal - identifier)) ;) (expression_statement "uVar16 = d1._0_4_ >> (uVar6 & 0x1f);" (assignment_expression "uVar16 = d1._0_4_ >> (uVar6 & 0x1f)" identifier = (binary_expression "d1._0_4_ >> (uVar6 & 0x1f)" (field_expression "d1._0_4_" identifier . field_identifier) >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar5 = a0._4_4_ << (uVar15 & 0x1f);" (assignment_expression "uVar5 = a0._4_4_ << (uVar15 & 0x1f)" identifier = (binary_expression "a0._4_4_ << (uVar15 & 0x1f)" (field_expression "a0._4_4_" identifier . field_identifier) << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar14 = uVar15 & 0x20;" (assignment_expression "uVar14 = uVar15 & 0x20" identifier = (binary_expression "uVar15 & 0x20" identifier & number_literal)) ;) (expression_statement "uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f);" (assignment_expression "uVar9 = (a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f)" identifier = (binary_expression "(a0._4_4_ >> 1) >> (~uVar15 & 0x1f) | a0._0_4_ << (uVar15 & 0x1f)" (binary_expression "(a0._4_4_ >> 1) >> (~uVar15 & 0x1f)" (parenthesized_expression "(a0._4_4_ >> 1)" ( (binary_expression "a0._4_4_ >> 1" (field_expression "a0._4_4_" identifier . field_identifier) >> number_literal) )) >> (parenthesized_expression "(~uVar15 & 0x1f)" ( (binary_expression "~uVar15 & 0x1f" (unary_expression "~uVar15" ~ identifier) & number_literal) ))) | (binary_expression "a0._0_4_ << (uVar15 & 0x1f)" (field_expression "a0._0_4_" identifier . field_identifier) << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar14 != 0) {\n    uVar9 = uVar5;\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar9 = uVar5;\n  }" { (expression_statement "uVar9 = uVar5;" (assignment_expression "uVar9 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f);" (assignment_expression "uVar7 = (d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f)" identifier = (binary_expression "(d1._0_4_ << 1) << (~uVar6 & 0x1f) | d1._4_4_ >> (uVar6 & 0x1f)" (binary_expression "(d1._0_4_ << 1) << (~uVar6 & 0x1f)" (parenthesized_expression "(d1._0_4_ << 1)" ( (binary_expression "d1._0_4_ << 1" (field_expression "d1._0_4_" identifier . field_identifier) << number_literal) )) << (parenthesized_expression "(~uVar6 & 0x1f)" ( (binary_expression "~uVar6 & 0x1f" (unary_expression "~uVar6" ~ identifier) & number_literal) ))) | (binary_expression "d1._4_4_ >> (uVar6 & 0x1f)" (field_expression "d1._4_4_" identifier . field_identifier) >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x20) != 0) {\n    uVar7 = uVar16;\n  }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar7 = uVar16;\n  }" { (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) })) (if_statement "if ((uVar6 & 0x20) != 0) {\n    uVar16 = 0;\n  }" if (parenthesized_expression "((uVar6 & 0x20) != 0)" ( (binary_expression "(uVar6 & 0x20) != 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar16 = 0;\n  }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) })) (expression_statement "uVar8 = d1._4_4_ << (uVar15 & 0x1f);" (assignment_expression "uVar8 = d1._4_4_ << (uVar15 & 0x1f)" identifier = (binary_expression "d1._4_4_ << (uVar15 & 0x1f)" (field_expression "d1._4_4_" identifier . field_identifier) << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f);" (assignment_expression "uVar6 = (d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f)" identifier = (binary_expression "(d1._4_4_ >> 1) >> (~uVar15 & 0x1f) | d1._0_4_ << (uVar15 & 0x1f)" (binary_expression "(d1._4_4_ >> 1) >> (~uVar15 & 0x1f)" (parenthesized_expression "(d1._4_4_ >> 1)" ( (binary_expression "d1._4_4_ >> 1" (field_expression "d1._4_4_" identifier . field_identifier) >> number_literal) )) >> (parenthesized_expression "(~uVar15 & 0x1f)" ( (binary_expression "~uVar15 & 0x1f" (unary_expression "~uVar15" ~ identifier) & number_literal) ))) | (binary_expression "d1._0_4_ << (uVar15 & 0x1f)" (field_expression "d1._0_4_" identifier . field_identifier) << (parenthesized_expression "(uVar15 & 0x1f)" ( (binary_expression "uVar15 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar14 != 0) {\n    uVar5 = 0;\n    uVar6 = uVar8;\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    uVar6 = uVar8;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = uVar8;" (assignment_expression "uVar6 = uVar8" identifier = identifier) ;) })) (expression_statement "uVar16 = uVar16 | uVar9;" (assignment_expression "uVar16 = uVar16 | uVar9" identifier = (binary_expression "uVar16 | uVar9" identifier | identifier)) ;) (expression_statement "uVar7 = uVar7 | uVar5;" (assignment_expression "uVar7 = uVar7 | uVar5" identifier = (binary_expression "uVar7 | uVar5" identifier | identifier)) ;) (if_statement "if (uVar14 != 0) {\n    uVar8 = 0;\n  }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = 0;\n  }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar15) {\n    uVar5 = 0;\n    do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);\n  }" if (parenthesized_expression "(0 < (int)uVar15)" ( (binary_expression "0 < (int)uVar15" number_literal < (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar5 = 0;\n    do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    } while (uVar15 != uVar5);" do (compound_statement "{\n      while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }\n      uVar9 = uVar6 << 0x1f;\n      uVar5 = uVar5 + 1;\n      uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n      uVar8 = uVar9 | uVar8 >> 1;\n      uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n      uVar16 = uVar16 >> 1;\n    }" { (while_statement "while( true ) {\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar9 = (uint)(a1 >> 0x20);\n        uVar14 = (uint)a1;\n        if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;\n        iVar13 = 1;\n        if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }\n        uVar10 = in_a3 - uVar7;\n        bVar1 = in_a3 < uVar10;\n        in_a3 = uVar10 - iVar13;\n        uVar12 = uVar6 << 0x1f;\n        a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);\n        in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);\n        uVar5 = uVar5 + 1;\n        uVar6 = uVar7 << 0x1f | uVar6 >> 1;\n        uVar8 = uVar12 | uVar8 >> 1;\n        uVar7 = uVar16 << 0x1f | uVar7 >> 1;\n        uVar16 = uVar16 >> 1;\n        if (uVar15 == uVar5) goto LAB_00013ff8;\n      }" { (expression_statement "uVar9 = (uint)(a1 >> 0x20);" (assignment_expression "uVar9 = (uint)(a1 >> 0x20)" identifier = (call_expression "(uint)(a1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(a1 >> 0x20)" ( (binary_expression "a1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar14 = (uint)a1;" (assignment_expression "uVar14 = (uint)a1" identifier = (cast_expression "(uint)a1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))) break;" if (parenthesized_expression "(((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8)))))))" ( (binary_expression "((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))) &&\n           ((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))" (parenthesized_expression "((in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7))))" ( (binary_expression "(in_a2 <= uVar16) && ((in_a2 != uVar16 || (in_a3 <= uVar7)))" (parenthesized_expression "(in_a2 <= uVar16)" ( (binary_expression "in_a2 <= uVar16" identifier <= identifier) )) && (parenthesized_expression "((in_a2 != uVar16 || (in_a3 <= uVar7)))" ( (parenthesized_expression "(in_a2 != uVar16 || (in_a3 <= uVar7))" ( (binary_expression "in_a2 != uVar16 || (in_a3 <= uVar7)" (binary_expression "in_a2 != uVar16" identifier != identifier) || (parenthesized_expression "(in_a3 <= uVar7)" ( (binary_expression "in_a3 <= uVar7" identifier <= identifier) ))) )) ))) )) && (parenthesized_expression "((in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))))" ( (parenthesized_expression "(in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8)))))" ( (binary_expression "in_a2 != uVar16 || ((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))" (binary_expression "in_a2 != uVar16" identifier != identifier) || (parenthesized_expression "((in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))))" ( (parenthesized_expression "(in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8)))" ( (binary_expression "in_a3 != uVar7 || (a1 < CONCAT44(uVar6,uVar8))" (binary_expression "in_a3 != uVar7" identifier != identifier) || (parenthesized_expression "(a1 < CONCAT44(uVar6,uVar8))" ( (binary_expression "a1 < CONCAT44(uVar6,uVar8)" identifier < (call_expression "CONCAT44(uVar6,uVar8)" identifier (argument_list "(uVar6,uVar8)" ( identifier , identifier )))) ))) )) ))) )) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (if_statement "if ((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))) {\n          iVar13 = 0;\n        }" if (parenthesized_expression "((uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14))))" ( (binary_expression "(uVar6 <= uVar9) && ((uVar6 != uVar9 || (uVar8 <= uVar14)))" (parenthesized_expression "(uVar6 <= uVar9)" ( (binary_expression "uVar6 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "((uVar6 != uVar9 || (uVar8 <= uVar14)))" ( (parenthesized_expression "(uVar6 != uVar9 || (uVar8 <= uVar14))" ( (binary_expression "uVar6 != uVar9 || (uVar8 <= uVar14)" (binary_expression "uVar6 != uVar9" identifier != identifier) || (parenthesized_expression "(uVar8 <= uVar14)" ( (binary_expression "uVar8 <= uVar14" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n          iVar13 = 0;\n        }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })) (expression_statement "uVar10 = in_a3 - uVar7;" (assignment_expression "uVar10 = in_a3 - uVar7" identifier = (binary_expression "in_a3 - uVar7" identifier - identifier)) ;) (expression_statement "bVar1 = in_a3 < uVar10;" (assignment_expression "bVar1 = in_a3 < uVar10" identifier = (binary_expression "in_a3 < uVar10" identifier < identifier)) ;) (expression_statement "in_a3 = uVar10 - iVar13;" (assignment_expression "in_a3 = uVar10 - iVar13" identifier = (binary_expression "uVar10 - iVar13" identifier - identifier)) ;) (expression_statement "uVar12 = uVar6 << 0x1f;" (assignment_expression "uVar12 = uVar6 << 0x1f" identifier = (binary_expression "uVar6 << 0x1f" identifier << number_literal)) ;) (expression_statement "a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8);" (assignment_expression "a1 = CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8)" identifier = (call_expression "CONCAT44((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8)" identifier (argument_list "((uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8),uVar14 - uVar8)" ( (binary_expression "(uVar9 - uVar6) - (uint)(uVar14 < uVar14 - uVar8)" (parenthesized_expression "(uVar9 - uVar6)" ( (binary_expression "uVar9 - uVar6" identifier - identifier) )) - (call_expression "(uint)(uVar14 < uVar14 - uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar14 < uVar14 - uVar8)" ( (binary_expression "uVar14 < uVar14 - uVar8" identifier < (binary_expression "uVar14 - uVar8" identifier - identifier)) )))) , (binary_expression "uVar14 - uVar8" identifier - identifier) )))) ;) (expression_statement "in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3);" (assignment_expression "in_a2 = ((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3)" identifier = (binary_expression "((in_a2 - uVar16) - (uint)bVar1) - (uint)(uVar10 < in_a3)" (parenthesized_expression "((in_a2 - uVar16) - (uint)bVar1)" ( (binary_expression "(in_a2 - uVar16) - (uint)bVar1" (parenthesized_expression "(in_a2 - uVar16)" ( (binary_expression "in_a2 - uVar16" identifier - identifier) )) - (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (call_expression "(uint)(uVar10 < in_a3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < in_a3)" ( (binary_expression "uVar10 < in_a3" identifier < identifier) ))))) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar7 << 0x1f | uVar6 >> 1;" (assignment_expression "uVar6 = uVar7 << 0x1f | uVar6 >> 1" identifier = (binary_expression "uVar7 << 0x1f | uVar6 >> 1" (binary_expression "uVar7 << 0x1f" identifier << number_literal) | (binary_expression "uVar6 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar8 = uVar12 | uVar8 >> 1;" (assignment_expression "uVar8 = uVar12 | uVar8 >> 1" identifier = (binary_expression "uVar12 | uVar8 >> 1" identifier | (binary_expression "uVar8 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar7 = uVar16 << 0x1f | uVar7 >> 1;" (assignment_expression "uVar7 = uVar16 << 0x1f | uVar7 >> 1" identifier = (binary_expression "uVar16 << 0x1f | uVar7 >> 1" (binary_expression "uVar16 << 0x1f" identifier << number_literal) | (binary_expression "uVar7 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar16 = uVar16 >> 1;" (assignment_expression "uVar16 = uVar16 >> 1" identifier = (binary_expression "uVar16 >> 1" identifier >> number_literal)) ;) (if_statement "if (uVar15 == uVar5) goto LAB_00013ff8;" if (parenthesized_expression "(uVar15 == uVar5)" ( (binary_expression "uVar15 == uVar5" identifier == identifier) )) (goto_statement "goto LAB_00013ff8;" goto statement_identifier ;)) })) (expression_statement "uVar9 = uVar6 << 0x1f;" (assignment_expression "uVar9 = uVar6 << 0x1f" identifier = (binary_expression "uVar6 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = uVar7 << 0x1f | uVar6 >> 1;" (assignment_expression "uVar6 = uVar7 << 0x1f | uVar6 >> 1" identifier = (binary_expression "uVar7 << 0x1f | uVar6 >> 1" (binary_expression "uVar7 << 0x1f" identifier << number_literal) | (binary_expression "uVar6 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar8 = uVar9 | uVar8 >> 1;" (assignment_expression "uVar8 = uVar9 | uVar8 >> 1" identifier = (binary_expression "uVar9 | uVar8 >> 1" identifier | (binary_expression "uVar8 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar7 = uVar16 << 0x1f | uVar7 >> 1;" (assignment_expression "uVar7 = uVar16 << 0x1f | uVar7 >> 1" identifier = (binary_expression "uVar16 << 0x1f | uVar7 >> 1" (binary_expression "uVar16 << 0x1f" identifier << number_literal) | (binary_expression "uVar7 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar16 = uVar16 >> 1;" (assignment_expression "uVar16 = uVar16 >> 1" identifier = (binary_expression "uVar16 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(uVar15 != uVar5)" ( (binary_expression "uVar15 != uVar5" identifier != identifier) )) ;) })) (labeled_statement "LAB_00013ff8:\n  *(uint *)r1 = in_a2;" statement_identifier : (expression_statement "*(uint *)r1 = in_a2;" (assignment_expression "*(uint *)r1 = in_a2" (pointer_expression "*(uint *)r1" * (cast_expression "(uint *)r1" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;)) (expression_statement "*(uint *)((int)r1 + 4) = in_a3;" (assignment_expression "*(uint *)((int)r1 + 4) = in_a3" (pointer_expression "*(uint *)((int)r1 + 4)" * (cast_expression "(uint *)((int)r1 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)r1 + 4)" ( (binary_expression "(int)r1 + 4" (cast_expression "(int)r1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (return_statement "return a1;" return identifier ;) })))
(translation_unit "void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}\n\n" (function_definition "void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" primitive_type (function_declarator "FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 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 "uint param_7" type_identifier 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  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (if_statement "if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" if (parenthesized_expression "(param_7 == 0 && param_8 == 0)" ( (binary_expression "param_7 == 0 && param_8 == 0" (binary_expression "param_7 == 0" identifier == number_literal) && (binary_expression "param_8 == 0" identifier == number_literal)) )) (compound_statement "{\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" { (expression_statement "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);" (call_expression "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" (parenthesized_expression "(*(code *)PTR___assert_fail_00039238)" ( (pointer_expression "*(code *)PTR___assert_fail_00039238" * (cast_expression "(code *)PTR___assert_fail_00039238" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" ( (binary_expression "PTR_LAB_00039108 + 0x4c18" identifier + number_literal) , (binary_expression "PTR_LAB_00039108 + 0x4b84" identifier + number_literal) , number_literal , (binary_expression "PTR_LAB_00039108 + 0x50a0" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 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    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_7;" (assignment_expression "uVar3 = param_7" identifier = identifier) ;) (expression_statement "uVar6 = param_8;" (assignment_expression "uVar6 = param_8" identifier = identifier) ;) (for_statement "for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" for ( (assignment_expression "uVar2 = param_7 & 0xff000000" identifier = (binary_expression "param_7 & 0xff000000" identifier & number_literal)) ; (binary_expression "uVar2 == 0" identifier == number_literal) ; (assignment_expression "uVar2 = uVar2 & 0xff000000" identifier = (binary_expression "uVar2 & 0xff000000" identifier & number_literal)) ) (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" { (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" identifier = (binary_expression "uVar6 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" identifier = (binary_expression "uVar3 << 8" identifier << number_literal)) ;) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" identifier = (binary_expression "uVar6 << 8" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" identifier = (binary_expression "uVar7 | uVar2" identifier | identifier)) ;) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" identifier = (binary_expression "iVar9 + 8" identifier + number_literal)) ;) })) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar2 | uVar3 << 1" identifier = (binary_expression "uVar2 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" { (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" identifier = (binary_expression "uVar6 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" identifier = identifier) ;) (expression_statement "uVar6 = param_4;" (assignment_expression "uVar6 = param_4" identifier = identifier) ;) (for_statement "for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" for ( (assignment_expression "uVar2 = param_3 & 0xff000000" identifier = (binary_expression "param_3 & 0xff000000" identifier & number_literal)) ; (binary_expression "uVar2 == 0" identifier == number_literal) ; (assignment_expression "uVar2 = uVar2 & 0xff000000" identifier = (binary_expression "uVar2 & 0xff000000" identifier & number_literal)) ) (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" { (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" identifier = (binary_expression "uVar6 >> 0x18" identifier >> number_literal)) ;) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" identifier = (binary_expression "uVar3 << 8" identifier << number_literal)) ;) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" identifier = (binary_expression "uVar6 << 8" identifier << number_literal)) ;) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" identifier = (binary_expression "uVar7 | uVar2" identifier | identifier)) ;) (expression_statement "iVar8 = iVar8 + 8;" (assignment_expression "iVar8 = iVar8 + 8" identifier = (binary_expression "iVar8 + 8" identifier + number_literal)) ;) })) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" for ( ; (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "uVar3 = uVar2 | uVar3 << 1" identifier = (binary_expression "uVar2 | uVar3 << 1" identifier | (binary_expression "uVar3 << 1" identifier << number_literal))) ) (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" { (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" identifier = (binary_expression "uVar6 >> 0x1f" identifier >> number_literal)) ;) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = iVar9 - iVar8;" (assignment_expression "uVar7 = iVar9 - iVar8" identifier = (binary_expression "iVar9 - iVar8" identifier - identifier)) ;) (expression_statement "uVar3 = 0x40 - uVar7;" (assignment_expression "uVar3 = 0x40 - uVar7" identifier = (binary_expression "0x40 - uVar7" number_literal - identifier)) ;) (expression_statement "uVar11 = param_9 >> (uVar3 & 0x1f);" (assignment_expression "uVar11 = param_9 >> (uVar3 & 0x1f)" identifier = (binary_expression "param_9 >> (uVar3 & 0x1f)" identifier >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar2 = param_8 << (uVar7 & 0x1f);" (assignment_expression "uVar2 = param_8 << (uVar7 & 0x1f)" identifier = (binary_expression "param_8 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar7 & 0x20;" (assignment_expression "uVar10 = uVar7 & 0x20" identifier = (binary_expression "uVar7 & 0x20" identifier & number_literal)) ;) (expression_statement "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);" (assignment_expression "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" identifier = (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_8 >> 1)" ( (binary_expression "param_8 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar7 & 0x1f)" ( (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" ~ identifier) & number_literal) ))) | (binary_expression "param_7 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = uVar2;\n  }" { (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" identifier = identifier) ;) })) (expression_statement "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);" (assignment_expression "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" identifier = (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f)" (parenthesized_expression "(param_9 << 1)" ( (binary_expression "param_9 << 1" identifier << number_literal) )) << (parenthesized_expression "(~uVar3 & 0x1f)" ( (binary_expression "~uVar3 & 0x1f" (unary_expression "~uVar3" ~ identifier) & number_literal) ))) | (binary_expression "param_10 >> (uVar3 & 0x1f)" identifier >> (parenthesized_expression "(uVar3 & 0x1f)" ( (binary_expression "uVar3 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar4 = uVar11;\n  }" { (expression_statement "uVar4 = uVar11;" (assignment_expression "uVar4 = uVar11" identifier = identifier) ;) })) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }" if (parenthesized_expression "((uVar3 & 0x20) != 0)" ( (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" ( (binary_expression "uVar3 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar11 = 0;\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) })) (expression_statement "uVar5 = param_10 << (uVar7 & 0x1f);" (assignment_expression "uVar5 = param_10 << (uVar7 & 0x1f)" identifier = (binary_expression "param_10 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);" (assignment_expression "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" identifier = (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_10 >> 1)" ( (binary_expression "param_10 >> 1" identifier >> number_literal) )) >> (parenthesized_expression "(~uVar7 & 0x1f)" ( (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" ~ identifier) & number_literal) ))) | (binary_expression "param_9 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" identifier = identifier) ;) })) (expression_statement "uVar11 = uVar11 | uVar6;" (assignment_expression "uVar11 = uVar11 | uVar6" identifier = (binary_expression "uVar11 | uVar6" identifier | identifier)) ;) (expression_statement "uVar4 = uVar4 | uVar2;" (assignment_expression "uVar4 = uVar4 | uVar2" identifier = (binary_expression "uVar4 | uVar2" identifier | identifier)) ;) (if_statement "if (uVar10 != 0) {\n    uVar5 = 0;\n  }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = 0;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) })) (if_statement "if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" if (parenthesized_expression "(0 < (int)uVar7)" ( (binary_expression "0 < (int)uVar7" number_literal < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);" do (compound_statement "{\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    }" { (while_statement "while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" while (parenthesized_expression "(((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))))" ( (parenthesized_expression "((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))" ( (binary_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" (parenthesized_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4))))" ( (binary_expression "uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))" (binary_expression "uVar11 < param_3" identifier < identifier) || (parenthesized_expression "((param_3 == uVar11 && (uVar4 < param_4)))" ( (parenthesized_expression "(param_3 == uVar11 && (uVar4 < param_4))" ( (binary_expression "param_3 == uVar11 && (uVar4 < param_4)" (binary_expression "param_3 == uVar11" identifier == identifier) && (parenthesized_expression "(uVar4 < param_4)" ( (binary_expression "uVar4 < param_4" identifier < identifier) ))) )) ))) )) || (parenthesized_expression "((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" ( (parenthesized_expression "(param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))" ( (binary_expression "param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" (binary_expression "param_3 == uVar11" identifier == identifier) && (parenthesized_expression "(((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" ( (parenthesized_expression "((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))" ( (binary_expression "(param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(param_4 == uVar4 && (uVar3 <= param_5))" ( (binary_expression "param_4 == uVar4 && (uVar3 <= param_5)" (binary_expression "param_4 == uVar4" identifier == identifier) && (parenthesized_expression "(uVar3 <= param_5)" ( (binary_expression "uVar3 <= param_5" identifier <= identifier) ))) )) && (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" ( (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" ( (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" identifier != identifier) || (parenthesized_expression "(uVar5 <= param_6)" ( (binary_expression "uVar5 <= param_6" identifier <= identifier) ))) )) ))) )) ))) )) ))) )) )) (compound_statement "{\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }" if (parenthesized_expression "((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6))))" ( (binary_expression "(uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(uVar3 <= param_5)" ( (binary_expression "uVar3 <= param_5" identifier <= identifier) )) && (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" ( (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" ( (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" identifier != identifier) || (parenthesized_expression "(uVar5 <= param_6)" ( (binary_expression "uVar5 <= param_6" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n          iVar9 = 0;\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (expression_statement "uVar6 = param_4 - uVar4;" (assignment_expression "uVar6 = param_4 - uVar4" identifier = (binary_expression "param_4 - uVar4" identifier - identifier)) ;) (expression_statement "bVar1 = param_4 < uVar6;" (assignment_expression "bVar1 = param_4 < uVar6" identifier = (binary_expression "param_4 < uVar6" identifier < identifier)) ;) (expression_statement "uVar12 = param_6 - uVar5;" (assignment_expression "uVar12 = param_6 - uVar5" identifier = (binary_expression "param_6 - uVar5" identifier - identifier)) ;) (expression_statement "param_4 = uVar6 - iVar9;" (assignment_expression "param_4 = uVar6 - iVar9" identifier = (binary_expression "uVar6 - iVar9" identifier - identifier)) ;) (expression_statement "uVar10 = uVar3 << 0x1f;" (assignment_expression "uVar10 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);" (assignment_expression "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12)" identifier = (binary_expression "(param_5 - uVar3) - (uint)(param_6 < uVar12)" (parenthesized_expression "(param_5 - uVar3)" ( (binary_expression "param_5 - uVar3" identifier - identifier) )) - (call_expression "(uint)(param_6 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_6 < uVar12)" ( (binary_expression "param_6 < uVar12" identifier < identifier) ))))) ;) (expression_statement "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);" (assignment_expression "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" identifier = (binary_expression "((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" (parenthesized_expression "((param_3 - uVar11) - (uint)bVar1)" ( (binary_expression "(param_3 - uVar11) - (uint)bVar1" (parenthesized_expression "(param_3 - uVar11)" ( (binary_expression "param_3 - uVar11" identifier - identifier) )) - (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) ))))) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar3 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar5 = uVar10 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar10 | uVar5 >> 1" identifier = (binary_expression "uVar10 | uVar5 >> 1" identifier | (binary_expression "uVar5 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" identifier = (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" identifier << number_literal) | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) (expression_statement "param_6 = uVar12;" (assignment_expression "param_6 = uVar12" identifier = identifier) ;) (if_statement "if (uVar7 == uVar2) goto LAB_00013ff8;" if (parenthesized_expression "(uVar7 == uVar2)" ( (binary_expression "uVar7 == uVar2" identifier == identifier) )) (goto_statement "goto LAB_00013ff8;" goto statement_identifier ;)) })) (expression_statement "uVar6 = uVar3 << 0x1f;" (assignment_expression "uVar6 = uVar3 << 0x1f" identifier = (binary_expression "uVar3 << 0x1f" identifier << number_literal)) ;) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" identifier = (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" identifier << number_literal) | (binary_expression "uVar3 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar5 = uVar6 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar6 | uVar5 >> 1" identifier = (binary_expression "uVar6 | uVar5 >> 1" identifier | (binary_expression "uVar5 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" identifier = (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" identifier << number_literal) | (binary_expression "uVar4 >> 1" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" identifier = (binary_expression "uVar11 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(uVar7 != uVar2)" ( (binary_expression "uVar7 != uVar2" identifier != identifier) )) ;) })) (labeled_statement "LAB_00013ff8:\n  *param_1 = param_3;" statement_identifier : (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE 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 ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT & LIT)) ; (binary_expression IDENT == LIT) ; (assignment_expression IDENT = (binary_expression IDENT & LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT & LIT)) ; (binary_expression IDENT == LIT) ; (assignment_expression IDENT = (binary_expression IDENT & LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (for_statement for ( ; (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << LIT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) >> (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT << LIT) )) << (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) | (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) >> (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) ))) )) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })))
(function_definition "void FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00013da4(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" (identifier "FUN_00013da4") (parameter_list "(uint *param_1,undefined4 param_2,uint param_3,uint param_4,uint param_5,\n                 uint param_6,uint param_7,uint param_8,uint param_9,uint param_10)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (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 "uint param_7" (type_identifier "uint") (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  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  \n  if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }\n  if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }\n  iVar9 = 0;\n  uVar3 = param_7;\n  uVar6 = param_8;\n  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }\n  iVar8 = 0;\n  uVar3 = param_3;\n  uVar6 = param_4;\n  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }\n  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }\n  uVar7 = iVar9 - iVar8;\n  uVar3 = 0x40 - uVar7;\n  uVar11 = param_9 >> (uVar3 & 0x1f);\n  uVar2 = param_8 << (uVar7 & 0x1f);\n  uVar10 = uVar7 & 0x20;\n  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }\n  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);\n  if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }\n  if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }\n  uVar5 = param_10 << (uVar7 & 0x1f);\n  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);\n  if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }\n  uVar11 = uVar11 | uVar6;\n  uVar4 = uVar4 | uVar2;\n  if (uVar10 != 0) {\n    uVar5 = 0;\n  }\n  if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }\nLAB_00013ff8:\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (if_statement "if (param_7 == 0 && param_8 == 0) {\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" (if "if") (parenthesized_expression "(param_7 == 0 && param_8 == 0)" (( "(") (binary_expression "param_7 == 0 && param_8 == 0" (binary_expression "param_7 == 0" (identifier "param_7") (== "==") (number_literal "0")) (&& "&&") (binary_expression "param_8 == 0" (identifier "param_8") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    (*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);\n    return;\n  }" ({ "{") (expression_statement "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);" (call_expression "(*(code *)PTR___assert_fail_00039238)\n              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" (parenthesized_expression "(*(code *)PTR___assert_fail_00039238)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_00039238" (* "*") (cast_expression "(code *)PTR___assert_fail_00039238" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_00039238"))) () ")")) (argument_list "(PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0)" (( "(") (binary_expression "PTR_LAB_00039108 + 0x4c18" (identifier "PTR_LAB_00039108") (+ "+") (number_literal "0x4c18")) (, ",") (binary_expression "PTR_LAB_00039108 + 0x4b84" (identifier "PTR_LAB_00039108") (+ "+") (number_literal "0x4b84")) (, ",") (number_literal "0x1a3") (, ",") (binary_expression "PTR_LAB_00039108 + 0x50a0" (identifier "PTR_LAB_00039108") (+ "+") (number_literal "0x50a0")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (param_3 == 0 && param_4 == 0) {\n    param_1[1] = 0;\n    *param_1 = 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    param_1[1] = 0;\n    *param_1 = 0;\n    return;\n  }" ({ "{") (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = param_7;" (assignment_expression "uVar3 = param_7" (identifier "uVar3") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uVar6 = param_8;" (assignment_expression "uVar6 = param_8" (identifier "uVar6") (= "=") (identifier "param_8")) (; ";")) (for_statement "for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" (for "for") (( "(") (assignment_expression "uVar2 = param_7 & 0xff000000" (identifier "uVar2") (= "=") (binary_expression "param_7 & 0xff000000" (identifier "param_7") (& "&") (number_literal "0xff000000"))) (; ";") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar2 = uVar2 & 0xff000000" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0xff000000" (identifier "uVar2") (& "&") (number_literal "0xff000000"))) () ")") (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar9 = iVar9 + 8;\n  }" ({ "{") (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" (identifier "uVar7") (= "=") (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" (identifier "uVar2") (= "=") (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 8" (identifier "uVar6") (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" (identifier "uVar3") (= "=") (binary_expression "uVar7 | uVar2" (identifier "uVar7") (| "|") (identifier "uVar2"))) (; ";")) (expression_statement "iVar9 = iVar9 + 8;" (assignment_expression "iVar9 = iVar9 + 8" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 8" (identifier "iVar9") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) (; ";") (assignment_expression "uVar3 = uVar2 | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar2 | uVar3 << 1" (identifier "uVar2") (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) () ")") (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar9 = iVar9 + 1;\n  }" ({ "{") (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" (identifier "uVar2") (= "=") (binary_expression "uVar6 >> 0x1f" (identifier "uVar6") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 1" (identifier "uVar6") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = param_3;" (assignment_expression "uVar3 = param_3" (identifier "uVar3") (= "=") (identifier "param_3")) (; ";")) (expression_statement "uVar6 = param_4;" (assignment_expression "uVar6 = param_4" (identifier "uVar6") (= "=") (identifier "param_4")) (; ";")) (for_statement "for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" (for "for") (( "(") (assignment_expression "uVar2 = param_3 & 0xff000000" (identifier "uVar2") (= "=") (binary_expression "param_3 & 0xff000000" (identifier "param_3") (& "&") (number_literal "0xff000000"))) (; ";") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) (; ";") (assignment_expression "uVar2 = uVar2 & 0xff000000" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0xff000000" (identifier "uVar2") (& "&") (number_literal "0xff000000"))) () ")") (compound_statement "{\n    uVar7 = uVar6 >> 0x18;\n    uVar2 = uVar3 << 8;\n    uVar6 = uVar6 << 8;\n    uVar3 = uVar7 | uVar2;\n    iVar8 = iVar8 + 8;\n  }" ({ "{") (expression_statement "uVar7 = uVar6 >> 0x18;" (assignment_expression "uVar7 = uVar6 >> 0x18" (identifier "uVar7") (= "=") (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18"))) (; ";")) (expression_statement "uVar2 = uVar3 << 8;" (assignment_expression "uVar2 = uVar3 << 8" (identifier "uVar2") (= "=") (binary_expression "uVar3 << 8" (identifier "uVar3") (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar6 = uVar6 << 8;" (assignment_expression "uVar6 = uVar6 << 8" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 8" (identifier "uVar6") (<< "<<") (number_literal "8"))) (; ";")) (expression_statement "uVar3 = uVar7 | uVar2;" (assignment_expression "uVar3 = uVar7 | uVar2" (identifier "uVar3") (= "=") (binary_expression "uVar7 | uVar2" (identifier "uVar7") (| "|") (identifier "uVar2"))) (; ";")) (expression_statement "iVar8 = iVar8 + 8;" (assignment_expression "iVar8 = iVar8 + 8" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (for_statement "for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" (for "for") (( "(") (; ";") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) (; ";") (assignment_expression "uVar3 = uVar2 | uVar3 << 1" (identifier "uVar3") (= "=") (binary_expression "uVar2 | uVar3 << 1" (identifier "uVar2") (| "|") (binary_expression "uVar3 << 1" (identifier "uVar3") (<< "<<") (number_literal "1")))) () ")") (compound_statement "{\n    uVar2 = uVar6 >> 0x1f;\n    uVar6 = uVar6 << 1;\n    iVar8 = iVar8 + 1;\n  }" ({ "{") (expression_statement "uVar2 = uVar6 >> 0x1f;" (assignment_expression "uVar2 = uVar6 >> 0x1f" (identifier "uVar2") (= "=") (binary_expression "uVar6 >> 0x1f" (identifier "uVar6") (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 1" (identifier "uVar6") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar7 = iVar9 - iVar8;" (assignment_expression "uVar7 = iVar9 - iVar8" (identifier "uVar7") (= "=") (binary_expression "iVar9 - iVar8" (identifier "iVar9") (- "-") (identifier "iVar8"))) (; ";")) (expression_statement "uVar3 = 0x40 - uVar7;" (assignment_expression "uVar3 = 0x40 - uVar7" (identifier "uVar3") (= "=") (binary_expression "0x40 - uVar7" (number_literal "0x40") (- "-") (identifier "uVar7"))) (; ";")) (expression_statement "uVar11 = param_9 >> (uVar3 & 0x1f);" (assignment_expression "uVar11 = param_9 >> (uVar3 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "param_9 >> (uVar3 & 0x1f)" (identifier "param_9") (>> ">>") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar2 = param_8 << (uVar7 & 0x1f);" (assignment_expression "uVar2 = param_8 << (uVar7 & 0x1f)" (identifier "uVar2") (= "=") (binary_expression "param_8 << (uVar7 & 0x1f)" (identifier "param_8") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar10 = uVar7 & 0x20;" (assignment_expression "uVar10 = uVar7 & 0x20" (identifier "uVar10") (= "=") (binary_expression "uVar7 & 0x20" (identifier "uVar7") (& "&") (number_literal "0x20"))) (; ";")) (expression_statement "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);" (assignment_expression "uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" (identifier "uVar6") (= "=") (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f)" (binary_expression "(param_8 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_8 >> 1)" (( "(") (binary_expression "param_8 >> 1" (identifier "param_8") (>> ">>") (number_literal "1")) () ")")) (>> ">>") (parenthesized_expression "(~uVar7 & 0x1f)" (( "(") (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" (~ "~") (identifier "uVar7")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_7 << (uVar7 & 0x1f)" (identifier "param_7") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if (uVar10 != 0) {\n    uVar6 = uVar2;\n  }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = uVar2;\n  }" ({ "{") (expression_statement "uVar6 = uVar2;" (assignment_expression "uVar6 = uVar2" (identifier "uVar6") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);" (assignment_expression "uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" (identifier "uVar4") (= "=") (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f)" (binary_expression "(param_9 << 1) << (~uVar3 & 0x1f)" (parenthesized_expression "(param_9 << 1)" (( "(") (binary_expression "param_9 << 1" (identifier "param_9") (<< "<<") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(~uVar3 & 0x1f)" (( "(") (binary_expression "~uVar3 & 0x1f" (unary_expression "~uVar3" (~ "~") (identifier "uVar3")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_10 >> (uVar3 & 0x1f)" (identifier "param_10") (>> ">>") (parenthesized_expression "(uVar3 & 0x1f)" (( "(") (binary_expression "uVar3 & 0x1f" (identifier "uVar3") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar4 = uVar11;\n  }" (if "if") (parenthesized_expression "((uVar3 & 0x20) != 0)" (( "(") (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" (( "(") (binary_expression "uVar3 & 0x20" (identifier "uVar3") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = uVar11;\n  }" ({ "{") (expression_statement "uVar4 = uVar11;" (assignment_expression "uVar4 = uVar11" (identifier "uVar4") (= "=") (identifier "uVar11")) (; ";")) (} "}"))) (if_statement "if ((uVar3 & 0x20) != 0) {\n    uVar11 = 0;\n  }" (if "if") (parenthesized_expression "((uVar3 & 0x20) != 0)" (( "(") (binary_expression "(uVar3 & 0x20) != 0" (parenthesized_expression "(uVar3 & 0x20)" (( "(") (binary_expression "uVar3 & 0x20" (identifier "uVar3") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = 0;\n  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar5 = param_10 << (uVar7 & 0x1f);" (assignment_expression "uVar5 = param_10 << (uVar7 & 0x1f)" (identifier "uVar5") (= "=") (binary_expression "param_10 << (uVar7 & 0x1f)" (identifier "param_10") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);" (assignment_expression "uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" (identifier "uVar3") (= "=") (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f)" (binary_expression "(param_10 >> 1) >> (~uVar7 & 0x1f)" (parenthesized_expression "(param_10 >> 1)" (( "(") (binary_expression "param_10 >> 1" (identifier "param_10") (>> ">>") (number_literal "1")) () ")")) (>> ">>") (parenthesized_expression "(~uVar7 & 0x1f)" (( "(") (binary_expression "~uVar7 & 0x1f" (unary_expression "~uVar7" (~ "~") (identifier "uVar7")) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_9 << (uVar7 & 0x1f)" (identifier "param_9") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if (uVar10 != 0) {\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = 0;\n    uVar3 = uVar5;\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = uVar5;" (assignment_expression "uVar3 = uVar5" (identifier "uVar3") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "uVar11 = uVar11 | uVar6;" (assignment_expression "uVar11 = uVar11 | uVar6" (identifier "uVar11") (= "=") (binary_expression "uVar11 | uVar6" (identifier "uVar11") (| "|") (identifier "uVar6"))) (; ";")) (expression_statement "uVar4 = uVar4 | uVar2;" (assignment_expression "uVar4 = uVar4 | uVar2" (identifier "uVar4") (= "=") (binary_expression "uVar4 | uVar2" (identifier "uVar4") (| "|") (identifier "uVar2"))) (; ";")) (if_statement "if (uVar10 != 0) {\n    uVar5 = 0;\n  }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = 0;\n  }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar7) {\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" (if "if") (parenthesized_expression "(0 < (int)uVar7)" (( "(") (binary_expression "0 < (int)uVar7" (number_literal "0") (< "<") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n    uVar2 = 0;\n    do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);\n  }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    } while (uVar7 != uVar2);" (do "do") (compound_statement "{\n      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }\n      uVar6 = uVar3 << 0x1f;\n      uVar2 = uVar2 + 1;\n      uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n      uVar5 = uVar6 | uVar5 >> 1;\n      uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n      uVar11 = uVar11 >> 1;\n    }" ({ "{") (while_statement "while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" (while "while") (parenthesized_expression "(((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))))" (( "(") (parenthesized_expression "((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))))" (( "(") (binary_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||\n             ((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" (parenthesized_expression "(uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4))))" (( "(") (binary_expression "uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))" (binary_expression "uVar11 < param_3" (identifier "uVar11") (< "<") (identifier "param_3")) (|| "||") (parenthesized_expression "((param_3 == uVar11 && (uVar4 < param_4)))" (( "(") (parenthesized_expression "(param_3 == uVar11 && (uVar4 < param_4))" (( "(") (binary_expression "param_3 == uVar11 && (uVar4 < param_4)" (binary_expression "param_3 == uVar11" (identifier "param_3") (== "==") (identifier "uVar11")) (&& "&&") (parenthesized_expression "(uVar4 < param_4)" (( "(") (binary_expression "uVar4 < param_4" (identifier "uVar4") (< "<") (identifier "param_4")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))))" (( "(") (parenthesized_expression "(param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))))" (( "(") (binary_expression "param_3 == uVar11 &&\n              (((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" (binary_expression "param_3 == uVar11" (identifier "param_3") (== "==") (identifier "uVar11")) (&& "&&") (parenthesized_expression "(((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))))" (( "(") (parenthesized_expression "((param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6))))" (( "(") (binary_expression "(param_4 == uVar4 && (uVar3 <= param_5)) &&\n               ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(param_4 == uVar4 && (uVar3 <= param_5))" (( "(") (binary_expression "param_4 == uVar4 && (uVar3 <= param_5)" (binary_expression "param_4 == uVar4" (identifier "param_4") (== "==") (identifier "uVar4")) (&& "&&") (parenthesized_expression "(uVar3 <= param_5)" (( "(") (binary_expression "uVar3 <= param_5" (identifier "uVar3") (<= "<=") (identifier "param_5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" (( "(") (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" (( "(") (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" (identifier "uVar3") (!= "!=") (identifier "param_5")) (|| "||") (parenthesized_expression "(uVar5 <= param_6)" (( "(") (binary_expression "uVar5 <= param_6" (identifier "uVar5") (<= "<=") (identifier "param_6")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n        iVar9 = 1;\n        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }\n        uVar6 = param_4 - uVar4;\n        bVar1 = param_4 < uVar6;\n        uVar12 = param_6 - uVar5;\n        param_4 = uVar6 - iVar9;\n        uVar10 = uVar3 << 0x1f;\n        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);\n        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);\n        uVar2 = uVar2 + 1;\n        uVar3 = uVar4 << 0x1f | uVar3 >> 1;\n        uVar5 = uVar10 | uVar5 >> 1;\n        uVar4 = uVar11 << 0x1f | uVar4 >> 1;\n        uVar11 = uVar11 >> 1;\n        param_6 = uVar12;\n        if (uVar7 == uVar2) goto LAB_00013ff8;\n      }" ({ "{") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {\n          iVar9 = 0;\n        }" (if "if") (parenthesized_expression "((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6))))" (( "(") (binary_expression "(uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))" (parenthesized_expression "(uVar3 <= param_5)" (( "(") (binary_expression "uVar3 <= param_5" (identifier "uVar3") (<= "<=") (identifier "param_5")) () ")")) (&& "&&") (parenthesized_expression "((uVar3 != param_5 || (uVar5 <= param_6)))" (( "(") (parenthesized_expression "(uVar3 != param_5 || (uVar5 <= param_6))" (( "(") (binary_expression "uVar3 != param_5 || (uVar5 <= param_6)" (binary_expression "uVar3 != param_5" (identifier "uVar3") (!= "!=") (identifier "param_5")) (|| "||") (parenthesized_expression "(uVar5 <= param_6)" (( "(") (binary_expression "uVar5 <= param_6" (identifier "uVar5") (<= "<=") (identifier "param_6")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          iVar9 = 0;\n        }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "uVar6 = param_4 - uVar4;" (assignment_expression "uVar6 = param_4 - uVar4" (identifier "uVar6") (= "=") (binary_expression "param_4 - uVar4" (identifier "param_4") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "bVar1 = param_4 < uVar6;" (assignment_expression "bVar1 = param_4 < uVar6" (identifier "bVar1") (= "=") (binary_expression "param_4 < uVar6" (identifier "param_4") (< "<") (identifier "uVar6"))) (; ";")) (expression_statement "uVar12 = param_6 - uVar5;" (assignment_expression "uVar12 = param_6 - uVar5" (identifier "uVar12") (= "=") (binary_expression "param_6 - uVar5" (identifier "param_6") (- "-") (identifier "uVar5"))) (; ";")) (expression_statement "param_4 = uVar6 - iVar9;" (assignment_expression "param_4 = uVar6 - iVar9" (identifier "param_4") (= "=") (binary_expression "uVar6 - iVar9" (identifier "uVar6") (- "-") (identifier "iVar9"))) (; ";")) (expression_statement "uVar10 = uVar3 << 0x1f;" (assignment_expression "uVar10 = uVar3 << 0x1f" (identifier "uVar10") (= "=") (binary_expression "uVar3 << 0x1f" (identifier "uVar3") (<< "<<") (number_literal "0x1f"))) (; ";")) (expression_statement "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);" (assignment_expression "param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12)" (identifier "param_5") (= "=") (binary_expression "(param_5 - uVar3) - (uint)(param_6 < uVar12)" (parenthesized_expression "(param_5 - uVar3)" (( "(") (binary_expression "param_5 - uVar3" (identifier "param_5") (- "-") (identifier "uVar3")) () ")")) (- "-") (call_expression "(uint)(param_6 < uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_6 < uVar12)" (( "(") (binary_expression "param_6 < uVar12" (identifier "param_6") (< "<") (identifier "uVar12")) () ")"))))) (; ";")) (expression_statement "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);" (assignment_expression "param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" (identifier "param_3") (= "=") (binary_expression "((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4)" (parenthesized_expression "((param_3 - uVar11) - (uint)bVar1)" (( "(") (binary_expression "(param_3 - uVar11) - (uint)bVar1" (parenthesized_expression "(param_3 - uVar11)" (( "(") (binary_expression "param_3 - uVar11" (identifier "param_3") (- "-") (identifier "uVar11")) () ")")) (- "-") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) () ")")) (- "-") (call_expression "(uint)(uVar6 < param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar6 < param_4)" (( "(") (binary_expression "uVar6 < param_4" (identifier "uVar6") (< "<") (identifier "param_4")) () ")"))))) (; ";")) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" (identifier "uVar4") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar5 = uVar10 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar10 | uVar5 >> 1" (identifier "uVar5") (= "=") (binary_expression "uVar10 | uVar5 >> 1" (identifier "uVar10") (| "|") (binary_expression "uVar5 >> 1" (identifier "uVar5") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" (identifier "uVar4") (= "=") (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" (identifier "uVar11") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar4 >> 1" (identifier "uVar4") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "param_6 = uVar12;" (assignment_expression "param_6 = uVar12" (identifier "param_6") (= "=") (identifier "uVar12")) (; ";")) (if_statement "if (uVar7 == uVar2) goto LAB_00013ff8;" (if "if") (parenthesized_expression "(uVar7 == uVar2)" (( "(") (binary_expression "uVar7 == uVar2" (identifier "uVar7") (== "==") (identifier "uVar2")) () ")")) (goto_statement "goto LAB_00013ff8;" (goto "goto") (statement_identifier "LAB_00013ff8") (; ";"))) (} "}"))) (expression_statement "uVar6 = uVar3 << 0x1f;" (assignment_expression "uVar6 = uVar3 << 0x1f" (identifier "uVar6") (= "=") (binary_expression "uVar3 << 0x1f" (identifier "uVar3") (<< "<<") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar2 = uVar2 + 1;" (assignment_expression "uVar2 = uVar2 + 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = uVar4 << 0x1f | uVar3 >> 1;" (assignment_expression "uVar3 = uVar4 << 0x1f | uVar3 >> 1" (identifier "uVar3") (= "=") (binary_expression "uVar4 << 0x1f | uVar3 >> 1" (binary_expression "uVar4 << 0x1f" (identifier "uVar4") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar5 = uVar6 | uVar5 >> 1;" (assignment_expression "uVar5 = uVar6 | uVar5 >> 1" (identifier "uVar5") (= "=") (binary_expression "uVar6 | uVar5 >> 1" (identifier "uVar6") (| "|") (binary_expression "uVar5 >> 1" (identifier "uVar5") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar4 = uVar11 << 0x1f | uVar4 >> 1;" (assignment_expression "uVar4 = uVar11 << 0x1f | uVar4 >> 1" (identifier "uVar4") (= "=") (binary_expression "uVar11 << 0x1f | uVar4 >> 1" (binary_expression "uVar11 << 0x1f" (identifier "uVar11") (<< "<<") (number_literal "0x1f")) (| "|") (binary_expression "uVar4 >> 1" (identifier "uVar4") (>> ">>") (number_literal "1")))) (; ";")) (expression_statement "uVar11 = uVar11 >> 1;" (assignment_expression "uVar11 = uVar11 >> 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 1" (identifier "uVar11") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 != uVar2)" (( "(") (binary_expression "uVar7 != uVar2" (identifier "uVar7") (!= "!=") (identifier "uVar2")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00013ff8:\n  *param_1 = param_3;" (statement_identifier "LAB_00013ff8") (: ":") (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";"))) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (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: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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 (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (return_statement))) (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 (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (for_statement condition: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (number_literal)))) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_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: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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: (identifier) right: (number_literal)))) (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))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))))

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

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  
  if (param_7 == 0 && param_8 == 0) {
    (*(code *)PTR___assert_fail_00039238)
              (PTR_LAB_00039108 + 0x4c18,PTR_LAB_00039108 + 0x4b84,0x1a3,PTR_LAB_00039108 + 0x50a0);
    return;
  }
  if (param_3 == 0 && param_4 == 0) {
    param_1[1] = 0;
    *param_1 = 0;
    return;
  }
  iVar9 = 0;
  uVar3 = param_7;
  uVar6 = param_8;
  for (uVar2 = param_7 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {
    uVar7 = uVar6 >> 0x18;
    uVar2 = uVar3 << 8;
    uVar6 = uVar6 << 8;
    uVar3 = uVar7 | uVar2;
    iVar9 = iVar9 + 8;
  }
  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {
    uVar2 = uVar6 >> 0x1f;
    uVar6 = uVar6 << 1;
    iVar9 = iVar9 + 1;
  }
  iVar8 = 0;
  uVar3 = param_3;
  uVar6 = param_4;
  for (uVar2 = param_3 & 0xff000000; uVar2 == 0; uVar2 = uVar2 & 0xff000000) {
    uVar7 = uVar6 >> 0x18;
    uVar2 = uVar3 << 8;
    uVar6 = uVar6 << 8;
    uVar3 = uVar7 | uVar2;
    iVar8 = iVar8 + 8;
  }
  for (; -1 < (int)uVar3; uVar3 = uVar2 | uVar3 << 1) {
    uVar2 = uVar6 >> 0x1f;
    uVar6 = uVar6 << 1;
    iVar8 = iVar8 + 1;
  }
  uVar7 = iVar9 - iVar8;
  uVar3 = 0x40 - uVar7;
  uVar11 = param_9 >> (uVar3 & 0x1f);
  uVar2 = param_8 << (uVar7 & 0x1f);
  uVar10 = uVar7 & 0x20;
  uVar6 = (param_8 >> 1) >> (~uVar7 & 0x1f) | param_7 << (uVar7 & 0x1f);
  if (uVar10 != 0) {
    uVar6 = uVar2;
  }
  uVar4 = (param_9 << 1) << (~uVar3 & 0x1f) | param_10 >> (uVar3 & 0x1f);
  if ((uVar3 & 0x20) != 0) {
    uVar4 = uVar11;
  }
  if ((uVar3 & 0x20) != 0) {
    uVar11 = 0;
  }
  uVar5 = param_10 << (uVar7 & 0x1f);
  uVar3 = (param_10 >> 1) >> (~uVar7 & 0x1f) | param_9 << (uVar7 & 0x1f);
  if (uVar10 != 0) {
    uVar2 = 0;
    uVar3 = uVar5;
  }
  uVar11 = uVar11 | uVar6;
  uVar4 = uVar4 | uVar2;
  if (uVar10 != 0) {
    uVar5 = 0;
  }
  if (0 < (int)uVar7) {
    uVar2 = 0;
    do {
      while (((uVar11 < param_3 || ((param_3 == uVar11 && (uVar4 < param_4)))) ||
             ((param_3 == uVar11 &&
              (((param_4 == uVar4 && (uVar3 <= param_5)) &&
               ((uVar3 != param_5 || (uVar5 <= param_6))))))))) {
        iVar9 = 1;
        if ((uVar3 <= param_5) && ((uVar3 != param_5 || (uVar5 <= param_6)))) {
          iVar9 = 0;
        }
        uVar6 = param_4 - uVar4;
        bVar1 = param_4 < uVar6;
        uVar12 = param_6 - uVar5;
        param_4 = uVar6 - iVar9;
        uVar10 = uVar3 << 0x1f;
        param_5 = (param_5 - uVar3) - (uint)(param_6 < uVar12);
        param_3 = ((param_3 - uVar11) - (uint)bVar1) - (uint)(uVar6 < param_4);
        uVar2 = uVar2 + 1;
        uVar3 = uVar4 << 0x1f | uVar3 >> 1;
        uVar5 = uVar10 | uVar5 >> 1;
        uVar4 = uVar11 << 0x1f | uVar4 >> 1;
        uVar11 = uVar11 >> 1;
        param_6 = uVar12;
        if (uVar7 == uVar2) goto LAB_00013ff8;
      }
      uVar6 = uVar3 << 0x1f;
      uVar2 = uVar2 + 1;
      uVar3 = uVar4 << 0x1f | uVar3 >> 1;
      uVar5 = uVar6 | uVar5 >> 1;
      uVar4 = uVar11 << 0x1f | uVar4 >> 1;
      uVar11 = uVar11 >> 1;
    } while (uVar7 != uVar2);
  }
LAB_00013ff8:
  *param_1 = param_3;
  param_1[1] = param_4;
  return;
}

