
int rpl_fcntl(int fd,int action,...)

{
  longlong lVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  undefined4 *puVar6;
  int *piVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint in_a2;
  uint in_a3;
  uint uVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  int target;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  va_list arg;
  
  puVar3 = PTR___stack_chk_guard_00030390;
  puVar2 = PTR_data_start_000300f8;
  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;
  if (action != 0x406) {
    iVar4 = (*(code *)PTR_fcntl64_000302dc)();
    goto LAB_0001c778;
  }
  if (*(int *)(PTR_data_start_000300f8 + 0x560) < 0) {
    action = 0;
    iVar4 = rpl_fcntl(fd,0);
    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;
  }
  else {
    uVar12 = in_a2;
    iVar4 = (*(code *)PTR_fcntl64_000302dc)();
    if ((-1 < iVar4) ||
       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {
      in_a2 = uVar12;
      *(undefined4 *)(puVar2 + 0x560) = 1;
      goto LAB_0001c778;
    }
    action = 0;
    iVar4 = rpl_fcntl(fd,0);
    if (iVar4 < 0) goto LAB_0001c778;
    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;
    iVar14 = iVar4;
  }
  action = 1;
  uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
  if (-1 < (int)uVar12) {
    action = 2;
    in_a2 = uVar12 | 1;
    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
    iVar4 = iVar14;
    if (iVar5 != -1) goto LAB_0001c778;
  }
  puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();
  uVar15 = *puVar6;
  iVar4 = -1;
  (*(code *)PTR_close_0003028c)(iVar14);
  *puVar6 = uVar15;
LAB_0001c778:
  if (uVar9 == *(uint *)puVar3) {
    return iVar4;
  }
  (*(code *)PTR___stack_chk_fail_0003036c)();
  if (in_a2 == 0) {
    if (in_a3 <= uVar9) {
      if (in_a3 == 0) {
        trap(7);
        in_a3 = 1 / 0;
      }
      uVar13 = LZCOUNT(in_a3);
      uVar12 = in_a3 >> 0x10;
      if (uVar13 == 0) {
        uVar13 = 1;
      }
      else {
        in_a3 = in_a3 << (uVar13 & 0x1f);
        uVar12 = in_a3 >> 0x10;
        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);
        if (uVar12 == 0) {
          trap(7);
        }
        uVar18 = uVar8 / uVar12;
        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);
        uVar10 = (in_a3 & 0xffff) * uVar18;
        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;
        uVar9 = uVar18;
        if (uVar13 < uVar10) {
          uVar13 = uVar13 + in_a3;
          uVar9 = uVar18 - 1;
          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {
            uVar9 = uVar18 - 2;
            uVar13 = uVar13 + in_a3;
          }
        }
        if (uVar12 == 0) {
          trap(7);
        }
        uVar18 = (uVar13 - uVar10) / uVar12;
        uVar8 = (in_a3 & 0xffff) * uVar18;
        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;
        uVar13 = uVar18;
        if (uVar10 < uVar8) {
          uVar10 = uVar10 + in_a3;
          uVar13 = uVar18 - 1;
          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {
            uVar13 = uVar18 - 2;
          }
        }
        uVar13 = uVar9 << 0x10 | uVar13;
      }
      if (uVar12 == 0) {
        trap(7);
        trap(7);
      }
      return uVar13;
    }
    if (LZCOUNT(in_a3) != 0) {
      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);
    }
    if (in_a3 >> 0x10 == 0) {
      trap(7);
      trap(7);
    }
    return 0;
  }
  if (uVar9 < in_a2) {
    return 0;
  }
  uVar12 = LZCOUNT(in_a2);
  if (uVar12 != 0) {
    uVar13 = 0x20 - uVar12;
    uVar8 = uVar9 >> (uVar13 & 0x1f);
    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);
    uVar10 = uVar11 >> 0x10;
    if (uVar10 == 0) {
      trap(7);
    }
    uVar16 = uVar8 / uVar10;
    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);
    uVar13 = (uVar11 & 0xffff) * uVar16;
    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;
    uVar9 = uVar16;
    if (uVar8 < uVar13) {
      uVar8 = uVar8 + uVar11;
      uVar9 = uVar16 - 1;
      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {
        uVar9 = uVar16 - 2;
        uVar8 = uVar8 + uVar11;
      }
    }
    if (uVar10 == 0) {
      trap(7);
    }
    uVar17 = (uVar8 - uVar13) / uVar10;
    uVar16 = (uVar11 & 0xffff) * uVar17;
    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;
    uVar13 = uVar17;
    if (uVar8 < uVar16) {
      uVar8 = uVar8 + uVar11;
      uVar13 = uVar17 - 1;
      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {
        uVar13 = uVar17 - 2;
        uVar8 = uVar8 + uVar11;
      }
    }
    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));
    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);
    if (uVar9 <= uVar8 - uVar16) {
      if (uVar8 - uVar16 != uVar9) {
        return 0;
      }
      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {
        return 0;
      }
    }
    return 0;
  }
  if (uVar9 <= in_a2) {
    return 0;
  }
  return 0;
}



ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)

{
  bool bVar1;
  longlong lVar2;
  undefined *puVar3;
  undefined *puVar4;
  int iVar5;
  int iVar6;
  undefined4 *puVar7;
  int *piVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  
  puVar4 = PTR___stack_chk_guard_00030390;
  puVar3 = PTR_DAT_000300f8;
  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;
  if (param_2 == 0x406) {
    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {
      param_2 = 0;
      iVar5 = rpl_fcntl();
      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {
LAB_0001c7d4:
        param_2 = 1;
        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
        if (-1 < (int)uVar10) {
          param_2 = 2;
          param_3 = uVar10 | 1;
          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
          iVar5 = iVar14;
          if (iVar6 != -1) goto LAB_0001c778;
        }
        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();
        uVar15 = *puVar7;
        iVar5 = -1;
        (*(code *)PTR_close_0003028c)(iVar14);
        *puVar7 = uVar15;
      }
    }
    else {
      uVar10 = param_3;
      iVar5 = (*(code *)PTR_fcntl64_000302dc)();
      if ((iVar5 < 0) &&
         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {
        param_2 = 0;
        iVar5 = rpl_fcntl(param_1);
        if (-1 < iVar5) {
          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;
          iVar14 = iVar5;
          goto LAB_0001c7d4;
        }
      }
      else {
        param_3 = uVar10;
        *(undefined4 *)(puVar3 + 0x560) = 1;
      }
    }
  }
  else {
    iVar5 = (*(code *)PTR_fcntl64_000302dc)();
  }
LAB_0001c778:
  if (uVar9 == *(uint *)puVar4) {
    return CONCAT44(iVar5,*(uint *)puVar4);
  }
  (*(code *)PTR___stack_chk_fail_0003036c)();
  if (param_3 != 0) {
    if (uVar9 < param_3) {
      return 0;
    }
    uVar10 = LZCOUNT(param_3);
    if (uVar10 == 0) {
      if (uVar9 <= param_3) {
        return (ulonglong)(param_2 < param_4) ^ 1;
      }
      return 1;
    }
    uVar11 = 0x20 - uVar10;
    uVar12 = uVar9 >> (uVar11 & 0x1f);
    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);
    uVar16 = uVar17 >> 0x10;
    if (uVar16 == 0) {
      trap(7);
    }
    uVar18 = uVar12 / uVar16;
    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);
    uVar11 = (uVar17 & 0xffff) * uVar18;
    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;
    uVar9 = uVar18;
    if (uVar12 < uVar11) {
      uVar12 = uVar12 + uVar17;
      uVar9 = uVar18 - 1;
      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {
        uVar9 = uVar18 - 2;
        uVar12 = uVar12 + uVar17;
      }
    }
    if (uVar16 == 0) {
      trap(7);
    }
    uVar19 = (uVar12 - uVar11) / uVar16;
    uVar18 = (uVar17 & 0xffff) * uVar19;
    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;
    uVar11 = uVar19;
    if (uVar12 < uVar18) {
      uVar12 = uVar12 + uVar17;
      uVar11 = uVar19 - 1;
      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {
        uVar11 = uVar19 - 2;
        uVar12 = uVar12 + uVar17;
      }
    }
    uVar11 = uVar9 << 0x10 | uVar11;
    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));
    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);
    if (uVar9 <= uVar12 - uVar18) {
      if (uVar12 - uVar18 != uVar9) {
        return (ulonglong)uVar11;
      }
      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;
      if (!bVar1) {
        return (ulonglong)CONCAT14(bVar1,uVar11);
      }
    }
    return (ulonglong)(uVar11 - 1);
  }
  uVar10 = LZCOUNT(param_4);
  if (uVar9 < param_4) {
    if (uVar10 != 0) {
      uVar11 = param_2 >> (-uVar10 & 0x1f);
      param_4 = param_4 << (uVar10 & 0x1f);
      param_2 = param_2 << (uVar10 & 0x1f);
      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);
    }
    uVar10 = param_4 >> 0x10;
    if (uVar10 == 0) {
      trap(7);
    }
    uVar16 = uVar9 / uVar10;
    uVar12 = (param_4 & 0xffff) * uVar16;
    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;
    uVar9 = uVar16;
    if (uVar11 < uVar12) {
      uVar11 = uVar11 + param_4;
      uVar9 = uVar16 - 1;
      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {
        uVar9 = uVar16 - 2;
        uVar11 = uVar11 + param_4;
      }
    }
    if (uVar10 == 0) {
      trap(7);
    }
    uVar17 = (uVar11 - uVar12) / uVar10;
    uVar16 = (param_4 & 0xffff) * uVar17;
    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;
    uVar10 = uVar17;
    if (uVar11 < uVar16) {
      uVar11 = param_4 + uVar11;
      uVar10 = uVar17 - 1;
      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {
        uVar10 = uVar17 - 2;
      }
    }
    return (ulonglong)(uVar9 << 0x10 | uVar10);
  }
  if (param_4 == 0) {
    trap(7);
    param_4 = 1 / 0;
  }
  uVar11 = LZCOUNT(param_4);
  uVar10 = param_4 >> 0x10;
  if (uVar11 == 0) {
    uVar9 = uVar9 - param_4;
    uVar12 = 1;
    uVar13 = param_4 & 0xffff;
  }
  else {
    param_4 = param_4 << (uVar11 & 0x1f);
    uVar10 = param_4 >> 0x10;
    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);
    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);
    if (uVar10 == 0) {
      trap(7);
    }
    uVar18 = uVar12 / uVar10;
    uVar13 = param_4 & 0xffff;
    param_2 = param_2 << (uVar11 & 0x1f);
    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);
    uVar17 = uVar13 * uVar18;
    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;
    uVar11 = uVar18;
    if (uVar9 < uVar17) {
      uVar9 = uVar9 + param_4;
      uVar11 = uVar18 - 1;
      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {
        uVar11 = uVar18 - 2;
        uVar9 = uVar9 + param_4;
      }
    }
    if (uVar10 == 0) {
      trap(7);
    }
    uVar19 = (uVar9 - uVar17) / uVar10;
    uVar18 = uVar13 * uVar19;
    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;
    uVar12 = uVar19;
    if (uVar9 < uVar18) {
      uVar9 = uVar9 + param_4;
      uVar12 = uVar19 - 1;
      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {
        uVar12 = uVar19 - 2;
        uVar9 = uVar9 + param_4;
      }
    }
    uVar9 = uVar9 - uVar18;
    uVar12 = uVar11 << 0x10 | uVar12;
  }
  if (uVar10 == 0) {
    trap(7);
  }
  uVar17 = uVar9 / uVar10;
  uVar11 = uVar17 * uVar13;
  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;
  uVar9 = uVar17;
  if (uVar16 < uVar11) {
    uVar16 = uVar16 + param_4;
    uVar9 = uVar17 - 1;
    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {
      uVar16 = uVar16 + param_4;
      uVar9 = uVar17 - 2;
    }
  }
  if (uVar10 == 0) {
    trap(7);
  }
  uVar17 = (uVar16 - uVar11) / uVar10;
  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;
  uVar11 = param_4 + uVar10;
  if (uVar10 < uVar17 * uVar13) {
    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {
      uVar17 = uVar9 << 0x10 | uVar17 - 1;
      goto LAB_0001ca70;
    }
    uVar17 = uVar17 - 2;
  }
  uVar17 = uVar9 << 0x10 | uVar17;
LAB_0001ca70:
  return CONCAT44(uVar12,uVar17);
}


lui gp,0x2
addiu gp,gp,-0x4620
addu gp,gp,t9
addiu sp,sp,-0x38
li v0,0x406
addiu v1,sp,0x40
sw s0,0x20(sp)
sw a2,0x40(sp)
sw a3,0x44(sp)
sw v1,0x18(sp)
lw s0,-0x7d40(gp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
lw v1,0x0(s0)
sw v1,0x1c(sp)
bne a1,v0,0x0001c840
_lw s2,-0x7fd8(gp)
addiu v0,sp,0x44
sw v0,0x18(sp)
lw v0,0x560(s2)
bltz v0,0x0001c7a8
_or s4,a2,zero
lw t9,-0x7df4(gp)
jalr t9
_or s3,a0,zero
lw gp,0x10(sp)
bltz v0,0x0001c858
_or s1,v0,zero
li v0,0x1
sw v0,0x560(s2)
lw a0,0x1c(sp)
or v0,s1,zero
lw v1,0x0(s0)
bne a0,v1,0x0001c8a4
_lw ra,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3910
bal 0x0001c6f0
_or a1,zero,zero
lw gp,0x10(sp)
bltz v0,0x0001c778
_or s1,v0,zero
lw v1,0x560(s2)
li v0,-0x1
bne v1,v0,0x0001c778
_nop
lw t9,-0x7df4(gp)
li a1,0x1
jalr t9
_or a0,s1,zero
bltz v0,0x0001c80c
_lw gp,0x10(sp)
lw t9,-0x7df4(gp)
li a1,0x2
ori a2,v0,0x1
jalr t9
_or a0,s1,zero
li v1,-0x1
bne v0,v1,0x0001c778
_lw gp,0x10(sp)
lw t9,-0x7de0(gp)
jalr t9
_nop
or a0,s1,zero
lw gp,0x10(sp)
or s2,v0,zero
lw s3,0x0(v0)
lw t9,-0x7e44(gp)
jalr t9
_li s1,-0x1
lw gp,0x10(sp)
b 0x0001c778
_sw s3,0x0(s2)
lw t9,-0x7df4(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x0001c778
_or s1,v0,zero
lw t9,-0x7de0(gp)
jalr t9
_nop
li v1,0x16
lw v0,0x0(v0)
bne v0,v1,0x0001c770
_lw gp,0x10(sp)
lw t9,-0x7fc8(gp)
or a1,zero,zero
or a2,s4,zero
addiu t9,t9,-0x3910
bal 0x0001c6f0
_or a0,s3,zero
lw gp,0x10(sp)
bltz v0,0x0001c778
_or s1,v0,zero
li v0,-0x1
b 0x0001c7d4
_sw v0,0x560(s2)
lw t9,-0x7d64(gp)
jalr t9
_nop
(translation_unit "ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}\n\n" (function_definition "ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" type_identifier (function_declarator "rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 param_1,uint param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00030390;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00030390" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_000300f8;" (assignment_expression "puVar3 = PTR_DAT_000300f8" identifier = identifier) ;) (expression_statement "uVar9 = *(uint *)PTR___stack_chk_guard_00030390;" (assignment_expression "uVar9 = *(uint *)PTR___stack_chk_guard_00030390" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00030390" * (cast_expression "(uint *)PTR___stack_chk_guard_00030390" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" if (parenthesized_expression "(param_2 == 0x406)" ( (binary_expression "param_2 == 0x406" identifier == number_literal) )) (compound_statement "{\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }" { (if_statement "if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" if (parenthesized_expression "(*(int *)(PTR_DAT_000300f8 + 0x560) < 0)" ( (binary_expression "*(int *)(PTR_DAT_000300f8 + 0x560) < 0" (pointer_expression "*(int *)(PTR_DAT_000300f8 + 0x560)" * (cast_expression "(int *)(PTR_DAT_000300f8 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000300f8 + 0x560)" ( (binary_expression "PTR_DAT_000300f8 + 0x560" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }" { (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = rpl_fcntl();" (assignment_expression "iVar5 = rpl_fcntl()" identifier = (call_expression "rpl_fcntl()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" if (parenthesized_expression "((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1))" ( (binary_expression "(-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) && (parenthesized_expression "(iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" ( (comma_expression "iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1" (assignment_expression "iVar14 = iVar5" identifier = identifier) , (binary_expression "*(int *)(puVar3 + 0x560) == -1" (pointer_expression "*(int *)(puVar3 + 0x560)" * (cast_expression "(int *)(puVar3 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" { (labeled_statement "LAB_0001c7d4:\n        param_2 = 1;" statement_identifier : (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" identifier = number_literal) ;)) (expression_statement "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (if_statement "if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" if (parenthesized_expression "(-1 < (int)uVar10)" ( (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" { (expression_statement "param_2 = 2;" (assignment_expression "param_2 = 2" identifier = number_literal) ;) (expression_statement "param_3 = uVar10 | 1;" (assignment_expression "param_3 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (expression_statement "iVar5 = iVar14;" (assignment_expression "iVar5 = iVar14" identifier = identifier) ;) (if_statement "if (iVar6 != -1) goto LAB_0001c778;" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_close_0003028c)(iVar14);" (call_expression "(*(code *)PTR_close_0003028c)(iVar14)" (parenthesized_expression "(*(code *)PTR_close_0003028c)" ( (pointer_expression "*(code *)PTR_close_0003028c" * (cast_expression "(code *)PTR_close_0003028c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier ))) ;) (expression_statement "*puVar7 = uVar15;" (assignment_expression "*puVar7 = uVar15" (pointer_expression "*puVar7" * identifier) = identifier) ;) })) }) (else_clause "else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" else (compound_statement "{\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" { (expression_statement "uVar10 = param_3;" (assignment_expression "uVar10 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" if (parenthesized_expression "((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16))" ( (binary_expression "(iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) && (parenthesized_expression "(piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" ( (comma_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16" (assignment_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) , (binary_expression "*piVar8 == 0x16" (pointer_expression "*piVar8" * identifier) == number_literal)) ))) )) (compound_statement "{\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }" { (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = rpl_fcntl(param_1);" (assignment_expression "iVar5 = rpl_fcntl(param_1)" identifier = (call_expression "rpl_fcntl(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" { (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" * (cast_expression "(undefined4 *)(puVar3 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = iVar5;" (assignment_expression "iVar14 = iVar5" identifier = identifier) ;) (goto_statement "goto LAB_0001c7d4;" goto statement_identifier ;) })) }) (else_clause "else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" else (compound_statement "{\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" { (expression_statement "param_3 = uVar10;" (assignment_expression "param_3 = uVar10" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 1;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 1" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" * (cast_expression "(undefined4 *)(puVar3 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) = number_literal) ;) }))) }))) }) (else_clause "else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" else (compound_statement "{\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" { (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) }))) (labeled_statement "LAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" statement_identifier : (if_statement "if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" if (parenthesized_expression "(uVar9 == *(uint *)puVar4)" ( (binary_expression "uVar9 == *(uint *)puVar4" identifier == (pointer_expression "*(uint *)puVar4" * (cast_expression "(uint *)puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" { (return_statement "return CONCAT44(iVar5,*(uint *)puVar4);" return (call_expression "CONCAT44(iVar5,*(uint *)puVar4)" identifier (argument_list "(iVar5,*(uint *)puVar4)" ( identifier , (pointer_expression "*(uint *)puVar4" * (cast_expression "(uint *)puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003036c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003036c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003036c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003036c" * (cast_expression "(code *)PTR___stack_chk_fail_0003036c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" { (if_statement "if (uVar9 < param_3) {\n      return 0;\n    }" if (parenthesized_expression "(uVar9 < param_3)" ( (binary_expression "uVar9 < param_3" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar10 = LZCOUNT(param_3);" (assignment_expression "uVar10 = LZCOUNT(param_3)" identifier = (call_expression "LZCOUNT(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" { (if_statement "if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" if (parenthesized_expression "(uVar9 <= param_3)" ( (binary_expression "uVar9 <= param_3" identifier <= identifier) )) (compound_statement "{\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" { (return_statement "return (ulonglong)(param_2 < param_4) ^ 1;" return (binary_expression "(ulonglong)(param_2 < param_4) ^ 1" (call_expression "(ulonglong)(param_2 < param_4)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))) ^ number_literal) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar11 = 0x20 - uVar10;" (assignment_expression "uVar11 = 0x20 - uVar10" identifier = (binary_expression "0x20 - uVar10" number_literal - identifier)) ;) (expression_statement "uVar12 = uVar9 >> (uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (uVar11 & 0x1f)" identifier = (binary_expression "uVar9 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);" (assignment_expression "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" (binary_expression "param_4 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_3 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar16 = uVar17 >> 0x10;" (assignment_expression "uVar16 = uVar17 >> 0x10" identifier = (binary_expression "uVar17 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = uVar12 / uVar16;" (assignment_expression "uVar18 = uVar12 / uVar16" identifier = (binary_expression "uVar12 / uVar16" identifier / identifier)) ;) (expression_statement "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" (binary_expression "param_2 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar9 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar11 = (uVar17 & 0xffff) * uVar18;" (assignment_expression "uVar11 = (uVar17 & 0xffff) * uVar18" identifier = (binary_expression "(uVar17 & 0xffff) * uVar18" (parenthesized_expression "(uVar17 & 0xffff)" ( (binary_expression "uVar17 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;" (assignment_expression "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" identifier = (binary_expression "uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" (binary_expression "uVar12 % uVar16 << 0x10" (binary_expression "uVar12 % uVar16" identifier % identifier) << number_literal) | (binary_expression "uVar13 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar18;" (assignment_expression "uVar9 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" if (parenthesized_expression "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) )) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" { (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) (expression_statement "uVar9 = uVar18 - 1;" (assignment_expression "uVar9 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" if (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar11))" ( (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar11)" (parenthesized_expression "(uVar17 <= uVar12)" ( (binary_expression "uVar17 <= uVar12" identifier <= identifier) )) && (parenthesized_expression "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" { (expression_statement "uVar9 = uVar18 - 2;" (assignment_expression "uVar9 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) })) })) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar19 = (uVar12 - uVar11) / uVar16;" (assignment_expression "uVar19 = (uVar12 - uVar11) / uVar16" identifier = (binary_expression "(uVar12 - uVar11) / uVar16" (parenthesized_expression "(uVar12 - uVar11)" ( (binary_expression "uVar12 - uVar11" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar18 = (uVar17 & 0xffff) * uVar19;" (assignment_expression "uVar18 = (uVar17 & 0xffff) * uVar19" identifier = (binary_expression "(uVar17 & 0xffff) * uVar19" (parenthesized_expression "(uVar17 & 0xffff)" ( (binary_expression "uVar17 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;" (assignment_expression "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" identifier = (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10" (binary_expression "(uVar12 - uVar11) % uVar16" (parenthesized_expression "(uVar12 - uVar11)" ( (binary_expression "uVar12 - uVar11" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar13 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar11 = uVar19;" (assignment_expression "uVar11 = uVar19" identifier = identifier) ;) (if_statement "if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" if (parenthesized_expression "(uVar12 < uVar18)" ( (binary_expression "uVar12 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" { (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) (expression_statement "uVar11 = uVar19 - 1;" (assignment_expression "uVar11 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" if (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar18))" ( (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar18)" (parenthesized_expression "(uVar17 <= uVar12)" ( (binary_expression "uVar17 <= uVar12" identifier <= identifier) )) && (parenthesized_expression "(uVar12 < uVar18)" ( (binary_expression "uVar12 < uVar18" identifier < identifier) ))) )) (compound_statement "{\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" { (expression_statement "uVar11 = uVar19 - 2;" (assignment_expression "uVar11 = uVar19 - 2" identifier = (binary_expression "uVar19 - 2" identifier - number_literal)) ;) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) })) })) (expression_statement "uVar11 = uVar9 << 0x10 | uVar11;" (assignment_expression "uVar11 = uVar9 << 0x10 | uVar11" identifier = (binary_expression "uVar9 << 0x10 | uVar11" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));" (assignment_expression "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (call_expression "(ulonglong)(param_4 << (uVar10 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(param_4 << (uVar10 & 0x1f))" ( (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar9 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" if (parenthesized_expression "(uVar9 <= uVar12 - uVar18)" ( (binary_expression "uVar9 <= uVar12 - uVar18" identifier <= (binary_expression "uVar12 - uVar18" identifier - identifier)) )) (compound_statement "{\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" { (if_statement "if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }" if (parenthesized_expression "(uVar12 - uVar18 != uVar9)" ( (binary_expression "uVar12 - uVar18 != uVar9" (binary_expression "uVar12 - uVar18" identifier - identifier) != identifier) )) (compound_statement "{\n        return (ulonglong)uVar11;\n      }" { (return_statement "return (ulonglong)uVar11;" return (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) ;) })) (expression_statement "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;" (assignment_expression "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2" identifier = (binary_expression "param_2 << (uVar10 & 0x1f) < (uint)lVar2" (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" { (return_statement "return (ulonglong)CONCAT14(bVar1,uVar11);" return (cast_expression "(ulonglong)CONCAT14(bVar1,uVar11)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(bVar1,uVar11)" identifier (argument_list "(bVar1,uVar11)" ( identifier , identifier )))) ;) })) })) (return_statement "return (ulonglong)(uVar11 - 1);" return (call_expression "(ulonglong)(uVar11 - 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar11 - 1)" ( (binary_expression "uVar11 - 1" identifier - number_literal) ))) ;) })) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" if (parenthesized_expression "(uVar9 < param_4)" ( (binary_expression "uVar9 < param_4" identifier < identifier) )) (compound_statement "{\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" { (if_statement "if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" { (expression_statement "uVar11 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar11 = param_2 >> (-uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (-uVar10 & 0x1f)" identifier >> (parenthesized_expression "(-uVar10 & 0x1f)" ( (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" - identifier) & number_literal) )))) ;) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar11 | uVar9 << (uVar10 & 0x1f)" identifier | (binary_expression "uVar9 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = uVar9 / uVar10;" (assignment_expression "uVar16 = uVar9 / uVar10" identifier = (binary_expression "uVar9 / uVar10" identifier / identifier)) ;) (expression_statement "uVar12 = (param_4 & 0xffff) * uVar16;" (assignment_expression "uVar12 = (param_4 & 0xffff) * uVar16" identifier = (binary_expression "(param_4 & 0xffff) * uVar16" (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" identifier = identifier) ;) (if_statement "if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar11 < uVar12)" ( (binary_expression "uVar11 < uVar12" identifier < identifier) )) (compound_statement "{\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" { (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" identifier = (binary_expression "uVar11 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar16 - 1;" (assignment_expression "uVar9 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar12))" ( (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar12)" (parenthesized_expression "(param_4 <= uVar11)" ( (binary_expression "param_4 <= uVar11" identifier <= identifier) )) && (parenthesized_expression "(uVar11 < uVar12)" ( (binary_expression "uVar11 < uVar12" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" { (expression_statement "uVar9 = uVar16 - 2;" (assignment_expression "uVar9 = uVar16 - 2" identifier = (binary_expression "uVar16 - 2" identifier - number_literal)) ;) (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" identifier = (binary_expression "uVar11 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar11 - uVar12) / uVar10;" (assignment_expression "uVar17 = (uVar11 - uVar12) / uVar10" identifier = (binary_expression "(uVar11 - uVar12) / uVar10" (parenthesized_expression "(uVar11 - uVar12)" ( (binary_expression "uVar11 - uVar12" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar16 = (param_4 & 0xffff) * uVar17;" (assignment_expression "uVar16 = (param_4 & 0xffff) * uVar17" identifier = (binary_expression "(param_4 & 0xffff) * uVar17" (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10" (binary_expression "(uVar11 - uVar12) % uVar10" (parenthesized_expression "(uVar11 - uVar12)" ( (binary_expression "uVar11 - uVar12" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar10 = uVar17;" (assignment_expression "uVar10 = uVar17" identifier = identifier) ;) (if_statement "if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" if (parenthesized_expression "(uVar11 < uVar16)" ( (binary_expression "uVar11 < uVar16" identifier < identifier) )) (compound_statement "{\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" { (expression_statement "uVar11 = param_4 + uVar11;" (assignment_expression "uVar11 = param_4 + uVar11" identifier = (binary_expression "param_4 + uVar11" identifier + identifier)) ;) (expression_statement "uVar10 = uVar17 - 1;" (assignment_expression "uVar10 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }" if (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar16))" ( (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar16)" (parenthesized_expression "(param_4 <= uVar11)" ( (binary_expression "param_4 <= uVar11" identifier <= identifier) )) && (parenthesized_expression "(uVar11 < uVar16)" ( (binary_expression "uVar11 < uVar16" identifier < identifier) ))) )) (compound_statement "{\n        uVar10 = uVar17 - 2;\n      }" { (expression_statement "uVar10 = uVar17 - 2;" (assignment_expression "uVar10 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) })) (return_statement "return (ulonglong)(uVar9 << 0x10 | uVar10);" return (call_expression "(ulonglong)(uVar9 << 0x10 | uVar10)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 << 0x10 | uVar10)" ( (binary_expression "uVar9 << 0x10 | uVar10" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier) ))) ;) })) (if_statement "if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n    param_4 = 1 / 0;\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar11 = LZCOUNT(param_4);" (assignment_expression "uVar11 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }" { (expression_statement "uVar9 = uVar9 - param_4;" (assignment_expression "uVar9 = uVar9 - param_4" identifier = (binary_expression "uVar9 - param_4" identifier - identifier)) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" else (compound_statement "{\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" { (expression_statement "param_4 = param_4 << (uVar11 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar11 & 0x1f)" identifier = (binary_expression "param_4 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f)" identifier = (binary_expression "uVar9 >> (0x20 - uVar11 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar11 & 0x1f)" ( (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" number_literal - identifier) & number_literal) )))) ;) (expression_statement "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f)" identifier = (binary_expression "param_2 >> (0x20 - uVar11 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar11 & 0x1f)" ( (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" number_literal - identifier) & number_literal) )))) ;) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = uVar12 / uVar10;" (assignment_expression "uVar18 = uVar12 / uVar10" identifier = (binary_expression "uVar12 / uVar10" identifier / identifier)) ;) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) (expression_statement "param_2 = param_2 << (uVar11 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar11 & 0x1f)" identifier = (binary_expression "param_2 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);" (assignment_expression "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f)" identifier = (binary_expression "uVar16 | uVar9 << (uVar11 & 0x1f)" identifier | (binary_expression "uVar9 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar17 = uVar13 * uVar18;" (assignment_expression "uVar17 = uVar13 * uVar18" identifier = (binary_expression "uVar13 * uVar18" identifier * identifier)) ;) (expression_statement "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;" (assignment_expression "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" identifier = (binary_expression "uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" (binary_expression "uVar12 % uVar10 << 0x10" (binary_expression "uVar12 % uVar10" identifier % identifier) << number_literal) | (binary_expression "uVar16 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) (if_statement "if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar9 < uVar17)" ( (binary_expression "uVar9 < uVar17" identifier < identifier) )) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" { (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) (expression_statement "uVar11 = uVar18 - 1;" (assignment_expression "uVar11 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar17))" ( (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar17)" (parenthesized_expression "(param_4 <= uVar9)" ( (binary_expression "param_4 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar17)" ( (binary_expression "uVar9 < uVar17" identifier < identifier) ))) )) (compound_statement "{\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" { (expression_statement "uVar11 = uVar18 - 2;" (assignment_expression "uVar11 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar19 = (uVar9 - uVar17) / uVar10;" (assignment_expression "uVar19 = (uVar9 - uVar17) / uVar10" identifier = (binary_expression "(uVar9 - uVar17) / uVar10" (parenthesized_expression "(uVar9 - uVar17)" ( (binary_expression "uVar9 - uVar17" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar18 = uVar13 * uVar19;" (assignment_expression "uVar18 = uVar13 * uVar19" identifier = (binary_expression "uVar13 * uVar19" identifier * identifier)) ;) (expression_statement "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;" (assignment_expression "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" identifier = (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10" (binary_expression "(uVar9 - uVar17) % uVar10" (parenthesized_expression "(uVar9 - uVar17)" ( (binary_expression "uVar9 - uVar17" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar16 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar12 = uVar19;" (assignment_expression "uVar12 = uVar19" identifier = identifier) ;) (if_statement "if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" { (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) (expression_statement "uVar12 = uVar19 - 1;" (assignment_expression "uVar12 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar18))" ( (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar18)" (parenthesized_expression "(param_4 <= uVar9)" ( (binary_expression "param_4 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) ))) )) (compound_statement "{\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" { (expression_statement "uVar12 = uVar19 - 2;" (assignment_expression "uVar12 = uVar19 - 2" identifier = (binary_expression "uVar19 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar9 = uVar9 - uVar18;" (assignment_expression "uVar9 = uVar9 - uVar18" identifier = (binary_expression "uVar9 - uVar18" identifier - identifier)) ;) (expression_statement "uVar12 = uVar11 << 0x10 | uVar12;" (assignment_expression "uVar12 = uVar11 << 0x10 | uVar12" identifier = (binary_expression "uVar11 << 0x10 | uVar12" (binary_expression "uVar11 << 0x10" identifier << number_literal) | identifier)) ;) }))) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = uVar9 / uVar10;" (assignment_expression "uVar17 = uVar9 / uVar10" identifier = (binary_expression "uVar9 / uVar10" identifier / identifier)) ;) (expression_statement "uVar11 = uVar17 * uVar13;" (assignment_expression "uVar11 = uVar17 * uVar13" identifier = (binary_expression "uVar17 * uVar13" identifier * identifier)) ;) (expression_statement "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar17;" (assignment_expression "uVar9 = uVar17" identifier = identifier) ;) (if_statement "if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" if (parenthesized_expression "(uVar16 < uVar11)" ( (binary_expression "uVar16 < uVar11" identifier < identifier) )) (compound_statement "{\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" { (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar17 - 1;" (assignment_expression "uVar9 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" if (parenthesized_expression "((param_4 <= uVar16) && (uVar16 < uVar11))" ( (binary_expression "(param_4 <= uVar16) && (uVar16 < uVar11)" (parenthesized_expression "(param_4 <= uVar16)" ( (binary_expression "param_4 <= uVar16" identifier <= identifier) )) && (parenthesized_expression "(uVar16 < uVar11)" ( (binary_expression "uVar16 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" { (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar17 - 2;" (assignment_expression "uVar9 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) })) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar16 - uVar11) / uVar10;" (assignment_expression "uVar17 = (uVar16 - uVar11) / uVar10" identifier = (binary_expression "(uVar16 - uVar11) / uVar10" (parenthesized_expression "(uVar16 - uVar11)" ( (binary_expression "uVar16 - uVar11" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10" (binary_expression "(uVar16 - uVar11) % uVar10" (parenthesized_expression "(uVar16 - uVar11)" ( (binary_expression "uVar16 - uVar11" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar11 = param_4 + uVar10;" (assignment_expression "uVar11 = param_4 + uVar10" identifier = (binary_expression "param_4 + uVar10" identifier + identifier)) ;) (if_statement "if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" if (parenthesized_expression "(uVar10 < uVar17 * uVar13)" ( (binary_expression "uVar10 < uVar17 * uVar13" identifier < (binary_expression "uVar17 * uVar13" identifier * identifier)) )) (compound_statement "{\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" { (if_statement "if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" if (parenthesized_expression "((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11))" ( (binary_expression "(uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)" (parenthesized_expression "(uVar11 < param_4)" ( (binary_expression "uVar11 < param_4" identifier < identifier) )) || (parenthesized_expression "(uVar17 * uVar13 <= uVar11)" ( (binary_expression "uVar17 * uVar13 <= uVar11" (binary_expression "uVar17 * uVar13" identifier * identifier) <= identifier) ))) )) (compound_statement "{\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" { (expression_statement "uVar17 = uVar9 << 0x10 | uVar17 - 1;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17 - 1" identifier = (binary_expression "uVar9 << 0x10 | uVar17 - 1" (binary_expression "uVar9 << 0x10" identifier << number_literal) | (binary_expression "uVar17 - 1" identifier - number_literal))) ;) (goto_statement "goto LAB_0001ca70;" goto statement_identifier ;) })) (expression_statement "uVar17 = uVar17 - 2;" (assignment_expression "uVar17 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) (expression_statement "uVar17 = uVar9 << 0x10 | uVar17;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17" identifier = (binary_expression "uVar9 << 0x10 | uVar17" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (labeled_statement "LAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);" statement_identifier : (return_statement "return CONCAT44(uVar12,uVar17);" return (call_expression "CONCAT44(uVar12,uVar17)" identifier (argument_list "(uVar12,uVar17)" ( identifier , identifier ))) ;)) })))
(translation_unit "int rpl_fcntl(int fd,int action,...)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint in_a2;\n  uint in_a3;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int target;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  va_list arg;\n  \n  puVar3 = PTR___stack_chk_guard_00030390;\n  puVar2 = PTR_data_start_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (action != 0x406) {\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    goto LAB_0001c778;\n  }\n  if (*(int *)(PTR_data_start_000300f8 + 0x560) < 0) {\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;\n  }\n  else {\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }\n  action = 1;\n  uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n  if (-1 < (int)uVar12) {\n    action = 2;\n    in_a2 = uVar12 | 1;\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n    iVar4 = iVar14;\n    if (iVar5 != -1) goto LAB_0001c778;\n  }\n  puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n  uVar15 = *puVar6;\n  iVar4 = -1;\n  (*(code *)PTR_close_0003028c)(iVar14);\n  *puVar6 = uVar15;\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar3) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (in_a2 == 0) {\n    if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }\n    if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }\n    if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }\n    return 0;\n  }\n  if (uVar9 < in_a2) {\n    return 0;\n  }\n  uVar12 = LZCOUNT(in_a2);\n  if (uVar12 != 0) {\n    uVar13 = 0x20 - uVar12;\n    uVar8 = uVar9 >> (uVar13 & 0x1f);\n    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);\n    uVar10 = uVar11 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar8 / uVar10;\n    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);\n    uVar13 = (uVar11 & 0xffff) * uVar16;\n    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar8 - uVar13) / uVar10;\n    uVar16 = (uVar11 & 0xffff) * uVar17;\n    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;\n    uVar13 = uVar17;\n    if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);\n    if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }\n    return 0;\n  }\n  if (uVar9 <= in_a2) {\n    return 0;\n  }\n  return 0;\n}\n\n" (function_definition "int rpl_fcntl(int fd,int action,...)\n\n{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint in_a2;\n  uint in_a3;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int target;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  va_list arg;\n  \n  puVar3 = PTR___stack_chk_guard_00030390;\n  puVar2 = PTR_data_start_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (action != 0x406) {\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    goto LAB_0001c778;\n  }\n  if (*(int *)(PTR_data_start_000300f8 + 0x560) < 0) {\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;\n  }\n  else {\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }\n  action = 1;\n  uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n  if (-1 < (int)uVar12) {\n    action = 2;\n    in_a2 = uVar12 | 1;\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n    iVar4 = iVar14;\n    if (iVar5 != -1) goto LAB_0001c778;\n  }\n  puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n  uVar15 = *puVar6;\n  iVar4 = -1;\n  (*(code *)PTR_close_0003028c)(iVar14);\n  *puVar6 = uVar15;\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar3) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (in_a2 == 0) {\n    if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }\n    if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }\n    if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }\n    return 0;\n  }\n  if (uVar9 < in_a2) {\n    return 0;\n  }\n  uVar12 = LZCOUNT(in_a2);\n  if (uVar12 != 0) {\n    uVar13 = 0x20 - uVar12;\n    uVar8 = uVar9 >> (uVar13 & 0x1f);\n    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);\n    uVar10 = uVar11 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar8 / uVar10;\n    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);\n    uVar13 = (uVar11 & 0xffff) * uVar16;\n    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar8 - uVar13) / uVar10;\n    uVar16 = (uVar11 & 0xffff) * uVar17;\n    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;\n    uVar13 = uVar17;\n    if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);\n    if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }\n    return 0;\n  }\n  if (uVar9 <= in_a2) {\n    return 0;\n  }\n  return 0;\n}" primitive_type (function_declarator "rpl_fcntl(int fd,int action,...)" identifier (parameter_list "(int fd,int action,...)" ( (parameter_declaration "int fd" primitive_type identifier) , (parameter_declaration "int action" primitive_type identifier) , (variadic_parameter "..." ...) ))) (compound_statement "{\n  longlong lVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  undefined4 *puVar6;\n  int *piVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint in_a2;\n  uint in_a3;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int target;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  va_list arg;\n  \n  puVar3 = PTR___stack_chk_guard_00030390;\n  puVar2 = PTR_data_start_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (action != 0x406) {\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    goto LAB_0001c778;\n  }\n  if (*(int *)(PTR_data_start_000300f8 + 0x560) < 0) {\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;\n  }\n  else {\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }\n  action = 1;\n  uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n  if (-1 < (int)uVar12) {\n    action = 2;\n    in_a2 = uVar12 | 1;\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n    iVar4 = iVar14;\n    if (iVar5 != -1) goto LAB_0001c778;\n  }\n  puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n  uVar15 = *puVar6;\n  iVar4 = -1;\n  (*(code *)PTR_close_0003028c)(iVar14);\n  *puVar6 = uVar15;\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar3) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (in_a2 == 0) {\n    if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }\n    if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }\n    if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }\n    return 0;\n  }\n  if (uVar9 < in_a2) {\n    return 0;\n  }\n  uVar12 = LZCOUNT(in_a2);\n  if (uVar12 != 0) {\n    uVar13 = 0x20 - uVar12;\n    uVar8 = uVar9 >> (uVar13 & 0x1f);\n    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);\n    uVar10 = uVar11 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar8 / uVar10;\n    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);\n    uVar13 = (uVar11 & 0xffff) * uVar16;\n    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar8 - uVar13) / uVar10;\n    uVar16 = (uVar11 & 0xffff) * uVar17;\n    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;\n    uVar13 = uVar17;\n    if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);\n    if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }\n    return 0;\n  }\n  if (uVar9 <= in_a2) {\n    return 0;\n  }\n  return 0;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "int target;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "va_list arg;" type_identifier identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00030390;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00030390" identifier = identifier) ;) (expression_statement "puVar2 = PTR_data_start_000300f8;" (assignment_expression "puVar2 = PTR_data_start_000300f8" identifier = identifier) ;) (expression_statement "uVar9 = *(uint *)PTR___stack_chk_guard_00030390;" (assignment_expression "uVar9 = *(uint *)PTR___stack_chk_guard_00030390" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00030390" * (cast_expression "(uint *)PTR___stack_chk_guard_00030390" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (action != 0x406) {\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    goto LAB_0001c778;\n  }" if (parenthesized_expression "(action != 0x406)" ( (binary_expression "action != 0x406" identifier != number_literal) )) (compound_statement "{\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    goto LAB_0001c778;\n  }" { (expression_statement "iVar4 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar4 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;) })) (if_statement "if (*(int *)(PTR_data_start_000300f8 + 0x560) < 0) {\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;\n  }\n  else {\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }" if (parenthesized_expression "(*(int *)(PTR_data_start_000300f8 + 0x560) < 0)" ( (binary_expression "*(int *)(PTR_data_start_000300f8 + 0x560) < 0" (pointer_expression "*(int *)(PTR_data_start_000300f8 + 0x560)" * (cast_expression "(int *)(PTR_data_start_000300f8 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_data_start_000300f8 + 0x560)" ( (binary_expression "PTR_data_start_000300f8 + 0x560" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;\n  }" { (expression_statement "action = 0;" (assignment_expression "action = 0" identifier = number_literal) ;) (expression_statement "iVar4 = rpl_fcntl(fd,0);" (assignment_expression "iVar4 = rpl_fcntl(fd,0)" identifier = (call_expression "rpl_fcntl(fd,0)" identifier (argument_list "(fd,0)" ( identifier , number_literal )))) ;) (if_statement "if ((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)) goto LAB_0001c778;" if (parenthesized_expression "((iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1))" ( (binary_expression "(iVar4 < 0) || (iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)" (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) || (parenthesized_expression "(iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1)" ( (comma_expression "iVar14 = iVar4, *(int *)(puVar2 + 0x560) != -1" (assignment_expression "iVar14 = iVar4" identifier = identifier) , (binary_expression "*(int *)(puVar2 + 0x560) != -1" (pointer_expression "*(int *)(puVar2 + 0x560)" * (cast_expression "(int *)(puVar2 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x560)" ( (binary_expression "puVar2 + 0x560" identifier + number_literal) )))) != number_literal)) ))) )) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;)) }) (else_clause "else {\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }" else (compound_statement "{\n    uVar12 = in_a2;\n    iVar4 = (*(code *)PTR_fcntl64_000302dc)();\n    if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }\n    action = 0;\n    iVar4 = rpl_fcntl(fd,0);\n    if (iVar4 < 0) goto LAB_0001c778;\n    *(undefined4 *)(puVar2 + 0x560) = 0xffffffff;\n    iVar14 = iVar4;\n  }" { (expression_statement "uVar12 = in_a2;" (assignment_expression "uVar12 = in_a2" identifier = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar4 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if ((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }" if (parenthesized_expression "((-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16))" ( (binary_expression "(-1 < iVar4) ||\n       (piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)" (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) || (parenthesized_expression "(piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)" ( (comma_expression "piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar7 != 0x16" (assignment_expression "piVar7 = (int *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) , (binary_expression "*piVar7 != 0x16" (pointer_expression "*piVar7" * identifier) != number_literal)) ))) )) (compound_statement "{\n      in_a2 = uVar12;\n      *(undefined4 *)(puVar2 + 0x560) = 1;\n      goto LAB_0001c778;\n    }" { (expression_statement "in_a2 = uVar12;" (assignment_expression "in_a2 = uVar12" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar2 + 0x560) = 1;" (assignment_expression "*(undefined4 *)(puVar2 + 0x560) = 1" (pointer_expression "*(undefined4 *)(puVar2 + 0x560)" * (cast_expression "(undefined4 *)(puVar2 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x560)" ( (binary_expression "puVar2 + 0x560" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;) })) (expression_statement "action = 0;" (assignment_expression "action = 0" identifier = number_literal) ;) (expression_statement "iVar4 = rpl_fcntl(fd,0);" (assignment_expression "iVar4 = rpl_fcntl(fd,0)" identifier = (call_expression "rpl_fcntl(fd,0)" identifier (argument_list "(fd,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar4 < 0) goto LAB_0001c778;" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar2 + 0x560) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar2 + 0x560) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar2 + 0x560)" * (cast_expression "(undefined4 *)(puVar2 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x560)" ( (binary_expression "puVar2 + 0x560" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = iVar4;" (assignment_expression "iVar14 = iVar4" identifier = identifier) ;) }))) (expression_statement "action = 1;" (assignment_expression "action = 1" identifier = number_literal) ;) (expression_statement "uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "uVar12 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (if_statement "if (-1 < (int)uVar12) {\n    action = 2;\n    in_a2 = uVar12 | 1;\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n    iVar4 = iVar14;\n    if (iVar5 != -1) goto LAB_0001c778;\n  }" if (parenthesized_expression "(-1 < (int)uVar12)" ( (binary_expression "-1 < (int)uVar12" number_literal < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    action = 2;\n    in_a2 = uVar12 | 1;\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n    iVar4 = iVar14;\n    if (iVar5 != -1) goto LAB_0001c778;\n  }" { (expression_statement "action = 2;" (assignment_expression "action = 2" identifier = number_literal) ;) (expression_statement "in_a2 = uVar12 | 1;" (assignment_expression "in_a2 = uVar12 | 1" identifier = (binary_expression "uVar12 | 1" identifier | number_literal)) ;) (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (expression_statement "iVar4 = iVar14;" (assignment_expression "iVar4 = iVar14" identifier = identifier) ;) (if_statement "if (iVar5 != -1) goto LAB_0001c778;" if (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;)) })) (expression_statement "puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();" (assignment_expression "puVar6 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar15 = *puVar6;" (assignment_expression "uVar15 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_close_0003028c)(iVar14);" (call_expression "(*(code *)PTR_close_0003028c)(iVar14)" (parenthesized_expression "(*(code *)PTR_close_0003028c)" ( (pointer_expression "*(code *)PTR_close_0003028c" * (cast_expression "(code *)PTR_close_0003028c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier ))) ;) (expression_statement "*puVar6 = uVar15;" (assignment_expression "*puVar6 = uVar15" (pointer_expression "*puVar6" * identifier) = identifier) ;) (labeled_statement "LAB_0001c778:\n  if (uVar9 == *(uint *)puVar3) {\n    return iVar4;\n  }" statement_identifier : (if_statement "if (uVar9 == *(uint *)puVar3) {\n    return iVar4;\n  }" if (parenthesized_expression "(uVar9 == *(uint *)puVar3)" ( (binary_expression "uVar9 == *(uint *)puVar3" identifier == (pointer_expression "*(uint *)puVar3" * (cast_expression "(uint *)puVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003036c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003036c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003036c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003036c" * (cast_expression "(code *)PTR___stack_chk_fail_0003036c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (in_a2 == 0) {\n    if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }\n    if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }\n    if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }\n    return 0;\n  }" if (parenthesized_expression "(in_a2 == 0)" ( (binary_expression "in_a2 == 0" identifier == number_literal) )) (compound_statement "{\n    if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }\n    if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }\n    if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }\n    return 0;\n  }" { (if_statement "if (in_a3 <= uVar9) {\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }" if (parenthesized_expression "(in_a3 <= uVar9)" ( (binary_expression "in_a3 <= uVar9" identifier <= identifier) )) (compound_statement "{\n      if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }\n      uVar13 = LZCOUNT(in_a3);\n      uVar12 = in_a3 >> 0x10;\n      if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }\n      if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }\n      return uVar13;\n    }" { (if_statement "if (in_a3 == 0) {\n        trap(7);\n        in_a3 = 1 / 0;\n      }" if (parenthesized_expression "(in_a3 == 0)" ( (binary_expression "in_a3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n        in_a3 = 1 / 0;\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "in_a3 = 1 / 0;" (assignment_expression "in_a3 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar13 = LZCOUNT(in_a3);" (assignment_expression "uVar13 = LZCOUNT(in_a3)" identifier = (call_expression "LZCOUNT(in_a3)" identifier (argument_list "(in_a3)" ( identifier )))) ;) (expression_statement "uVar12 = in_a3 >> 0x10;" (assignment_expression "uVar12 = in_a3 >> 0x10" identifier = (binary_expression "in_a3 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar13 == 0) {\n        uVar13 = 1;\n      }\n      else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar13 = 1;\n      }" { (expression_statement "uVar13 = 1;" (assignment_expression "uVar13 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }" else (compound_statement "{\n        in_a3 = in_a3 << (uVar13 & 0x1f);\n        uVar12 = in_a3 >> 0x10;\n        uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = uVar8 / uVar12;\n        uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);\n        uVar10 = (in_a3 & 0xffff) * uVar18;\n        uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;\n        uVar9 = uVar18;\n        if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }\n        if (uVar12 == 0) {\n          trap(7);\n        }\n        uVar18 = (uVar13 - uVar10) / uVar12;\n        uVar8 = (in_a3 & 0xffff) * uVar18;\n        uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;\n        uVar13 = uVar18;\n        if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }\n        uVar13 = uVar9 << 0x10 | uVar13;\n      }" { (expression_statement "in_a3 = in_a3 << (uVar13 & 0x1f);" (assignment_expression "in_a3 = in_a3 << (uVar13 & 0x1f)" identifier = (binary_expression "in_a3 << (uVar13 & 0x1f)" identifier << (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar12 = in_a3 >> 0x10;" (assignment_expression "uVar12 = in_a3 >> 0x10" identifier = (binary_expression "in_a3 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f);" (assignment_expression "uVar8 = uVar9 >> (0x20 - uVar13 & 0x1f)" identifier = (binary_expression "uVar9 >> (0x20 - uVar13 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar13 & 0x1f)" ( (binary_expression "0x20 - uVar13 & 0x1f" (binary_expression "0x20 - uVar13" number_literal - identifier) & number_literal) )))) ;) (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = uVar8 / uVar12;" (assignment_expression "uVar18 = uVar8 / uVar12" identifier = (binary_expression "uVar8 / uVar12" identifier / identifier)) ;) (expression_statement "uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f);" (assignment_expression "uVar11 = (uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f)" identifier = (binary_expression "(uint)action >> (0x20 - uVar13 & 0x1f) | uVar9 << (uVar13 & 0x1f)" (binary_expression "(uint)action >> (0x20 - uVar13 & 0x1f)" (cast_expression "(uint)action" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(0x20 - uVar13 & 0x1f)" ( (binary_expression "0x20 - uVar13 & 0x1f" (binary_expression "0x20 - uVar13" number_literal - identifier) & number_literal) ))) | (binary_expression "uVar9 << (uVar13 & 0x1f)" identifier << (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar10 = (in_a3 & 0xffff) * uVar18;" (assignment_expression "uVar10 = (in_a3 & 0xffff) * uVar18" identifier = (binary_expression "(in_a3 & 0xffff) * uVar18" (parenthesized_expression "(in_a3 & 0xffff)" ( (binary_expression "in_a3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10;" (assignment_expression "uVar13 = uVar8 % uVar12 << 0x10 | uVar11 >> 0x10" identifier = (binary_expression "uVar8 % uVar12 << 0x10 | uVar11 >> 0x10" (binary_expression "uVar8 % uVar12 << 0x10" (binary_expression "uVar8 % uVar12" identifier % identifier) << number_literal) | (binary_expression "uVar11 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar18;" (assignment_expression "uVar9 = uVar18" identifier = identifier) ;) (if_statement "if (uVar13 < uVar10) {\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }" if (parenthesized_expression "(uVar13 < uVar10)" ( (binary_expression "uVar13 < uVar10" identifier < identifier) )) (compound_statement "{\n          uVar13 = uVar13 + in_a3;\n          uVar9 = uVar18 - 1;\n          if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }\n        }" { (expression_statement "uVar13 = uVar13 + in_a3;" (assignment_expression "uVar13 = uVar13 + in_a3" identifier = (binary_expression "uVar13 + in_a3" identifier + identifier)) ;) (expression_statement "uVar9 = uVar18 - 1;" (assignment_expression "uVar9 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((in_a3 <= uVar13) && (uVar13 < uVar10)) {\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }" if (parenthesized_expression "((in_a3 <= uVar13) && (uVar13 < uVar10))" ( (binary_expression "(in_a3 <= uVar13) && (uVar13 < uVar10)" (parenthesized_expression "(in_a3 <= uVar13)" ( (binary_expression "in_a3 <= uVar13" identifier <= identifier) )) && (parenthesized_expression "(uVar13 < uVar10)" ( (binary_expression "uVar13 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n            uVar9 = uVar18 - 2;\n            uVar13 = uVar13 + in_a3;\n          }" { (expression_statement "uVar9 = uVar18 - 2;" (assignment_expression "uVar9 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) (expression_statement "uVar13 = uVar13 + in_a3;" (assignment_expression "uVar13 = uVar13 + in_a3" identifier = (binary_expression "uVar13 + in_a3" identifier + identifier)) ;) })) })) (if_statement "if (uVar12 == 0) {\n          trap(7);\n        }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n          trap(7);\n        }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = (uVar13 - uVar10) / uVar12;" (assignment_expression "uVar18 = (uVar13 - uVar10) / uVar12" identifier = (binary_expression "(uVar13 - uVar10) / uVar12" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar8 = (in_a3 & 0xffff) * uVar18;" (assignment_expression "uVar8 = (in_a3 & 0xffff) * uVar18" identifier = (binary_expression "(in_a3 & 0xffff) * uVar18" (parenthesized_expression "(in_a3 & 0xffff)" ( (binary_expression "in_a3 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff;" (assignment_expression "uVar10 = (uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff" identifier = (binary_expression "(uVar13 - uVar10) % uVar12 << 0x10 | uVar11 & 0xffff" (binary_expression "(uVar13 - uVar10) % uVar12 << 0x10" (binary_expression "(uVar13 - uVar10) % uVar12" (parenthesized_expression "(uVar13 - uVar10)" ( (binary_expression "uVar13 - uVar10" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar11 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar13 = uVar18;" (assignment_expression "uVar13 = uVar18" identifier = identifier) ;) (if_statement "if (uVar10 < uVar8) {\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }" if (parenthesized_expression "(uVar10 < uVar8)" ( (binary_expression "uVar10 < uVar8" identifier < identifier) )) (compound_statement "{\n          uVar10 = uVar10 + in_a3;\n          uVar13 = uVar18 - 1;\n          if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }\n        }" { (expression_statement "uVar10 = uVar10 + in_a3;" (assignment_expression "uVar10 = uVar10 + in_a3" identifier = (binary_expression "uVar10 + in_a3" identifier + identifier)) ;) (expression_statement "uVar13 = uVar18 - 1;" (assignment_expression "uVar13 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((in_a3 <= uVar10) && (uVar10 < uVar8)) {\n            uVar13 = uVar18 - 2;\n          }" if (parenthesized_expression "((in_a3 <= uVar10) && (uVar10 < uVar8))" ( (binary_expression "(in_a3 <= uVar10) && (uVar10 < uVar8)" (parenthesized_expression "(in_a3 <= uVar10)" ( (binary_expression "in_a3 <= uVar10" identifier <= identifier) )) && (parenthesized_expression "(uVar10 < uVar8)" ( (binary_expression "uVar10 < uVar8" identifier < identifier) ))) )) (compound_statement "{\n            uVar13 = uVar18 - 2;\n          }" { (expression_statement "uVar13 = uVar18 - 2;" (assignment_expression "uVar13 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) })) })) (expression_statement "uVar13 = uVar9 << 0x10 | uVar13;" (assignment_expression "uVar13 = uVar9 << 0x10 | uVar13" identifier = (binary_expression "uVar9 << 0x10 | uVar13" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) }))) (if_statement "if (uVar12 == 0) {\n        trap(7);\n        trap(7);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return uVar13;" return identifier ;) })) (if_statement "if (LZCOUNT(in_a3) != 0) {\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }" if (parenthesized_expression "(LZCOUNT(in_a3) != 0)" ( (binary_expression "LZCOUNT(in_a3) != 0" (call_expression "LZCOUNT(in_a3)" identifier (argument_list "(in_a3)" ( identifier ))) != number_literal) )) (compound_statement "{\n      in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);\n    }" { (expression_statement "in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU);" (assignment_expression "in_a3 = in_a3 << (LZCOUNT(in_a3) & 0x1fU)" identifier = (binary_expression "in_a3 << (LZCOUNT(in_a3) & 0x1fU)" identifier << (parenthesized_expression "(LZCOUNT(in_a3) & 0x1fU)" ( (binary_expression "LZCOUNT(in_a3) & 0x1fU" (call_expression "LZCOUNT(in_a3)" identifier (argument_list "(in_a3)" ( identifier ))) & number_literal) )))) ;) })) (if_statement "if (in_a3 >> 0x10 == 0) {\n      trap(7);\n      trap(7);\n    }" if (parenthesized_expression "(in_a3 >> 0x10 == 0)" ( (binary_expression "in_a3 >> 0x10 == 0" (binary_expression "in_a3 >> 0x10" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      trap(7);\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar9 < in_a2) {\n    return 0;\n  }" if (parenthesized_expression "(uVar9 < in_a2)" ( (binary_expression "uVar9 < in_a2" identifier < identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar12 = LZCOUNT(in_a2);" (assignment_expression "uVar12 = LZCOUNT(in_a2)" identifier = (call_expression "LZCOUNT(in_a2)" identifier (argument_list "(in_a2)" ( identifier )))) ;) (if_statement "if (uVar12 != 0) {\n    uVar13 = 0x20 - uVar12;\n    uVar8 = uVar9 >> (uVar13 & 0x1f);\n    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);\n    uVar10 = uVar11 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar8 / uVar10;\n    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);\n    uVar13 = (uVar11 & 0xffff) * uVar16;\n    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar8 - uVar13) / uVar10;\n    uVar16 = (uVar11 & 0xffff) * uVar17;\n    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;\n    uVar13 = uVar17;\n    if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);\n    if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }\n    return 0;\n  }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar13 = 0x20 - uVar12;\n    uVar8 = uVar9 >> (uVar13 & 0x1f);\n    uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);\n    uVar10 = uVar11 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar8 / uVar10;\n    uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);\n    uVar13 = (uVar11 & 0xffff) * uVar16;\n    uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar8 - uVar13) / uVar10;\n    uVar16 = (uVar11 & 0xffff) * uVar17;\n    uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;\n    uVar13 = uVar17;\n    if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }\n    lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar1 >> 0x20);\n    if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }\n    return 0;\n  }" { (expression_statement "uVar13 = 0x20 - uVar12;" (assignment_expression "uVar13 = 0x20 - uVar12" identifier = (binary_expression "0x20 - uVar12" number_literal - identifier)) ;) (expression_statement "uVar8 = uVar9 >> (uVar13 & 0x1f);" (assignment_expression "uVar8 = uVar9 >> (uVar13 & 0x1f)" identifier = (binary_expression "uVar9 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f);" (assignment_expression "uVar11 = in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f)" identifier = (binary_expression "in_a3 >> (uVar13 & 0x1f) | in_a2 << (uVar12 & 0x1f)" (binary_expression "in_a3 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) | (binary_expression "in_a2 << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar10 = uVar11 >> 0x10;" (assignment_expression "uVar10 = uVar11 >> 0x10" identifier = (binary_expression "uVar11 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = uVar8 / uVar10;" (assignment_expression "uVar16 = uVar8 / uVar10" identifier = (binary_expression "uVar8 / uVar10" identifier / identifier)) ;) (expression_statement "uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f);" (assignment_expression "uVar18 = (uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f)" identifier = (binary_expression "(uint)action >> (uVar13 & 0x1f) | uVar9 << (uVar12 & 0x1f)" (binary_expression "(uint)action >> (uVar13 & 0x1f)" (cast_expression "(uint)action" ( (type_descriptor "uint" type_identifier) ) identifier) >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar9 << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar13 = (uVar11 & 0xffff) * uVar16;" (assignment_expression "uVar13 = (uVar11 & 0xffff) * uVar16" identifier = (binary_expression "(uVar11 & 0xffff) * uVar16" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10;" (assignment_expression "uVar8 = uVar8 % uVar10 << 0x10 | uVar18 >> 0x10" identifier = (binary_expression "uVar8 % uVar10 << 0x10 | uVar18 >> 0x10" (binary_expression "uVar8 % uVar10 << 0x10" (binary_expression "uVar8 % uVar10" identifier % identifier) << number_literal) | (binary_expression "uVar18 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" identifier = identifier) ;) (if_statement "if (uVar8 < uVar13) {\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }" if (parenthesized_expression "(uVar8 < uVar13)" ( (binary_expression "uVar8 < uVar13" identifier < identifier) )) (compound_statement "{\n      uVar8 = uVar8 + uVar11;\n      uVar9 = uVar16 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }" { (expression_statement "uVar8 = uVar8 + uVar11;" (assignment_expression "uVar8 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "uVar9 = uVar16 - 1;" (assignment_expression "uVar9 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar11 <= uVar8) && (uVar8 < uVar13)) {\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }" if (parenthesized_expression "((uVar11 <= uVar8) && (uVar8 < uVar13))" ( (binary_expression "(uVar11 <= uVar8) && (uVar8 < uVar13)" (parenthesized_expression "(uVar11 <= uVar8)" ( (binary_expression "uVar11 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "(uVar8 < uVar13)" ( (binary_expression "uVar8 < uVar13" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar16 - 2;\n        uVar8 = uVar8 + uVar11;\n      }" { (expression_statement "uVar9 = uVar16 - 2;" (assignment_expression "uVar9 = uVar16 - 2" identifier = (binary_expression "uVar16 - 2" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + uVar11;" (assignment_expression "uVar8 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar8 - uVar13) / uVar10;" (assignment_expression "uVar17 = (uVar8 - uVar13) / uVar10" identifier = (binary_expression "(uVar8 - uVar13) / uVar10" (parenthesized_expression "(uVar8 - uVar13)" ( (binary_expression "uVar8 - uVar13" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar16 = (uVar11 & 0xffff) * uVar17;" (assignment_expression "uVar16 = (uVar11 & 0xffff) * uVar17" identifier = (binary_expression "(uVar11 & 0xffff) * uVar17" (parenthesized_expression "(uVar11 & 0xffff)" ( (binary_expression "uVar11 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff;" (assignment_expression "uVar8 = (uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff" identifier = (binary_expression "(uVar8 - uVar13) % uVar10 << 0x10 | uVar18 & 0xffff" (binary_expression "(uVar8 - uVar13) % uVar10 << 0x10" (binary_expression "(uVar8 - uVar13) % uVar10" (parenthesized_expression "(uVar8 - uVar13)" ( (binary_expression "uVar8 - uVar13" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar18 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar13 = uVar17;" (assignment_expression "uVar13 = uVar17" identifier = identifier) ;) (if_statement "if (uVar8 < uVar16) {\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }" if (parenthesized_expression "(uVar8 < uVar16)" ( (binary_expression "uVar8 < uVar16" identifier < identifier) )) (compound_statement "{\n      uVar8 = uVar8 + uVar11;\n      uVar13 = uVar17 - 1;\n      if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }\n    }" { (expression_statement "uVar8 = uVar8 + uVar11;" (assignment_expression "uVar8 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "uVar13 = uVar17 - 1;" (assignment_expression "uVar13 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar11 <= uVar8) && (uVar8 < uVar16)) {\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }" if (parenthesized_expression "((uVar11 <= uVar8) && (uVar8 < uVar16))" ( (binary_expression "(uVar11 <= uVar8) && (uVar8 < uVar16)" (parenthesized_expression "(uVar11 <= uVar8)" ( (binary_expression "uVar11 <= uVar8" identifier <= identifier) )) && (parenthesized_expression "(uVar8 < uVar16)" ( (binary_expression "uVar8 < uVar16" identifier < identifier) ))) )) (compound_statement "{\n        uVar13 = uVar17 - 2;\n        uVar8 = uVar8 + uVar11;\n      }" { (expression_statement "uVar13 = uVar17 - 2;" (assignment_expression "uVar13 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + uVar11;" (assignment_expression "uVar8 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) })) })) (expression_statement "lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f));" (assignment_expression "lVar1 = (ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f))" identifier = (binary_expression "(ulonglong)(uVar9 << 0x10 | uVar13) * (ulonglong)(in_a3 << (uVar12 & 0x1f))" (call_expression "(ulonglong)(uVar9 << 0x10 | uVar13)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 << 0x10 | uVar13)" ( (binary_expression "uVar9 << 0x10 | uVar13" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier) ))) * (call_expression "(ulonglong)(in_a3 << (uVar12 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(in_a3 << (uVar12 & 0x1f))" ( (binary_expression "in_a3 << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar9 = (uint)((ulonglong)lVar1 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar1 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar1 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar9 <= uVar8 - uVar16) {\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }" if (parenthesized_expression "(uVar9 <= uVar8 - uVar16)" ( (binary_expression "uVar9 <= uVar8 - uVar16" identifier <= (binary_expression "uVar8 - uVar16" identifier - identifier)) )) (compound_statement "{\n      if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }\n      if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }\n    }" { (if_statement "if (uVar8 - uVar16 != uVar9) {\n        return 0;\n      }" if (parenthesized_expression "(uVar8 - uVar16 != uVar9)" ( (binary_expression "uVar8 - uVar16 != uVar9" (binary_expression "uVar8 - uVar16" identifier - identifier) != identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))) {\n        return 0;\n      }" if (parenthesized_expression "((uint)lVar1 <= (uint)(action << (uVar12 & 0x1f)))" ( (binary_expression "(uint)lVar1 <= (uint)(action << (uVar12 & 0x1f))" (cast_expression "(uint)lVar1" ( (type_descriptor "uint" type_identifier) ) identifier) <= (call_expression "(uint)(action << (uVar12 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(action << (uVar12 & 0x1f))" ( (binary_expression "action << (uVar12 & 0x1f)" identifier << (parenthesized_expression "(uVar12 & 0x1f)" ( (binary_expression "uVar12 & 0x1f" identifier & number_literal) ))) )))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar9 <= in_a2) {\n    return 0;\n  }" if (parenthesized_expression "(uVar9 <= in_a2)" ( (binary_expression "uVar9 <= in_a2" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}\n\n" (function_definition "ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" type_identifier (function_declarator "rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 param_1,uint param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (expression_statement "puVar4 = PTR___stack_chk_guard_00030390;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00030390" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_000300f8;" (assignment_expression "puVar3 = PTR_DAT_000300f8" identifier = identifier) ;) (expression_statement "uVar9 = *(uint *)PTR___stack_chk_guard_00030390;" (assignment_expression "uVar9 = *(uint *)PTR___stack_chk_guard_00030390" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_00030390" * (cast_expression "(uint *)PTR___stack_chk_guard_00030390" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" if (parenthesized_expression "(param_2 == 0x406)" ( (binary_expression "param_2 == 0x406" identifier == number_literal) )) (compound_statement "{\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }" { (if_statement "if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" if (parenthesized_expression "(*(int *)(PTR_DAT_000300f8 + 0x560) < 0)" ( (binary_expression "*(int *)(PTR_DAT_000300f8 + 0x560) < 0" (pointer_expression "*(int *)(PTR_DAT_000300f8 + 0x560)" * (cast_expression "(int *)(PTR_DAT_000300f8 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_000300f8 + 0x560)" ( (binary_expression "PTR_DAT_000300f8 + 0x560" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }" { (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = rpl_fcntl();" (assignment_expression "iVar5 = rpl_fcntl()" identifier = (call_expression "rpl_fcntl()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" if (parenthesized_expression "((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1))" ( (binary_expression "(-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) && (parenthesized_expression "(iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" ( (comma_expression "iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1" (assignment_expression "iVar14 = iVar5" identifier = identifier) , (binary_expression "*(int *)(puVar3 + 0x560) == -1" (pointer_expression "*(int *)(puVar3 + 0x560)" * (cast_expression "(int *)(puVar3 + 0x560)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) == number_literal)) ))) )) (compound_statement "{\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" { (labeled_statement "LAB_0001c7d4:\n        param_2 = 1;" statement_identifier : (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" identifier = number_literal) ;)) (expression_statement "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (if_statement "if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" if (parenthesized_expression "(-1 < (int)uVar10)" ( (binary_expression "-1 < (int)uVar10" number_literal < (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" { (expression_statement "param_2 = 2;" (assignment_expression "param_2 = 2" identifier = number_literal) ;) (expression_statement "param_3 = uVar10 | 1;" (assignment_expression "param_3 = uVar10 | 1" identifier = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier )))) ;) (expression_statement "iVar5 = iVar14;" (assignment_expression "iVar5 = iVar14" identifier = identifier) ;) (if_statement "if (iVar6 != -1) goto LAB_0001c778;" if (parenthesized_expression "(iVar6 != -1)" ( (binary_expression "iVar6 != -1" identifier != number_literal) )) (goto_statement "goto LAB_0001c778;" goto statement_identifier ;)) })) (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_close_0003028c)(iVar14);" (call_expression "(*(code *)PTR_close_0003028c)(iVar14)" (parenthesized_expression "(*(code *)PTR_close_0003028c)" ( (pointer_expression "*(code *)PTR_close_0003028c" * (cast_expression "(code *)PTR_close_0003028c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar14)" ( identifier ))) ;) (expression_statement "*puVar7 = uVar15;" (assignment_expression "*puVar7 = uVar15" (pointer_expression "*puVar7" * identifier) = identifier) ;) })) }) (else_clause "else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" else (compound_statement "{\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" { (expression_statement "uVar10 = param_3;" (assignment_expression "uVar10 = param_3" identifier = identifier) ;) (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" if (parenthesized_expression "((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16))" ( (binary_expression "(iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" (parenthesized_expression "(iVar5 < 0)" ( (binary_expression "iVar5 < 0" identifier < number_literal) )) && (parenthesized_expression "(piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" ( (comma_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16" (assignment_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)()" identifier = (cast_expression "(int *)(*(code *)PTR___errno_location_000302f0)()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" ( (pointer_expression "*(code *)PTR___errno_location_000302f0" * (cast_expression "(code *)PTR___errno_location_000302f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) , (binary_expression "*piVar8 == 0x16" (pointer_expression "*piVar8" * identifier) == number_literal)) ))) )) (compound_statement "{\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }" { (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" identifier = number_literal) ;) (expression_statement "iVar5 = rpl_fcntl(param_1);" (assignment_expression "iVar5 = rpl_fcntl(param_1)" identifier = (call_expression "rpl_fcntl(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" if (parenthesized_expression "(-1 < iVar5)" ( (binary_expression "-1 < iVar5" number_literal < identifier) )) (compound_statement "{\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" { (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" * (cast_expression "(undefined4 *)(puVar3 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar14 = iVar5;" (assignment_expression "iVar14 = iVar5" identifier = identifier) ;) (goto_statement "goto LAB_0001c7d4;" goto statement_identifier ;) })) }) (else_clause "else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" else (compound_statement "{\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" { (expression_statement "param_3 = uVar10;" (assignment_expression "param_3 = uVar10" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 1;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 1" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" * (cast_expression "(undefined4 *)(puVar3 + 0x560)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x560)" ( (binary_expression "puVar3 + 0x560" identifier + number_literal) )))) = number_literal) ;) }))) }))) }) (else_clause "else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" else (compound_statement "{\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" { (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" identifier = (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" ( (pointer_expression "*(code *)PTR_fcntl64_000302dc" * (cast_expression "(code *)PTR_fcntl64_000302dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) }))) (labeled_statement "LAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" statement_identifier : (if_statement "if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" if (parenthesized_expression "(uVar9 == *(uint *)puVar4)" ( (binary_expression "uVar9 == *(uint *)puVar4" identifier == (pointer_expression "*(uint *)puVar4" * (cast_expression "(uint *)puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" { (return_statement "return CONCAT44(iVar5,*(uint *)puVar4);" return (call_expression "CONCAT44(iVar5,*(uint *)puVar4)" identifier (argument_list "(iVar5,*(uint *)puVar4)" ( identifier , (pointer_expression "*(uint *)puVar4" * (cast_expression "(uint *)puVar4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003036c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003036c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003036c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003036c" * (cast_expression "(code *)PTR___stack_chk_fail_0003036c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" { (if_statement "if (uVar9 < param_3) {\n      return 0;\n    }" if (parenthesized_expression "(uVar9 < param_3)" ( (binary_expression "uVar9 < param_3" identifier < identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar10 = LZCOUNT(param_3);" (assignment_expression "uVar10 = LZCOUNT(param_3)" identifier = (call_expression "LZCOUNT(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" { (if_statement "if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" if (parenthesized_expression "(uVar9 <= param_3)" ( (binary_expression "uVar9 <= param_3" identifier <= identifier) )) (compound_statement "{\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" { (return_statement "return (ulonglong)(param_2 < param_4) ^ 1;" return (binary_expression "(ulonglong)(param_2 < param_4) ^ 1" (call_expression "(ulonglong)(param_2 < param_4)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(param_2 < param_4)" ( (binary_expression "param_2 < param_4" identifier < identifier) ))) ^ number_literal) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar11 = 0x20 - uVar10;" (assignment_expression "uVar11 = 0x20 - uVar10" identifier = (binary_expression "0x20 - uVar10" number_literal - identifier)) ;) (expression_statement "uVar12 = uVar9 >> (uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (uVar11 & 0x1f)" identifier = (binary_expression "uVar9 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);" (assignment_expression "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" (binary_expression "param_4 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "param_3 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar16 = uVar17 >> 0x10;" (assignment_expression "uVar16 = uVar17 >> 0x10" identifier = (binary_expression "uVar17 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = uVar12 / uVar16;" (assignment_expression "uVar18 = uVar12 / uVar16" identifier = (binary_expression "uVar12 / uVar16" identifier / identifier)) ;) (expression_statement "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" (binary_expression "param_2 >> (uVar11 & 0x1f)" identifier >> (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) | (binary_expression "uVar9 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar11 = (uVar17 & 0xffff) * uVar18;" (assignment_expression "uVar11 = (uVar17 & 0xffff) * uVar18" identifier = (binary_expression "(uVar17 & 0xffff) * uVar18" (parenthesized_expression "(uVar17 & 0xffff)" ( (binary_expression "uVar17 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;" (assignment_expression "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" identifier = (binary_expression "uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" (binary_expression "uVar12 % uVar16 << 0x10" (binary_expression "uVar12 % uVar16" identifier % identifier) << number_literal) | (binary_expression "uVar13 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar18;" (assignment_expression "uVar9 = uVar18" identifier = identifier) ;) (if_statement "if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" if (parenthesized_expression "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) )) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" { (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) (expression_statement "uVar9 = uVar18 - 1;" (assignment_expression "uVar9 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" if (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar11))" ( (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar11)" (parenthesized_expression "(uVar17 <= uVar12)" ( (binary_expression "uVar17 <= uVar12" identifier <= identifier) )) && (parenthesized_expression "(uVar12 < uVar11)" ( (binary_expression "uVar12 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" { (expression_statement "uVar9 = uVar18 - 2;" (assignment_expression "uVar9 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) })) })) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar19 = (uVar12 - uVar11) / uVar16;" (assignment_expression "uVar19 = (uVar12 - uVar11) / uVar16" identifier = (binary_expression "(uVar12 - uVar11) / uVar16" (parenthesized_expression "(uVar12 - uVar11)" ( (binary_expression "uVar12 - uVar11" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar18 = (uVar17 & 0xffff) * uVar19;" (assignment_expression "uVar18 = (uVar17 & 0xffff) * uVar19" identifier = (binary_expression "(uVar17 & 0xffff) * uVar19" (parenthesized_expression "(uVar17 & 0xffff)" ( (binary_expression "uVar17 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;" (assignment_expression "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" identifier = (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10" (binary_expression "(uVar12 - uVar11) % uVar16" (parenthesized_expression "(uVar12 - uVar11)" ( (binary_expression "uVar12 - uVar11" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar13 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar11 = uVar19;" (assignment_expression "uVar11 = uVar19" identifier = identifier) ;) (if_statement "if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" if (parenthesized_expression "(uVar12 < uVar18)" ( (binary_expression "uVar12 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" { (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) (expression_statement "uVar11 = uVar19 - 1;" (assignment_expression "uVar11 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" if (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar18))" ( (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar18)" (parenthesized_expression "(uVar17 <= uVar12)" ( (binary_expression "uVar17 <= uVar12" identifier <= identifier) )) && (parenthesized_expression "(uVar12 < uVar18)" ( (binary_expression "uVar12 < uVar18" identifier < identifier) ))) )) (compound_statement "{\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" { (expression_statement "uVar11 = uVar19 - 2;" (assignment_expression "uVar11 = uVar19 - 2" identifier = (binary_expression "uVar19 - 2" identifier - number_literal)) ;) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" identifier = (binary_expression "uVar12 + uVar17" identifier + identifier)) ;) })) })) (expression_statement "uVar11 = uVar9 << 0x10 | uVar11;" (assignment_expression "uVar11 = uVar9 << 0x10 | uVar11" identifier = (binary_expression "uVar9 << 0x10 | uVar11" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (expression_statement "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));" (assignment_expression "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" identifier = (binary_expression "(ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (call_expression "(ulonglong)(param_4 << (uVar10 & 0x1f))" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(param_4 << (uVar10 & 0x1f))" ( (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) ))))) ;) (expression_statement "uVar9 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar2 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" if (parenthesized_expression "(uVar9 <= uVar12 - uVar18)" ( (binary_expression "uVar9 <= uVar12 - uVar18" identifier <= (binary_expression "uVar12 - uVar18" identifier - identifier)) )) (compound_statement "{\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" { (if_statement "if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }" if (parenthesized_expression "(uVar12 - uVar18 != uVar9)" ( (binary_expression "uVar12 - uVar18 != uVar9" (binary_expression "uVar12 - uVar18" identifier - identifier) != identifier) )) (compound_statement "{\n        return (ulonglong)uVar11;\n      }" { (return_statement "return (ulonglong)uVar11;" return (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) ;) })) (expression_statement "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;" (assignment_expression "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2" identifier = (binary_expression "param_2 << (uVar10 & 0x1f) < (uint)lVar2" (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) < (cast_expression "(uint)lVar2" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (if_statement "if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" { (return_statement "return (ulonglong)CONCAT14(bVar1,uVar11);" return (cast_expression "(ulonglong)CONCAT14(bVar1,uVar11)" ( (type_descriptor "ulonglong" type_identifier) ) (call_expression "CONCAT14(bVar1,uVar11)" identifier (argument_list "(bVar1,uVar11)" ( identifier , identifier )))) ;) })) })) (return_statement "return (ulonglong)(uVar11 - 1);" return (call_expression "(ulonglong)(uVar11 - 1)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar11 - 1)" ( (binary_expression "uVar11 - 1" identifier - number_literal) ))) ;) })) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (if_statement "if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" if (parenthesized_expression "(uVar9 < param_4)" ( (binary_expression "uVar9 < param_4" identifier < identifier) )) (compound_statement "{\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" { (if_statement "if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" { (expression_statement "uVar11 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar11 = param_2 >> (-uVar10 & 0x1f)" identifier = (binary_expression "param_2 >> (-uVar10 & 0x1f)" identifier >> (parenthesized_expression "(-uVar10 & 0x1f)" ( (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" - identifier) & number_literal) )))) ;) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" identifier = (binary_expression "param_4 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" identifier = (binary_expression "param_2 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f)" identifier = (binary_expression "uVar11 | uVar9 << (uVar10 & 0x1f)" identifier | (binary_expression "uVar9 << (uVar10 & 0x1f)" identifier << (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))))) ;) })) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar16 = uVar9 / uVar10;" (assignment_expression "uVar16 = uVar9 / uVar10" identifier = (binary_expression "uVar9 / uVar10" identifier / identifier)) ;) (expression_statement "uVar12 = (param_4 & 0xffff) * uVar16;" (assignment_expression "uVar12 = (param_4 & 0xffff) * uVar16" identifier = (binary_expression "(param_4 & 0xffff) * uVar16" (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" identifier = identifier) ;) (if_statement "if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar11 < uVar12)" ( (binary_expression "uVar11 < uVar12" identifier < identifier) )) (compound_statement "{\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" { (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" identifier = (binary_expression "uVar11 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar16 - 1;" (assignment_expression "uVar9 = uVar16 - 1" identifier = (binary_expression "uVar16 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar12))" ( (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar12)" (parenthesized_expression "(param_4 <= uVar11)" ( (binary_expression "param_4 <= uVar11" identifier <= identifier) )) && (parenthesized_expression "(uVar11 < uVar12)" ( (binary_expression "uVar11 < uVar12" identifier < identifier) ))) )) (compound_statement "{\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" { (expression_statement "uVar9 = uVar16 - 2;" (assignment_expression "uVar9 = uVar16 - 2" identifier = (binary_expression "uVar16 - 2" identifier - number_literal)) ;) (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" identifier = (binary_expression "uVar11 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar11 - uVar12) / uVar10;" (assignment_expression "uVar17 = (uVar11 - uVar12) / uVar10" identifier = (binary_expression "(uVar11 - uVar12) / uVar10" (parenthesized_expression "(uVar11 - uVar12)" ( (binary_expression "uVar11 - uVar12" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar16 = (param_4 & 0xffff) * uVar17;" (assignment_expression "uVar16 = (param_4 & 0xffff) * uVar17" identifier = (binary_expression "(param_4 & 0xffff) * uVar17" (parenthesized_expression "(param_4 & 0xffff)" ( (binary_expression "param_4 & 0xffff" identifier & number_literal) )) * identifier)) ;) (expression_statement "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10" (binary_expression "(uVar11 - uVar12) % uVar10" (parenthesized_expression "(uVar11 - uVar12)" ( (binary_expression "uVar11 - uVar12" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar10 = uVar17;" (assignment_expression "uVar10 = uVar17" identifier = identifier) ;) (if_statement "if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" if (parenthesized_expression "(uVar11 < uVar16)" ( (binary_expression "uVar11 < uVar16" identifier < identifier) )) (compound_statement "{\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" { (expression_statement "uVar11 = param_4 + uVar11;" (assignment_expression "uVar11 = param_4 + uVar11" identifier = (binary_expression "param_4 + uVar11" identifier + identifier)) ;) (expression_statement "uVar10 = uVar17 - 1;" (assignment_expression "uVar10 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }" if (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar16))" ( (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar16)" (parenthesized_expression "(param_4 <= uVar11)" ( (binary_expression "param_4 <= uVar11" identifier <= identifier) )) && (parenthesized_expression "(uVar11 < uVar16)" ( (binary_expression "uVar11 < uVar16" identifier < identifier) ))) )) (compound_statement "{\n        uVar10 = uVar17 - 2;\n      }" { (expression_statement "uVar10 = uVar17 - 2;" (assignment_expression "uVar10 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) })) (return_statement "return (ulonglong)(uVar9 << 0x10 | uVar10);" return (call_expression "(ulonglong)(uVar9 << 0x10 | uVar10)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar9 << 0x10 | uVar10)" ( (binary_expression "uVar9 << 0x10 | uVar10" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier) ))) ;) })) (if_statement "if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n    param_4 = 1 / 0;\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" identifier = (binary_expression "1 / 0" number_literal / number_literal)) ;) })) (expression_statement "uVar11 = LZCOUNT(param_4);" (assignment_expression "uVar11 = LZCOUNT(param_4)" identifier = (call_expression "LZCOUNT(param_4)" identifier (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (if_statement "if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }" { (expression_statement "uVar9 = uVar9 - param_4;" (assignment_expression "uVar9 = uVar9 - param_4" identifier = (binary_expression "uVar9 - param_4" identifier - identifier)) ;) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) }) (else_clause "else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" else (compound_statement "{\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" { (expression_statement "param_4 = param_4 << (uVar11 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar11 & 0x1f)" identifier = (binary_expression "param_4 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" identifier = (binary_expression "param_4 >> 0x10" identifier >> number_literal)) ;) (expression_statement "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f)" identifier = (binary_expression "uVar9 >> (0x20 - uVar11 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar11 & 0x1f)" ( (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" number_literal - identifier) & number_literal) )))) ;) (expression_statement "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f)" identifier = (binary_expression "param_2 >> (0x20 - uVar11 & 0x1f)" identifier >> (parenthesized_expression "(0x20 - uVar11 & 0x1f)" ( (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" number_literal - identifier) & number_literal) )))) ;) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar18 = uVar12 / uVar10;" (assignment_expression "uVar18 = uVar12 / uVar10" identifier = (binary_expression "uVar12 / uVar10" identifier / identifier)) ;) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" identifier = (binary_expression "param_4 & 0xffff" identifier & number_literal)) ;) (expression_statement "param_2 = param_2 << (uVar11 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar11 & 0x1f)" identifier = (binary_expression "param_2 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);" (assignment_expression "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f)" identifier = (binary_expression "uVar16 | uVar9 << (uVar11 & 0x1f)" identifier | (binary_expression "uVar9 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (expression_statement "uVar17 = uVar13 * uVar18;" (assignment_expression "uVar17 = uVar13 * uVar18" identifier = (binary_expression "uVar13 * uVar18" identifier * identifier)) ;) (expression_statement "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;" (assignment_expression "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" identifier = (binary_expression "uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" (binary_expression "uVar12 % uVar10 << 0x10" (binary_expression "uVar12 % uVar10" identifier % identifier) << number_literal) | (binary_expression "uVar16 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" identifier = identifier) ;) (if_statement "if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar9 < uVar17)" ( (binary_expression "uVar9 < uVar17" identifier < identifier) )) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" { (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) (expression_statement "uVar11 = uVar18 - 1;" (assignment_expression "uVar11 = uVar18 - 1" identifier = (binary_expression "uVar18 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar17))" ( (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar17)" (parenthesized_expression "(param_4 <= uVar9)" ( (binary_expression "param_4 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar17)" ( (binary_expression "uVar9 < uVar17" identifier < identifier) ))) )) (compound_statement "{\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" { (expression_statement "uVar11 = uVar18 - 2;" (assignment_expression "uVar11 = uVar18 - 2" identifier = (binary_expression "uVar18 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) })) })) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar19 = (uVar9 - uVar17) / uVar10;" (assignment_expression "uVar19 = (uVar9 - uVar17) / uVar10" identifier = (binary_expression "(uVar9 - uVar17) / uVar10" (parenthesized_expression "(uVar9 - uVar17)" ( (binary_expression "uVar9 - uVar17" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar18 = uVar13 * uVar19;" (assignment_expression "uVar18 = uVar13 * uVar19" identifier = (binary_expression "uVar13 * uVar19" identifier * identifier)) ;) (expression_statement "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;" (assignment_expression "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" identifier = (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10" (binary_expression "(uVar9 - uVar17) % uVar10" (parenthesized_expression "(uVar9 - uVar17)" ( (binary_expression "uVar9 - uVar17" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "uVar16 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar12 = uVar19;" (assignment_expression "uVar12 = uVar19" identifier = identifier) ;) (if_statement "if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" if (parenthesized_expression "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) )) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" { (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) (expression_statement "uVar12 = uVar19 - 1;" (assignment_expression "uVar12 = uVar19 - 1" identifier = (binary_expression "uVar19 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" if (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar18))" ( (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar18)" (parenthesized_expression "(param_4 <= uVar9)" ( (binary_expression "param_4 <= uVar9" identifier <= identifier) )) && (parenthesized_expression "(uVar9 < uVar18)" ( (binary_expression "uVar9 < uVar18" identifier < identifier) ))) )) (compound_statement "{\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" { (expression_statement "uVar12 = uVar19 - 2;" (assignment_expression "uVar12 = uVar19 - 2" identifier = (binary_expression "uVar19 - 2" identifier - number_literal)) ;) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" identifier = (binary_expression "uVar9 + param_4" identifier + identifier)) ;) })) })) (expression_statement "uVar9 = uVar9 - uVar18;" (assignment_expression "uVar9 = uVar9 - uVar18" identifier = (binary_expression "uVar9 - uVar18" identifier - identifier)) ;) (expression_statement "uVar12 = uVar11 << 0x10 | uVar12;" (assignment_expression "uVar12 = uVar11 << 0x10 | uVar12" identifier = (binary_expression "uVar11 << 0x10 | uVar12" (binary_expression "uVar11 << 0x10" identifier << number_literal) | identifier)) ;) }))) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = uVar9 / uVar10;" (assignment_expression "uVar17 = uVar9 / uVar10" identifier = (binary_expression "uVar9 / uVar10" identifier / identifier)) ;) (expression_statement "uVar11 = uVar17 * uVar13;" (assignment_expression "uVar11 = uVar17 * uVar13" identifier = (binary_expression "uVar17 * uVar13" identifier * identifier)) ;) (expression_statement "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" identifier = (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" identifier % identifier) << number_literal) | (binary_expression "param_2 >> 0x10" identifier >> number_literal))) ;) (expression_statement "uVar9 = uVar17;" (assignment_expression "uVar9 = uVar17" identifier = identifier) ;) (if_statement "if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" if (parenthesized_expression "(uVar16 < uVar11)" ( (binary_expression "uVar16 < uVar11" identifier < identifier) )) (compound_statement "{\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" { (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar17 - 1;" (assignment_expression "uVar9 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (if_statement "if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" if (parenthesized_expression "((param_4 <= uVar16) && (uVar16 < uVar11))" ( (binary_expression "(param_4 <= uVar16) && (uVar16 < uVar11)" (parenthesized_expression "(param_4 <= uVar16)" ( (binary_expression "param_4 <= uVar16" identifier <= identifier) )) && (parenthesized_expression "(uVar16 < uVar11)" ( (binary_expression "uVar16 < uVar11" identifier < identifier) ))) )) (compound_statement "{\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" { (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" identifier = (binary_expression "uVar16 + param_4" identifier + identifier)) ;) (expression_statement "uVar9 = uVar17 - 2;" (assignment_expression "uVar9 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) })) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    trap(7);\n  }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar17 = (uVar16 - uVar11) / uVar10;" (assignment_expression "uVar17 = (uVar16 - uVar11) / uVar10" identifier = (binary_expression "(uVar16 - uVar11) / uVar10" (parenthesized_expression "(uVar16 - uVar11)" ( (binary_expression "uVar16 - uVar11" identifier - identifier) )) / identifier)) ;) (expression_statement "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" identifier = (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10" (binary_expression "(uVar16 - uVar11) % uVar10" (parenthesized_expression "(uVar16 - uVar11)" ( (binary_expression "uVar16 - uVar11" identifier - identifier) )) % identifier) << number_literal) | (binary_expression "param_2 & 0xffff" identifier & number_literal))) ;) (expression_statement "uVar11 = param_4 + uVar10;" (assignment_expression "uVar11 = param_4 + uVar10" identifier = (binary_expression "param_4 + uVar10" identifier + identifier)) ;) (if_statement "if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" if (parenthesized_expression "(uVar10 < uVar17 * uVar13)" ( (binary_expression "uVar10 < uVar17 * uVar13" identifier < (binary_expression "uVar17 * uVar13" identifier * identifier)) )) (compound_statement "{\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" { (if_statement "if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" if (parenthesized_expression "((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11))" ( (binary_expression "(uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)" (parenthesized_expression "(uVar11 < param_4)" ( (binary_expression "uVar11 < param_4" identifier < identifier) )) || (parenthesized_expression "(uVar17 * uVar13 <= uVar11)" ( (binary_expression "uVar17 * uVar13 <= uVar11" (binary_expression "uVar17 * uVar13" identifier * identifier) <= identifier) ))) )) (compound_statement "{\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" { (expression_statement "uVar17 = uVar9 << 0x10 | uVar17 - 1;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17 - 1" identifier = (binary_expression "uVar9 << 0x10 | uVar17 - 1" (binary_expression "uVar9 << 0x10" identifier << number_literal) | (binary_expression "uVar17 - 1" identifier - number_literal))) ;) (goto_statement "goto LAB_0001ca70;" goto statement_identifier ;) })) (expression_statement "uVar17 = uVar17 - 2;" (assignment_expression "uVar17 = uVar17 - 2" identifier = (binary_expression "uVar17 - 2" identifier - number_literal)) ;) })) (expression_statement "uVar17 = uVar9 << 0x10 | uVar17;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17" identifier = (binary_expression "uVar9 << 0x10 | uVar17" (binary_expression "uVar9 << 0x10" identifier << number_literal) | identifier)) ;) (labeled_statement "LAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);" statement_identifier : (return_statement "return CONCAT44(uVar12,uVar17);" return (call_expression "CONCAT44(uVar12,uVar17)" identifier (argument_list "(uVar12,uVar17)" ( identifier , identifier ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) , (binary_expression (pointer_expression * IDENT) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) ^ LIT) ;) })) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT - IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) != IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) })) })) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (unary_expression - IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) })) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT << LIT) | IDENT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT / LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT % IDENT) << LIT) | (binary_expression IDENT >> LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) / IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % IDENT) << LIT) | (binary_expression IDENT & LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT * IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT - LIT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | IDENT)) ;) (labeled_statement statement_identifier : (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) })))
(function_definition "ulonglong rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)\n\n{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" (type_identifier "ulonglong") (function_declarator "rpl_fcntl(undefined4 param_1,uint param_2,uint param_3,uint param_4)" (identifier "rpl_fcntl") (parameter_list "(undefined4 param_1,uint param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  bool bVar1;\n  longlong lVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  int iVar5;\n  int iVar6;\n  undefined4 *puVar7;\n  int *piVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  \n  puVar4 = PTR___stack_chk_guard_00030390;\n  puVar3 = PTR_DAT_000300f8;\n  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;\n  if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }\nLAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }\n  (*(code *)PTR___stack_chk_fail_0003036c)();\n  if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }\n  uVar10 = LZCOUNT(param_4);\n  if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }\n  if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }\n  uVar11 = LZCOUNT(param_4);\n  uVar10 = param_4 >> 0x10;\n  if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = uVar9 / uVar10;\n  uVar11 = uVar17 * uVar13;\n  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n  uVar9 = uVar17;\n  if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }\n  if (uVar10 == 0) {\n    trap(7);\n  }\n  uVar17 = (uVar16 - uVar11) / uVar10;\n  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;\n  uVar11 = param_4 + uVar10;\n  if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }\n  uVar17 = uVar9 << 0x10 | uVar17;\nLAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "longlong lVar2;" (type_identifier "longlong") (identifier "lVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (expression_statement "puVar4 = PTR___stack_chk_guard_00030390;" (assignment_expression "puVar4 = PTR___stack_chk_guard_00030390" (identifier "puVar4") (= "=") (identifier "PTR___stack_chk_guard_00030390")) (; ";")) (expression_statement "puVar3 = PTR_DAT_000300f8;" (assignment_expression "puVar3 = PTR_DAT_000300f8" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000300f8")) (; ";")) (expression_statement "uVar9 = *(uint *)PTR___stack_chk_guard_00030390;" (assignment_expression "uVar9 = *(uint *)PTR___stack_chk_guard_00030390" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)PTR___stack_chk_guard_00030390" (* "*") (cast_expression "(uint *)PTR___stack_chk_guard_00030390" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00030390")))) (; ";")) (if_statement "if (param_2 == 0x406) {\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }\n  else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" (if "if") (parenthesized_expression "(param_2 == 0x406)" (( "(") (binary_expression "param_2 == 0x406" (identifier "param_2") (== "==") (number_literal "0x406")) () ")")) (compound_statement "{\n    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }\n  }" ({ "{") (if_statement "if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }\n    else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)(PTR_DAT_000300f8 + 0x560) < 0)" (( "(") (binary_expression "*(int *)(PTR_DAT_000300f8 + 0x560) < 0" (pointer_expression "*(int *)(PTR_DAT_000300f8 + 0x560)" (* "*") (cast_expression "(int *)(PTR_DAT_000300f8 + 0x560)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_000300f8 + 0x560)" (( "(") (binary_expression "PTR_DAT_000300f8 + 0x560" (identifier "PTR_DAT_000300f8") (+ "+") (number_literal "0x560")) () ")")))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      param_2 = 0;\n      iVar5 = rpl_fcntl();\n      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }\n    }" ({ "{") (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = rpl_fcntl();" (assignment_expression "iVar5 = rpl_fcntl()" (identifier "iVar5") (= "=") (call_expression "rpl_fcntl()" (identifier "rpl_fcntl") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" (if "if") (parenthesized_expression "((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1))" (( "(") (binary_expression "(-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (&& "&&") (parenthesized_expression "(iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)" (( "(") (comma_expression "iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1" (assignment_expression "iVar14 = iVar5" (identifier "iVar14") (= "=") (identifier "iVar5")) (, ",") (binary_expression "*(int *)(puVar3 + 0x560) == -1" (pointer_expression "*(int *)(puVar3 + 0x560)" (* "*") (cast_expression "(int *)(puVar3 + 0x560)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x560)" (( "(") (binary_expression "puVar3 + 0x560" (identifier "puVar3") (+ "+") (number_literal "0x560")) () ")")))) (== "==") (number_literal "-1"))) () ")"))) () ")")) (compound_statement "{\nLAB_0001c7d4:\n        param_2 = 1;\n        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n        if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }\n        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();\n        uVar15 = *puVar7;\n        iVar5 = -1;\n        (*(code *)PTR_close_0003028c)(iVar14);\n        *puVar7 = uVar15;\n      }" ({ "{") (labeled_statement "LAB_0001c7d4:\n        param_2 = 1;" (statement_identifier "LAB_0001c7d4") (: ":") (expression_statement "param_2 = 1;" (assignment_expression "param_2 = 1" (identifier "param_2") (= "=") (number_literal "1")) (; ";"))) (expression_statement "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" (( "(") (pointer_expression "*(code *)PTR_fcntl64_000302dc" (* "*") (cast_expression "(code *)PTR_fcntl64_000302dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fcntl64_000302dc"))) () ")")) (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar10) {\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar10)" (( "(") (binary_expression "-1 < (int)uVar10" (number_literal "-1") (< "<") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) () ")")) (compound_statement "{\n          param_2 = 2;\n          param_3 = uVar10 | 1;\n          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);\n          iVar5 = iVar14;\n          if (iVar6 != -1) goto LAB_0001c778;\n        }" ({ "{") (expression_statement "param_2 = 2;" (assignment_expression "param_2 = 2" (identifier "param_2") (= "=") (number_literal "2")) (; ";")) (expression_statement "param_3 = uVar10 | 1;" (assignment_expression "param_3 = uVar10 | 1" (identifier "param_3") (= "=") (binary_expression "uVar10 | 1" (identifier "uVar10") (| "|") (number_literal "1"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);" (assignment_expression "iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_fcntl64_000302dc)(iVar14)" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" (( "(") (pointer_expression "*(code *)PTR_fcntl64_000302dc" (* "*") (cast_expression "(code *)PTR_fcntl64_000302dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fcntl64_000302dc"))) () ")")) (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")")))) (; ";")) (expression_statement "iVar5 = iVar14;" (assignment_expression "iVar5 = iVar14" (identifier "iVar5") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (iVar6 != -1) goto LAB_0001c778;" (if "if") (parenthesized_expression "(iVar6 != -1)" (( "(") (binary_expression "iVar6 != -1" (identifier "iVar6") (!= "!=") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0001c778;" (goto "goto") (statement_identifier "LAB_0001c778") (; ";"))) (} "}"))) (expression_statement "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();" (assignment_expression "puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)()" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)(*(code *)PTR___errno_location_000302f0)()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" (( "(") (pointer_expression "*(code *)PTR___errno_location_000302f0" (* "*") (cast_expression "(code *)PTR___errno_location_000302f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_000302f0"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" (identifier "uVar15") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "iVar5 = -1;" (assignment_expression "iVar5 = -1" (identifier "iVar5") (= "=") (number_literal "-1")) (; ";")) (expression_statement "(*(code *)PTR_close_0003028c)(iVar14);" (call_expression "(*(code *)PTR_close_0003028c)(iVar14)" (parenthesized_expression "(*(code *)PTR_close_0003028c)" (( "(") (pointer_expression "*(code *)PTR_close_0003028c" (* "*") (cast_expression "(code *)PTR_close_0003028c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_close_0003028c"))) () ")")) (argument_list "(iVar14)" (( "(") (identifier "iVar14") () ")"))) (; ";")) (expression_statement "*puVar7 = uVar15;" (assignment_expression "*puVar7 = uVar15" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (= "=") (identifier "uVar15")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" (else "else") (compound_statement "{\n      uVar10 = param_3;\n      iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n      if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }\n    }" ({ "{") (expression_statement "uVar10 = param_3;" (assignment_expression "uVar10 = param_3" (identifier "uVar10") (= "=") (identifier "param_3")) (; ";")) (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" (( "(") (pointer_expression "*(code *)PTR_fcntl64_000302dc" (* "*") (cast_expression "(code *)PTR_fcntl64_000302dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fcntl64_000302dc"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }\n      else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" (if "if") (parenthesized_expression "((iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16))" (( "(") (binary_expression "(iVar5 < 0) &&\n         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" (parenthesized_expression "(iVar5 < 0)" (( "(") (binary_expression "iVar5 < 0" (identifier "iVar5") (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)" (( "(") (comma_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16" (assignment_expression "piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)()" (identifier "piVar8") (= "=") (cast_expression "(int *)(*(code *)PTR___errno_location_000302f0)()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___errno_location_000302f0)()" (parenthesized_expression "(*(code *)PTR___errno_location_000302f0)" (( "(") (pointer_expression "*(code *)PTR___errno_location_000302f0" (* "*") (cast_expression "(code *)PTR___errno_location_000302f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___errno_location_000302f0"))) () ")")) (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "*piVar8 == 0x16" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (== "==") (number_literal "0x16"))) () ")"))) () ")")) (compound_statement "{\n        param_2 = 0;\n        iVar5 = rpl_fcntl(param_1);\n        if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }\n      }" ({ "{") (expression_statement "param_2 = 0;" (assignment_expression "param_2 = 0" (identifier "param_2") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = rpl_fcntl(param_1);" (assignment_expression "iVar5 = rpl_fcntl(param_1)" (identifier "iVar5") (= "=") (call_expression "rpl_fcntl(param_1)" (identifier "rpl_fcntl") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (-1 < iVar5) {\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" (if "if") (parenthesized_expression "(-1 < iVar5)" (( "(") (binary_expression "-1 < iVar5" (number_literal "-1") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;\n          iVar14 = iVar5;\n          goto LAB_0001c7d4;\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x560)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x560)" (( "(") (binary_expression "puVar3 + 0x560" (identifier "puVar3") (+ "+") (number_literal "0x560")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "iVar14 = iVar5;" (assignment_expression "iVar14 = iVar5" (identifier "iVar14") (= "=") (identifier "iVar5")) (; ";")) (goto_statement "goto LAB_0001c7d4;" (goto "goto") (statement_identifier "LAB_0001c7d4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" (else "else") (compound_statement "{\n        param_3 = uVar10;\n        *(undefined4 *)(puVar3 + 0x560) = 1;\n      }" ({ "{") (expression_statement "param_3 = uVar10;" (assignment_expression "param_3 = uVar10" (identifier "param_3") (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 0x560) = 1;" (assignment_expression "*(undefined4 *)(puVar3 + 0x560) = 1" (pointer_expression "*(undefined4 *)(puVar3 + 0x560)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 0x560)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x560)" (( "(") (binary_expression "puVar3 + 0x560" (identifier "puVar3") (+ "+") (number_literal "0x560")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" (else "else") (compound_statement "{\n    iVar5 = (*(code *)PTR_fcntl64_000302dc)();\n  }" ({ "{") (expression_statement "iVar5 = (*(code *)PTR_fcntl64_000302dc)();" (assignment_expression "iVar5 = (*(code *)PTR_fcntl64_000302dc)()" (identifier "iVar5") (= "=") (call_expression "(*(code *)PTR_fcntl64_000302dc)()" (parenthesized_expression "(*(code *)PTR_fcntl64_000302dc)" (( "(") (pointer_expression "*(code *)PTR_fcntl64_000302dc" (* "*") (cast_expression "(code *)PTR_fcntl64_000302dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_fcntl64_000302dc"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (labeled_statement "LAB_0001c778:\n  if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" (statement_identifier "LAB_0001c778") (: ":") (if_statement "if (uVar9 == *(uint *)puVar4) {\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" (if "if") (parenthesized_expression "(uVar9 == *(uint *)puVar4)" (( "(") (binary_expression "uVar9 == *(uint *)puVar4" (identifier "uVar9") (== "==") (pointer_expression "*(uint *)puVar4" (* "*") (cast_expression "(uint *)puVar4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4")))) () ")")) (compound_statement "{\n    return CONCAT44(iVar5,*(uint *)puVar4);\n  }" ({ "{") (return_statement "return CONCAT44(iVar5,*(uint *)puVar4);" (return "return") (call_expression "CONCAT44(iVar5,*(uint *)puVar4)" (identifier "CONCAT44") (argument_list "(iVar5,*(uint *)puVar4)" (( "(") (identifier "iVar5") (, ",") (pointer_expression "*(uint *)puVar4" (* "*") (cast_expression "(uint *)puVar4" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) () ")"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003036c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003036c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003036c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0003036c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0003036c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0003036c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (param_3 != 0) {\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar9 < param_3) {\n      return 0;\n    }\n    uVar10 = LZCOUNT(param_3);\n    if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }\n    uVar11 = 0x20 - uVar10;\n    uVar12 = uVar9 >> (uVar11 & 0x1f);\n    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);\n    uVar16 = uVar17 >> 0x10;\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar16;\n    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);\n    uVar11 = (uVar17 & 0xffff) * uVar18;\n    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;\n    uVar9 = uVar18;\n    if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    if (uVar16 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar12 - uVar11) / uVar16;\n    uVar18 = (uVar17 & 0xffff) * uVar19;\n    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;\n    uVar11 = uVar19;\n    if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }\n    uVar11 = uVar9 << 0x10 | uVar11;\n    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));\n    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);\n    if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }\n    return (ulonglong)(uVar11 - 1);\n  }" ({ "{") (if_statement "if (uVar9 < param_3) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar9 < param_3)" (( "(") (binary_expression "uVar9 < param_3" (identifier "uVar9") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar10 = LZCOUNT(param_3);" (assignment_expression "uVar10 = LZCOUNT(param_3)" (identifier "uVar10") (= "=") (call_expression "LZCOUNT(param_3)" (identifier "LZCOUNT") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (uVar10 == 0) {\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }\n      return 1;\n    }" ({ "{") (if_statement "if (uVar9 <= param_3) {\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" (if "if") (parenthesized_expression "(uVar9 <= param_3)" (( "(") (binary_expression "uVar9 <= param_3" (identifier "uVar9") (<= "<=") (identifier "param_3")) () ")")) (compound_statement "{\n        return (ulonglong)(param_2 < param_4) ^ 1;\n      }" ({ "{") (return_statement "return (ulonglong)(param_2 < param_4) ^ 1;" (return "return") (binary_expression "(ulonglong)(param_2 < param_4) ^ 1" (call_expression "(ulonglong)(param_2 < param_4)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(param_2 < param_4)" (( "(") (binary_expression "param_2 < param_4" (identifier "param_2") (< "<") (identifier "param_4")) () ")"))) (^ "^") (number_literal "1")) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar11 = 0x20 - uVar10;" (assignment_expression "uVar11 = 0x20 - uVar10" (identifier "uVar11") (= "=") (binary_expression "0x20 - uVar10" (number_literal "0x20") (- "-") (identifier "uVar10"))) (; ";")) (expression_statement "uVar12 = uVar9 >> (uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (uVar11 & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar9 >> (uVar11 & 0x1f)" (identifier "uVar9") (>> ">>") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);" (assignment_expression "uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" (identifier "uVar17") (= "=") (binary_expression "param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f)" (binary_expression "param_4 >> (uVar11 & 0x1f)" (identifier "param_4") (>> ">>") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "param_3 << (uVar10 & 0x1f)" (identifier "param_3") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar16 = uVar17 >> 0x10;" (assignment_expression "uVar16 = uVar17 >> 0x10" (identifier "uVar16") (= "=") (binary_expression "uVar17 >> 0x10" (identifier "uVar17") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar18 = uVar12 / uVar16;" (assignment_expression "uVar18 = uVar12 / uVar16" (identifier "uVar18") (= "=") (binary_expression "uVar12 / uVar16" (identifier "uVar12") (/ "/") (identifier "uVar16"))) (; ";")) (expression_statement "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f)" (binary_expression "param_2 >> (uVar11 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) (| "|") (binary_expression "uVar9 << (uVar10 & 0x1f)" (identifier "uVar9") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar11 = (uVar17 & 0xffff) * uVar18;" (assignment_expression "uVar11 = (uVar17 & 0xffff) * uVar18" (identifier "uVar11") (= "=") (binary_expression "(uVar17 & 0xffff) * uVar18" (parenthesized_expression "(uVar17 & 0xffff)" (( "(") (binary_expression "uVar17 & 0xffff" (identifier "uVar17") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar18"))) (; ";")) (expression_statement "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;" (assignment_expression "uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" (identifier "uVar12") (= "=") (binary_expression "uVar12 % uVar16 << 0x10 | uVar13 >> 0x10" (binary_expression "uVar12 % uVar16 << 0x10" (binary_expression "uVar12 % uVar16" (identifier "uVar12") (% "%") (identifier "uVar16")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar13 >> 0x10" (identifier "uVar13") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "uVar9 = uVar18;" (assignment_expression "uVar9 = uVar18" (identifier "uVar9") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar12 < uVar11) {\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" (if "if") (parenthesized_expression "(uVar12 < uVar11)" (( "(") (binary_expression "uVar12 < uVar11" (identifier "uVar12") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar9 = uVar18 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" ({ "{") (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar12 + uVar17" (identifier "uVar12") (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "uVar9 = uVar18 - 1;" (assignment_expression "uVar9 = uVar18 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" (if "if") (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar11))" (( "(") (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar11)" (parenthesized_expression "(uVar17 <= uVar12)" (( "(") (binary_expression "uVar17 <= uVar12" (identifier "uVar17") (<= "<=") (identifier "uVar12")) () ")")) (&& "&&") (parenthesized_expression "(uVar12 < uVar11)" (( "(") (binary_expression "uVar12 < uVar11" (identifier "uVar12") (< "<") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = uVar18 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" ({ "{") (expression_statement "uVar9 = uVar18 - 2;" (assignment_expression "uVar9 = uVar18 - 2" (identifier "uVar9") (= "=") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar12 + uVar17" (identifier "uVar12") (+ "+") (identifier "uVar17"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar16 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar19 = (uVar12 - uVar11) / uVar16;" (assignment_expression "uVar19 = (uVar12 - uVar11) / uVar16" (identifier "uVar19") (= "=") (binary_expression "(uVar12 - uVar11) / uVar16" (parenthesized_expression "(uVar12 - uVar11)" (( "(") (binary_expression "uVar12 - uVar11" (identifier "uVar12") (- "-") (identifier "uVar11")) () ")")) (/ "/") (identifier "uVar16"))) (; ";")) (expression_statement "uVar18 = (uVar17 & 0xffff) * uVar19;" (assignment_expression "uVar18 = (uVar17 & 0xffff) * uVar19" (identifier "uVar18") (= "=") (binary_expression "(uVar17 & 0xffff) * uVar19" (parenthesized_expression "(uVar17 & 0xffff)" (( "(") (binary_expression "uVar17 & 0xffff" (identifier "uVar17") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar19"))) (; ";")) (expression_statement "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;" (assignment_expression "uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" (identifier "uVar12") (= "=") (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff" (binary_expression "(uVar12 - uVar11) % uVar16 << 0x10" (binary_expression "(uVar12 - uVar11) % uVar16" (parenthesized_expression "(uVar12 - uVar11)" (( "(") (binary_expression "uVar12 - uVar11" (identifier "uVar12") (- "-") (identifier "uVar11")) () ")")) (% "%") (identifier "uVar16")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar13 & 0xffff" (identifier "uVar13") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar11 = uVar19;" (assignment_expression "uVar11 = uVar19" (identifier "uVar11") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if (uVar12 < uVar18) {\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" (if "if") (parenthesized_expression "(uVar12 < uVar18)" (( "(") (binary_expression "uVar12 < uVar18" (identifier "uVar12") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n      uVar12 = uVar12 + uVar17;\n      uVar11 = uVar19 - 1;\n      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }\n    }" ({ "{") (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar12 + uVar17" (identifier "uVar12") (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "uVar11 = uVar19 - 1;" (assignment_expression "uVar11 = uVar19 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" (if "if") (parenthesized_expression "((uVar17 <= uVar12) && (uVar12 < uVar18))" (( "(") (binary_expression "(uVar17 <= uVar12) && (uVar12 < uVar18)" (parenthesized_expression "(uVar17 <= uVar12)" (( "(") (binary_expression "uVar17 <= uVar12" (identifier "uVar17") (<= "<=") (identifier "uVar12")) () ")")) (&& "&&") (parenthesized_expression "(uVar12 < uVar18)" (( "(") (binary_expression "uVar12 < uVar18" (identifier "uVar12") (< "<") (identifier "uVar18")) () ")"))) () ")")) (compound_statement "{\n        uVar11 = uVar19 - 2;\n        uVar12 = uVar12 + uVar17;\n      }" ({ "{") (expression_statement "uVar11 = uVar19 - 2;" (assignment_expression "uVar11 = uVar19 - 2" (identifier "uVar11") (= "=") (binary_expression "uVar19 - 2" (identifier "uVar19") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar12 = uVar12 + uVar17;" (assignment_expression "uVar12 = uVar12 + uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar12 + uVar17" (identifier "uVar12") (+ "+") (identifier "uVar17"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar11 = uVar9 << 0x10 | uVar11;" (assignment_expression "uVar11 = uVar9 << 0x10 | uVar11" (identifier "uVar11") (= "=") (binary_expression "uVar9 << 0x10 | uVar11" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar11"))) (; ";")) (expression_statement "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));" (assignment_expression "lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" (identifier "lVar2") (= "=") (binary_expression "(ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f))" (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (* "*") (call_expression "(ulonglong)(param_4 << (uVar10 & 0x1f))" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(param_4 << (uVar10 & 0x1f))" (( "(") (binary_expression "param_4 << (uVar10 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar9 = (uint)((ulonglong)lVar2 >> 0x20);" (assignment_expression "uVar9 = (uint)((ulonglong)lVar2 >> 0x20)" (identifier "uVar9") (= "=") (call_expression "(uint)((ulonglong)lVar2 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)lVar2 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar2")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (uVar9 <= uVar12 - uVar18) {\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" (if "if") (parenthesized_expression "(uVar9 <= uVar12 - uVar18)" (( "(") (binary_expression "uVar9 <= uVar12 - uVar18" (identifier "uVar9") (<= "<=") (binary_expression "uVar12 - uVar18" (identifier "uVar12") (- "-") (identifier "uVar18"))) () ")")) (compound_statement "{\n      if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }\n      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;\n      if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }\n    }" ({ "{") (if_statement "if (uVar12 - uVar18 != uVar9) {\n        return (ulonglong)uVar11;\n      }" (if "if") (parenthesized_expression "(uVar12 - uVar18 != uVar9)" (( "(") (binary_expression "uVar12 - uVar18 != uVar9" (binary_expression "uVar12 - uVar18" (identifier "uVar12") (- "-") (identifier "uVar18")) (!= "!=") (identifier "uVar9")) () ")")) (compound_statement "{\n        return (ulonglong)uVar11;\n      }" ({ "{") (return_statement "return (ulonglong)uVar11;" (return "return") (cast_expression "(ulonglong)uVar11" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar11")) (; ";")) (} "}"))) (expression_statement "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;" (assignment_expression "bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2" (identifier "bVar1") (= "=") (binary_expression "param_2 << (uVar10 & 0x1f) < (uint)lVar2" (binary_expression "param_2 << (uVar10 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) (< "<") (cast_expression "(uint)lVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar2")))) (; ";")) (if_statement "if (!bVar1) {\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n        return (ulonglong)CONCAT14(bVar1,uVar11);\n      }" ({ "{") (return_statement "return (ulonglong)CONCAT14(bVar1,uVar11);" (return "return") (cast_expression "(ulonglong)CONCAT14(bVar1,uVar11)" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (call_expression "CONCAT14(bVar1,uVar11)" (identifier "CONCAT14") (argument_list "(bVar1,uVar11)" (( "(") (identifier "bVar1") (, ",") (identifier "uVar11") () ")")))) (; ";")) (} "}"))) (} "}"))) (return_statement "return (ulonglong)(uVar11 - 1);" (return "return") (call_expression "(ulonglong)(uVar11 - 1)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar11 - 1)" (( "(") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar10 = LZCOUNT(param_4);" (assignment_expression "uVar10 = LZCOUNT(param_4)" (identifier "uVar10") (= "=") (call_expression "LZCOUNT(param_4)" (identifier "LZCOUNT") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (uVar9 < param_4) {\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" (if "if") (parenthesized_expression "(uVar9 < param_4)" (( "(") (binary_expression "uVar9 < param_4" (identifier "uVar9") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n    if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }\n    uVar10 = param_4 >> 0x10;\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar16 = uVar9 / uVar10;\n    uVar12 = (param_4 & 0xffff) * uVar16;\n    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;\n    uVar9 = uVar16;\n    if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar17 = (uVar11 - uVar12) / uVar10;\n    uVar16 = (param_4 & 0xffff) * uVar17;\n    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;\n    uVar10 = uVar17;\n    if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }\n    return (ulonglong)(uVar9 << 0x10 | uVar10);\n  }" ({ "{") (if_statement "if (uVar10 != 0) {\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = param_2 >> (-uVar10 & 0x1f);\n      param_4 = param_4 << (uVar10 & 0x1f);\n      param_2 = param_2 << (uVar10 & 0x1f);\n      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);\n    }" ({ "{") (expression_statement "uVar11 = param_2 >> (-uVar10 & 0x1f);" (assignment_expression "uVar11 = param_2 >> (-uVar10 & 0x1f)" (identifier "uVar11") (= "=") (binary_expression "param_2 >> (-uVar10 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(-uVar10 & 0x1f)" (( "(") (binary_expression "-uVar10 & 0x1f" (unary_expression "-uVar10" (- "-") (identifier "uVar10")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_4 = param_4 << (uVar10 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar10 & 0x1f)" (identifier "param_4") (= "=") (binary_expression "param_4 << (uVar10 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_2 = param_2 << (uVar10 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar10 & 0x1f)" (identifier "param_2") (= "=") (binary_expression "param_2 << (uVar10 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);" (assignment_expression "uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f)" (identifier "uVar9") (= "=") (binary_expression "uVar11 | uVar9 << (uVar10 & 0x1f)" (identifier "uVar11") (| "|") (binary_expression "uVar9 << (uVar10 & 0x1f)" (identifier "uVar9") (<< "<<") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" (identifier "uVar10") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar9 / uVar10;" (assignment_expression "uVar16 = uVar9 / uVar10" (identifier "uVar16") (= "=") (binary_expression "uVar9 / uVar10" (identifier "uVar9") (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar12 = (param_4 & 0xffff) * uVar16;" (assignment_expression "uVar12 = (param_4 & 0xffff) * uVar16" (identifier "uVar12") (= "=") (binary_expression "(param_4 & 0xffff) * uVar16" (parenthesized_expression "(param_4 & 0xffff)" (( "(") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar16"))) (; ";")) (expression_statement "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (identifier "uVar11") (= "=") (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" (identifier "uVar9") (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "uVar9 = uVar16;" (assignment_expression "uVar9 = uVar16" (identifier "uVar9") (= "=") (identifier "uVar16")) (; ";")) (if_statement "if (uVar11 < uVar12) {\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" (if "if") (parenthesized_expression "(uVar11 < uVar12)" (( "(") (binary_expression "uVar11 < uVar12" (identifier "uVar11") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n      uVar11 = uVar11 + param_4;\n      uVar9 = uVar16 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }\n    }" ({ "{") (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" (identifier "uVar11") (= "=") (binary_expression "uVar11 + param_4" (identifier "uVar11") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "uVar9 = uVar16 - 1;" (assignment_expression "uVar9 = uVar16 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar16 - 1" (identifier "uVar16") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar12)) {\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" (if "if") (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar12))" (( "(") (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar12)" (parenthesized_expression "(param_4 <= uVar11)" (( "(") (binary_expression "param_4 <= uVar11" (identifier "param_4") (<= "<=") (identifier "uVar11")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 < uVar12)" (( "(") (binary_expression "uVar11 < uVar12" (identifier "uVar11") (< "<") (identifier "uVar12")) () ")"))) () ")")) (compound_statement "{\n        uVar9 = uVar16 - 2;\n        uVar11 = uVar11 + param_4;\n      }" ({ "{") (expression_statement "uVar9 = uVar16 - 2;" (assignment_expression "uVar9 = uVar16 - 2" (identifier "uVar9") (= "=") (binary_expression "uVar16 - 2" (identifier "uVar16") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar11 = uVar11 + param_4;" (assignment_expression "uVar11 = uVar11 + param_4" (identifier "uVar11") (= "=") (binary_expression "uVar11 + param_4" (identifier "uVar11") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = (uVar11 - uVar12) / uVar10;" (assignment_expression "uVar17 = (uVar11 - uVar12) / uVar10" (identifier "uVar17") (= "=") (binary_expression "(uVar11 - uVar12) / uVar10" (parenthesized_expression "(uVar11 - uVar12)" (( "(") (binary_expression "uVar11 - uVar12" (identifier "uVar11") (- "-") (identifier "uVar12")) () ")")) (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar16 = (param_4 & 0xffff) * uVar17;" (assignment_expression "uVar16 = (param_4 & 0xffff) * uVar17" (identifier "uVar16") (= "=") (binary_expression "(param_4 & 0xffff) * uVar17" (parenthesized_expression "(param_4 & 0xffff)" (( "(") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff")) () ")")) (* "*") (identifier "uVar17"))) (; ";")) (expression_statement "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" (identifier "uVar11") (= "=") (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar11 - uVar12) % uVar10 << 0x10" (binary_expression "(uVar11 - uVar12) % uVar10" (parenthesized_expression "(uVar11 - uVar12)" (( "(") (binary_expression "uVar11 - uVar12" (identifier "uVar11") (- "-") (identifier "uVar12")) () ")")) (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 & 0xffff" (identifier "param_2") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar10 = uVar17;" (assignment_expression "uVar10 = uVar17" (identifier "uVar10") (= "=") (identifier "uVar17")) (; ";")) (if_statement "if (uVar11 < uVar16) {\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" (if "if") (parenthesized_expression "(uVar11 < uVar16)" (( "(") (binary_expression "uVar11 < uVar16" (identifier "uVar11") (< "<") (identifier "uVar16")) () ")")) (compound_statement "{\n      uVar11 = param_4 + uVar11;\n      uVar10 = uVar17 - 1;\n      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }\n    }" ({ "{") (expression_statement "uVar11 = param_4 + uVar11;" (assignment_expression "uVar11 = param_4 + uVar11" (identifier "uVar11") (= "=") (binary_expression "param_4 + uVar11" (identifier "param_4") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "uVar10 = uVar17 - 1;" (assignment_expression "uVar10 = uVar17 - 1" (identifier "uVar10") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_4 <= uVar11) && (uVar11 < uVar16)) {\n        uVar10 = uVar17 - 2;\n      }" (if "if") (parenthesized_expression "((param_4 <= uVar11) && (uVar11 < uVar16))" (( "(") (binary_expression "(param_4 <= uVar11) && (uVar11 < uVar16)" (parenthesized_expression "(param_4 <= uVar11)" (( "(") (binary_expression "param_4 <= uVar11" (identifier "param_4") (<= "<=") (identifier "uVar11")) () ")")) (&& "&&") (parenthesized_expression "(uVar11 < uVar16)" (( "(") (binary_expression "uVar11 < uVar16" (identifier "uVar11") (< "<") (identifier "uVar16")) () ")"))) () ")")) (compound_statement "{\n        uVar10 = uVar17 - 2;\n      }" ({ "{") (expression_statement "uVar10 = uVar17 - 2;" (assignment_expression "uVar10 = uVar17 - 2" (identifier "uVar10") (= "=") (binary_expression "uVar17 - 2" (identifier "uVar17") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return (ulonglong)(uVar9 << 0x10 | uVar10);" (return "return") (call_expression "(ulonglong)(uVar9 << 0x10 | uVar10)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar9 << 0x10 | uVar10)" (( "(") (binary_expression "uVar9 << 0x10 | uVar10" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar10")) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 == 0) {\n    trap(7);\n    param_4 = 1 / 0;\n  }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n    param_4 = 1 / 0;\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (expression_statement "param_4 = 1 / 0;" (assignment_expression "param_4 = 1 / 0" (identifier "param_4") (= "=") (binary_expression "1 / 0" (number_literal "1") (/ "/") (number_literal "0"))) (; ";")) (} "}"))) (expression_statement "uVar11 = LZCOUNT(param_4);" (assignment_expression "uVar11 = LZCOUNT(param_4)" (identifier "uVar11") (= "=") (call_expression "LZCOUNT(param_4)" (identifier "LZCOUNT") (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" (identifier "uVar10") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar11 == 0) {\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }\n  else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar9 = uVar9 - param_4;\n    uVar12 = 1;\n    uVar13 = param_4 & 0xffff;\n  }" ({ "{") (expression_statement "uVar9 = uVar9 - param_4;" (assignment_expression "uVar9 = uVar9 - param_4" (identifier "uVar9") (= "=") (binary_expression "uVar9 - param_4" (identifier "uVar9") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" (identifier "uVar13") (= "=") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff"))) (; ";")) (} "}")) (else_clause "else {\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" (else "else") (compound_statement "{\n    param_4 = param_4 << (uVar11 & 0x1f);\n    uVar10 = param_4 >> 0x10;\n    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);\n    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar18 = uVar12 / uVar10;\n    uVar13 = param_4 & 0xffff;\n    param_2 = param_2 << (uVar11 & 0x1f);\n    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);\n    uVar17 = uVar13 * uVar18;\n    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;\n    uVar11 = uVar18;\n    if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    if (uVar10 == 0) {\n      trap(7);\n    }\n    uVar19 = (uVar9 - uVar17) / uVar10;\n    uVar18 = uVar13 * uVar19;\n    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;\n    uVar12 = uVar19;\n    if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }\n    uVar9 = uVar9 - uVar18;\n    uVar12 = uVar11 << 0x10 | uVar12;\n  }" ({ "{") (expression_statement "param_4 = param_4 << (uVar11 & 0x1f);" (assignment_expression "param_4 = param_4 << (uVar11 & 0x1f)" (identifier "param_4") (= "=") (binary_expression "param_4 << (uVar11 & 0x1f)" (identifier "param_4") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar10 = param_4 >> 0x10;" (assignment_expression "uVar10 = param_4 >> 0x10" (identifier "uVar10") (= "=") (binary_expression "param_4 >> 0x10" (identifier "param_4") (>> ">>") (number_literal "0x10"))) (; ";")) (expression_statement "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f)" (identifier "uVar12") (= "=") (binary_expression "uVar9 >> (0x20 - uVar11 & 0x1f)" (identifier "uVar9") (>> ">>") (parenthesized_expression "(0x20 - uVar11 & 0x1f)" (( "(") (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" (number_literal "0x20") (- "-") (identifier "uVar11")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);" (assignment_expression "uVar16 = param_2 >> (0x20 - uVar11 & 0x1f)" (identifier "uVar16") (= "=") (binary_expression "param_2 >> (0x20 - uVar11 & 0x1f)" (identifier "param_2") (>> ">>") (parenthesized_expression "(0x20 - uVar11 & 0x1f)" (( "(") (binary_expression "0x20 - uVar11 & 0x1f" (binary_expression "0x20 - uVar11" (number_literal "0x20") (- "-") (identifier "uVar11")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar18 = uVar12 / uVar10;" (assignment_expression "uVar18 = uVar12 / uVar10" (identifier "uVar18") (= "=") (binary_expression "uVar12 / uVar10" (identifier "uVar12") (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar13 = param_4 & 0xffff;" (assignment_expression "uVar13 = param_4 & 0xffff" (identifier "uVar13") (= "=") (binary_expression "param_4 & 0xffff" (identifier "param_4") (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "param_2 = param_2 << (uVar11 & 0x1f);" (assignment_expression "param_2 = param_2 << (uVar11 & 0x1f)" (identifier "param_2") (= "=") (binary_expression "param_2 << (uVar11 & 0x1f)" (identifier "param_2") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);" (assignment_expression "uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f)" (identifier "uVar16") (= "=") (binary_expression "uVar16 | uVar9 << (uVar11 & 0x1f)" (identifier "uVar16") (| "|") (binary_expression "uVar9 << (uVar11 & 0x1f)" (identifier "uVar9") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (expression_statement "uVar17 = uVar13 * uVar18;" (assignment_expression "uVar17 = uVar13 * uVar18" (identifier "uVar17") (= "=") (binary_expression "uVar13 * uVar18" (identifier "uVar13") (* "*") (identifier "uVar18"))) (; ";")) (expression_statement "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;" (assignment_expression "uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" (identifier "uVar9") (= "=") (binary_expression "uVar12 % uVar10 << 0x10 | uVar16 >> 0x10" (binary_expression "uVar12 % uVar10 << 0x10" (binary_expression "uVar12 % uVar10" (identifier "uVar12") (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar16 >> 0x10" (identifier "uVar16") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "uVar11 = uVar18;" (assignment_expression "uVar11 = uVar18" (identifier "uVar11") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (uVar9 < uVar17) {\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" (if "if") (parenthesized_expression "(uVar9 < uVar17)" (( "(") (binary_expression "uVar9 < uVar17" (identifier "uVar9") (< "<") (identifier "uVar17")) () ")")) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar11 = uVar18 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" ({ "{") (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" (identifier "uVar9") (= "=") (binary_expression "uVar9 + param_4" (identifier "uVar9") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "uVar11 = uVar18 - 1;" (assignment_expression "uVar11 = uVar18 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar18 - 1" (identifier "uVar18") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar17)) {\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" (if "if") (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar17))" (( "(") (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar17)" (parenthesized_expression "(param_4 <= uVar9)" (( "(") (binary_expression "param_4 <= uVar9" (identifier "param_4") (<= "<=") (identifier "uVar9")) () ")")) (&& "&&") (parenthesized_expression "(uVar9 < uVar17)" (( "(") (binary_expression "uVar9 < uVar17" (identifier "uVar9") (< "<") (identifier "uVar17")) () ")"))) () ")")) (compound_statement "{\n        uVar11 = uVar18 - 2;\n        uVar9 = uVar9 + param_4;\n      }" ({ "{") (expression_statement "uVar11 = uVar18 - 2;" (assignment_expression "uVar11 = uVar18 - 2" (identifier "uVar11") (= "=") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" (identifier "uVar9") (= "=") (binary_expression "uVar9 + param_4" (identifier "uVar9") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar10 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar19 = (uVar9 - uVar17) / uVar10;" (assignment_expression "uVar19 = (uVar9 - uVar17) / uVar10" (identifier "uVar19") (= "=") (binary_expression "(uVar9 - uVar17) / uVar10" (parenthesized_expression "(uVar9 - uVar17)" (( "(") (binary_expression "uVar9 - uVar17" (identifier "uVar9") (- "-") (identifier "uVar17")) () ")")) (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar18 = uVar13 * uVar19;" (assignment_expression "uVar18 = uVar13 * uVar19" (identifier "uVar18") (= "=") (binary_expression "uVar13 * uVar19" (identifier "uVar13") (* "*") (identifier "uVar19"))) (; ";")) (expression_statement "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;" (assignment_expression "uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" (identifier "uVar9") (= "=") (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff" (binary_expression "(uVar9 - uVar17) % uVar10 << 0x10" (binary_expression "(uVar9 - uVar17) % uVar10" (parenthesized_expression "(uVar9 - uVar17)" (( "(") (binary_expression "uVar9 - uVar17" (identifier "uVar9") (- "-") (identifier "uVar17")) () ")")) (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar16 & 0xffff" (identifier "uVar16") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar12 = uVar19;" (assignment_expression "uVar12 = uVar19" (identifier "uVar12") (= "=") (identifier "uVar19")) (; ";")) (if_statement "if (uVar9 < uVar18) {\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" (if "if") (parenthesized_expression "(uVar9 < uVar18)" (( "(") (binary_expression "uVar9 < uVar18" (identifier "uVar9") (< "<") (identifier "uVar18")) () ")")) (compound_statement "{\n      uVar9 = uVar9 + param_4;\n      uVar12 = uVar19 - 1;\n      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }\n    }" ({ "{") (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" (identifier "uVar9") (= "=") (binary_expression "uVar9 + param_4" (identifier "uVar9") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "uVar12 = uVar19 - 1;" (assignment_expression "uVar12 = uVar19 - 1" (identifier "uVar12") (= "=") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_4 <= uVar9) && (uVar9 < uVar18)) {\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" (if "if") (parenthesized_expression "((param_4 <= uVar9) && (uVar9 < uVar18))" (( "(") (binary_expression "(param_4 <= uVar9) && (uVar9 < uVar18)" (parenthesized_expression "(param_4 <= uVar9)" (( "(") (binary_expression "param_4 <= uVar9" (identifier "param_4") (<= "<=") (identifier "uVar9")) () ")")) (&& "&&") (parenthesized_expression "(uVar9 < uVar18)" (( "(") (binary_expression "uVar9 < uVar18" (identifier "uVar9") (< "<") (identifier "uVar18")) () ")"))) () ")")) (compound_statement "{\n        uVar12 = uVar19 - 2;\n        uVar9 = uVar9 + param_4;\n      }" ({ "{") (expression_statement "uVar12 = uVar19 - 2;" (assignment_expression "uVar12 = uVar19 - 2" (identifier "uVar12") (= "=") (binary_expression "uVar19 - 2" (identifier "uVar19") (- "-") (number_literal "2"))) (; ";")) (expression_statement "uVar9 = uVar9 + param_4;" (assignment_expression "uVar9 = uVar9 + param_4" (identifier "uVar9") (= "=") (binary_expression "uVar9 + param_4" (identifier "uVar9") (+ "+") (identifier "param_4"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar9 = uVar9 - uVar18;" (assignment_expression "uVar9 = uVar9 - uVar18" (identifier "uVar9") (= "=") (binary_expression "uVar9 - uVar18" (identifier "uVar9") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar12 = uVar11 << 0x10 | uVar12;" (assignment_expression "uVar12 = uVar11 << 0x10 | uVar12" (identifier "uVar12") (= "=") (binary_expression "uVar11 << 0x10 | uVar12" (binary_expression "uVar11 << 0x10" (identifier "uVar11") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar12"))) (; ";")) (} "}")))) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar9 / uVar10;" (assignment_expression "uVar17 = uVar9 / uVar10" (identifier "uVar17") (= "=") (binary_expression "uVar9 / uVar10" (identifier "uVar9") (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar11 = uVar17 * uVar13;" (assignment_expression "uVar11 = uVar17 * uVar13" (identifier "uVar11") (= "=") (binary_expression "uVar17 * uVar13" (identifier "uVar17") (* "*") (identifier "uVar13"))) (; ";")) (expression_statement "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;" (assignment_expression "uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (identifier "uVar16") (= "=") (binary_expression "uVar9 % uVar10 << 0x10 | param_2 >> 0x10" (binary_expression "uVar9 % uVar10 << 0x10" (binary_expression "uVar9 % uVar10" (identifier "uVar9") (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 >> 0x10" (identifier "param_2") (>> ">>") (number_literal "0x10")))) (; ";")) (expression_statement "uVar9 = uVar17;" (assignment_expression "uVar9 = uVar17" (identifier "uVar9") (= "=") (identifier "uVar17")) (; ";")) (if_statement "if (uVar16 < uVar11) {\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" (if "if") (parenthesized_expression "(uVar16 < uVar11)" (( "(") (binary_expression "uVar16 < uVar11" (identifier "uVar16") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n    uVar16 = uVar16 + param_4;\n    uVar9 = uVar17 - 1;\n    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }\n  }" ({ "{") (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" (identifier "uVar16") (= "=") (binary_expression "uVar16 + param_4" (identifier "uVar16") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "uVar9 = uVar17 - 1;" (assignment_expression "uVar9 = uVar17 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (if_statement "if ((param_4 <= uVar16) && (uVar16 < uVar11)) {\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" (if "if") (parenthesized_expression "((param_4 <= uVar16) && (uVar16 < uVar11))" (( "(") (binary_expression "(param_4 <= uVar16) && (uVar16 < uVar11)" (parenthesized_expression "(param_4 <= uVar16)" (( "(") (binary_expression "param_4 <= uVar16" (identifier "param_4") (<= "<=") (identifier "uVar16")) () ")")) (&& "&&") (parenthesized_expression "(uVar16 < uVar11)" (( "(") (binary_expression "uVar16 < uVar11" (identifier "uVar16") (< "<") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n      uVar16 = uVar16 + param_4;\n      uVar9 = uVar17 - 2;\n    }" ({ "{") (expression_statement "uVar16 = uVar16 + param_4;" (assignment_expression "uVar16 = uVar16 + param_4" (identifier "uVar16") (= "=") (binary_expression "uVar16 + param_4" (identifier "uVar16") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "uVar9 = uVar17 - 2;" (assignment_expression "uVar9 = uVar17 - 2" (identifier "uVar9") (= "=") (binary_expression "uVar17 - 2" (identifier "uVar17") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar10 == 0) {\n    trap(7);\n  }" (if "if") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    trap(7);\n  }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar17 = (uVar16 - uVar11) / uVar10;" (assignment_expression "uVar17 = (uVar16 - uVar11) / uVar10" (identifier "uVar17") (= "=") (binary_expression "(uVar16 - uVar11) / uVar10" (parenthesized_expression "(uVar16 - uVar11)" (( "(") (binary_expression "uVar16 - uVar11" (identifier "uVar16") (- "-") (identifier "uVar11")) () ")")) (/ "/") (identifier "uVar10"))) (; ";")) (expression_statement "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;" (assignment_expression "uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" (identifier "uVar10") (= "=") (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff" (binary_expression "(uVar16 - uVar11) % uVar10 << 0x10" (binary_expression "(uVar16 - uVar11) % uVar10" (parenthesized_expression "(uVar16 - uVar11)" (( "(") (binary_expression "uVar16 - uVar11" (identifier "uVar16") (- "-") (identifier "uVar11")) () ")")) (% "%") (identifier "uVar10")) (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "param_2 & 0xffff" (identifier "param_2") (& "&") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar11 = param_4 + uVar10;" (assignment_expression "uVar11 = param_4 + uVar10" (identifier "uVar11") (= "=") (binary_expression "param_4 + uVar10" (identifier "param_4") (+ "+") (identifier "uVar10"))) (; ";")) (if_statement "if (uVar10 < uVar17 * uVar13) {\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" (if "if") (parenthesized_expression "(uVar10 < uVar17 * uVar13)" (( "(") (binary_expression "uVar10 < uVar17 * uVar13" (identifier "uVar10") (< "<") (binary_expression "uVar17 * uVar13" (identifier "uVar17") (* "*") (identifier "uVar13"))) () ")")) (compound_statement "{\n    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }\n    uVar17 = uVar17 - 2;\n  }" ({ "{") (if_statement "if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" (if "if") (parenthesized_expression "((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11))" (( "(") (binary_expression "(uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)" (parenthesized_expression "(uVar11 < param_4)" (( "(") (binary_expression "uVar11 < param_4" (identifier "uVar11") (< "<") (identifier "param_4")) () ")")) (|| "||") (parenthesized_expression "(uVar17 * uVar13 <= uVar11)" (( "(") (binary_expression "uVar17 * uVar13 <= uVar11" (binary_expression "uVar17 * uVar13" (identifier "uVar17") (* "*") (identifier "uVar13")) (<= "<=") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n      uVar17 = uVar9 << 0x10 | uVar17 - 1;\n      goto LAB_0001ca70;\n    }" ({ "{") (expression_statement "uVar17 = uVar9 << 0x10 | uVar17 - 1;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar9 << 0x10 | uVar17 - 1" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1")))) (; ";")) (goto_statement "goto LAB_0001ca70;" (goto "goto") (statement_identifier "LAB_0001ca70") (; ";")) (} "}"))) (expression_statement "uVar17 = uVar17 - 2;" (assignment_expression "uVar17 = uVar17 - 2" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 2" (identifier "uVar17") (- "-") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar9 << 0x10 | uVar17;" (assignment_expression "uVar17 = uVar9 << 0x10 | uVar17" (identifier "uVar17") (= "=") (binary_expression "uVar9 << 0x10 | uVar17" (binary_expression "uVar9 << 0x10" (identifier "uVar9") (<< "<<") (number_literal "0x10")) (| "|") (identifier "uVar17"))) (; ";")) (labeled_statement "LAB_0001ca70:\n  return CONCAT44(uVar12,uVar17);" (statement_identifier "LAB_0001ca70") (: ":") (return_statement "return CONCAT44(uVar12,uVar17);" (return "return") (call_expression "CONCAT44(uVar12,uVar17)" (identifier "CONCAT44") (argument_list "(uVar12,uVar17)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar17") () ")"))) (; ";"))) (} "}")))

int function_1(int fd,int var_1,...)

{
  type_1 lVar1;
  type_2 *var_4;
  type_2 *puVar3;
  int var_3;
  int var_6;
  type_3 *puVar6;
  int *piVar7;
  type_4 var_13;
  type_4 var_7;
  type_4 var_16;
  type_4 var_15;
  type_4 var_8;
  type_4 var_9;
  type_4 var_5;
  type_4 var_12;
  int iVar14;
  type_3 uVar15;
  int target;
  type_4 var_17;
  type_4 var_18;
  type_4 var_14;
  type_5 arg;
  
  puVar3 = PTR___stack_chk_guard_00030390;
  var_4 = var_2;
  var_7 = *(type_4 *)PTR___stack_chk_guard_00030390;
  if (var_1 != 0x406) {
    var_3 = (*(type_6 *)PTR_fcntl64_000302dc)();
    goto LAB_0001c778;
  }
  if (*(int *)(var_2 + 0x560) < 0) {
    var_1 = 0;
    var_3 = function_1(fd,0);
    if ((var_3 < 0) || (iVar14 = var_3, *(int *)(var_4 + 0x560) != -1)) goto LAB_0001c778;
  }
  else {
    var_5 = var_8;
    var_3 = (*(type_6 *)PTR_fcntl64_000302dc)();
    if ((-1 < var_3) ||
       (piVar7 = (int *)(*(type_6 *)PTR___errno_location_000302f0)(), *piVar7 != 0x16)) {
      var_8 = var_5;
      *(type_3 *)(var_4 + 0x560) = 1;
      goto LAB_0001c778;
    }
    var_1 = 0;
    var_3 = function_1(fd,0);
    if (var_3 < 0) goto LAB_0001c778;
    *(type_3 *)(var_4 + 0x560) = 0xffffffff;
    iVar14 = var_3;
  }
  var_1 = 1;
  var_5 = (*(type_6 *)PTR_fcntl64_000302dc)(iVar14);
  if (-1 < (int)var_5) {
    var_1 = 2;
    var_8 = var_5 | 1;
    var_6 = (*(type_6 *)PTR_fcntl64_000302dc)(iVar14);
    var_3 = iVar14;
    if (var_6 != -1) goto LAB_0001c778;
  }
  puVar6 = (type_3 *)(*(type_6 *)PTR___errno_location_000302f0)();
  uVar15 = *puVar6;
  var_3 = -1;
  (*(type_6 *)PTR_close_0003028c)(iVar14);
  *puVar6 = uVar15;
LAB_0001c778:
  if (var_7 == *(type_4 *)puVar3) {
    return var_3;
  }
  (*(type_6 *)PTR___stack_chk_fail_0003036c)();
  if (var_8 == 0) {
    if (var_9 <= var_7) {
      if (var_9 == 0) {
        var_10(7);
        var_9 = 1 / 0;
      }
      var_12 = var_11(var_9);
      var_5 = var_9 >> 0x10;
      if (var_12 == 0) {
        var_12 = 1;
      }
      else {
        var_9 = var_9 << (var_12 & 0x1f);
        var_5 = var_9 >> 0x10;
        var_13 = var_7 >> (0x20 - var_12 & 0x1f);
        if (var_5 == 0) {
          var_10(7);
        }
        var_14 = var_13 / var_5;
        var_15 = (type_4)var_1 >> (0x20 - var_12 & 0x1f) | var_7 << (var_12 & 0x1f);
        var_16 = (var_9 & 0xffff) * var_14;
        var_12 = var_13 % var_5 << 0x10 | var_15 >> 0x10;
        var_7 = var_14;
        if (var_12 < var_16) {
          var_12 = var_12 + var_9;
          var_7 = var_14 - 1;
          if ((var_9 <= var_12) && (var_12 < var_16)) {
            var_7 = var_14 - 2;
            var_12 = var_12 + var_9;
          }
        }
        if (var_5 == 0) {
          var_10(7);
        }
        var_14 = (var_12 - var_16) / var_5;
        var_13 = (var_9 & 0xffff) * var_14;
        var_16 = (var_12 - var_16) % var_5 << 0x10 | var_15 & 0xffff;
        var_12 = var_14;
        if (var_16 < var_13) {
          var_16 = var_16 + var_9;
          var_12 = var_14 - 1;
          if ((var_9 <= var_16) && (var_16 < var_13)) {
            var_12 = var_14 - 2;
          }
        }
        var_12 = var_7 << 0x10 | var_12;
      }
      if (var_5 == 0) {
        var_10(7);
        var_10(7);
      }
      return var_12;
    }
    if (var_11(var_9) != 0) {
      var_9 = var_9 << (var_11(var_9) & 0x1fU);
    }
    if (var_9 >> 0x10 == 0) {
      var_10(7);
      var_10(7);
    }
    return 0;
  }
  if (var_7 < var_8) {
    return 0;
  }
  var_5 = var_11(var_8);
  if (var_5 != 0) {
    var_12 = 0x20 - var_5;
    var_13 = var_7 >> (var_12 & 0x1f);
    var_15 = var_9 >> (var_12 & 0x1f) | var_8 << (var_5 & 0x1f);
    var_16 = var_15 >> 0x10;
    if (var_16 == 0) {
      var_10(7);
    }
    var_17 = var_13 / var_16;
    var_14 = (type_4)var_1 >> (var_12 & 0x1f) | var_7 << (var_5 & 0x1f);
    var_12 = (var_15 & 0xffff) * var_17;
    var_13 = var_13 % var_16 << 0x10 | var_14 >> 0x10;
    var_7 = var_17;
    if (var_13 < var_12) {
      var_13 = var_13 + var_15;
      var_7 = var_17 - 1;
      if ((var_15 <= var_13) && (var_13 < var_12)) {
        var_7 = var_17 - 2;
        var_13 = var_13 + var_15;
      }
    }
    if (var_16 == 0) {
      var_10(7);
    }
    var_18 = (var_13 - var_12) / var_16;
    var_17 = (var_15 & 0xffff) * var_18;
    var_13 = (var_13 - var_12) % var_16 << 0x10 | var_14 & 0xffff;
    var_12 = var_18;
    if (var_13 < var_17) {
      var_13 = var_13 + var_15;
      var_12 = var_18 - 1;
      if ((var_15 <= var_13) && (var_13 < var_17)) {
        var_12 = var_18 - 2;
        var_13 = var_13 + var_15;
      }
    }
    lVar1 = (type_7)(var_7 << 0x10 | var_12) * (type_7)(var_9 << (var_5 & 0x1f));
    var_7 = (type_4)((type_7)lVar1 >> 0x20);
    if (var_7 <= var_13 - var_17) {
      if (var_13 - var_17 != var_7) {
        return 0;
      }
      if ((type_4)lVar1 <= (type_4)(var_1 << (var_5 & 0x1f))) {
        return 0;
      }
    }
    return 0;
  }
  if (var_7 <= var_8) {
    return 0;
  }
  return 0;
}


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

ulonglong MASKED(undefined4 param_1,uint param_2,uint param_3,uint param_4)

{
  bool bVar1;
  longlong lVar2;
  undefined *puVar3;
  undefined *puVar4;
  int iVar5;
  int iVar6;
  undefined4 *puVar7;
  int *piVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  
  puVar4 = PTR___stack_chk_guard_00030390;
  puVar3 = PTR_DAT_000300f8;
  uVar9 = *(uint *)PTR___stack_chk_guard_00030390;
  if (param_2 == 0x406) {
    if (*(int *)(PTR_DAT_000300f8 + 0x560) < 0) {
      param_2 = 0;
      iVar5 = MASKED();
      if ((-1 < iVar5) && (iVar14 = iVar5, *(int *)(puVar3 + 0x560) == -1)) {
LAB_0001c7d4:
        param_2 = 1;
        uVar10 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
        if (-1 < (int)uVar10) {
          param_2 = 2;
          param_3 = uVar10 | 1;
          iVar6 = (*(code *)PTR_fcntl64_000302dc)(iVar14);
          iVar5 = iVar14;
          if (iVar6 != -1) goto LAB_0001c778;
        }
        puVar7 = (undefined4 *)(*(code *)PTR___errno_location_000302f0)();
        uVar15 = *puVar7;
        iVar5 = -1;
        (*(code *)PTR_close_0003028c)(iVar14);
        *puVar7 = uVar15;
      }
    }
    else {
      uVar10 = param_3;
      iVar5 = (*(code *)PTR_fcntl64_000302dc)();
      if ((iVar5 < 0) &&
         (piVar8 = (int *)(*(code *)PTR___errno_location_000302f0)(), *piVar8 == 0x16)) {
        param_2 = 0;
        iVar5 = MASKED(param_1);
        if (-1 < iVar5) {
          *(undefined4 *)(puVar3 + 0x560) = 0xffffffff;
          iVar14 = iVar5;
          goto LAB_0001c7d4;
        }
      }
      else {
        param_3 = uVar10;
        *(undefined4 *)(puVar3 + 0x560) = 1;
      }
    }
  }
  else {
    iVar5 = (*(code *)PTR_fcntl64_000302dc)();
  }
LAB_0001c778:
  if (uVar9 == *(uint *)puVar4) {
    return CONCAT44(iVar5,*(uint *)puVar4);
  }
  (*(code *)PTR___stack_chk_fail_0003036c)();
  if (param_3 != 0) {
    if (uVar9 < param_3) {
      return 0;
    }
    uVar10 = LZCOUNT(param_3);
    if (uVar10 == 0) {
      if (uVar9 <= param_3) {
        return (ulonglong)(param_2 < param_4) ^ 1;
      }
      return 1;
    }
    uVar11 = 0x20 - uVar10;
    uVar12 = uVar9 >> (uVar11 & 0x1f);
    uVar17 = param_4 >> (uVar11 & 0x1f) | param_3 << (uVar10 & 0x1f);
    uVar16 = uVar17 >> 0x10;
    if (uVar16 == 0) {
      trap(7);
    }
    uVar18 = uVar12 / uVar16;
    uVar13 = param_2 >> (uVar11 & 0x1f) | uVar9 << (uVar10 & 0x1f);
    uVar11 = (uVar17 & 0xffff) * uVar18;
    uVar12 = uVar12 % uVar16 << 0x10 | uVar13 >> 0x10;
    uVar9 = uVar18;
    if (uVar12 < uVar11) {
      uVar12 = uVar12 + uVar17;
      uVar9 = uVar18 - 1;
      if ((uVar17 <= uVar12) && (uVar12 < uVar11)) {
        uVar9 = uVar18 - 2;
        uVar12 = uVar12 + uVar17;
      }
    }
    if (uVar16 == 0) {
      trap(7);
    }
    uVar19 = (uVar12 - uVar11) / uVar16;
    uVar18 = (uVar17 & 0xffff) * uVar19;
    uVar12 = (uVar12 - uVar11) % uVar16 << 0x10 | uVar13 & 0xffff;
    uVar11 = uVar19;
    if (uVar12 < uVar18) {
      uVar12 = uVar12 + uVar17;
      uVar11 = uVar19 - 1;
      if ((uVar17 <= uVar12) && (uVar12 < uVar18)) {
        uVar11 = uVar19 - 2;
        uVar12 = uVar12 + uVar17;
      }
    }
    uVar11 = uVar9 << 0x10 | uVar11;
    lVar2 = (ulonglong)uVar11 * (ulonglong)(param_4 << (uVar10 & 0x1f));
    uVar9 = (uint)((ulonglong)lVar2 >> 0x20);
    if (uVar9 <= uVar12 - uVar18) {
      if (uVar12 - uVar18 != uVar9) {
        return (ulonglong)uVar11;
      }
      bVar1 = param_2 << (uVar10 & 0x1f) < (uint)lVar2;
      if (!bVar1) {
        return (ulonglong)CONCAT14(bVar1,uVar11);
      }
    }
    return (ulonglong)(uVar11 - 1);
  }
  uVar10 = LZCOUNT(param_4);
  if (uVar9 < param_4) {
    if (uVar10 != 0) {
      uVar11 = param_2 >> (-uVar10 & 0x1f);
      param_4 = param_4 << (uVar10 & 0x1f);
      param_2 = param_2 << (uVar10 & 0x1f);
      uVar9 = uVar11 | uVar9 << (uVar10 & 0x1f);
    }
    uVar10 = param_4 >> 0x10;
    if (uVar10 == 0) {
      trap(7);
    }
    uVar16 = uVar9 / uVar10;
    uVar12 = (param_4 & 0xffff) * uVar16;
    uVar11 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;
    uVar9 = uVar16;
    if (uVar11 < uVar12) {
      uVar11 = uVar11 + param_4;
      uVar9 = uVar16 - 1;
      if ((param_4 <= uVar11) && (uVar11 < uVar12)) {
        uVar9 = uVar16 - 2;
        uVar11 = uVar11 + param_4;
      }
    }
    if (uVar10 == 0) {
      trap(7);
    }
    uVar17 = (uVar11 - uVar12) / uVar10;
    uVar16 = (param_4 & 0xffff) * uVar17;
    uVar11 = (uVar11 - uVar12) % uVar10 << 0x10 | param_2 & 0xffff;
    uVar10 = uVar17;
    if (uVar11 < uVar16) {
      uVar11 = param_4 + uVar11;
      uVar10 = uVar17 - 1;
      if ((param_4 <= uVar11) && (uVar11 < uVar16)) {
        uVar10 = uVar17 - 2;
      }
    }
    return (ulonglong)(uVar9 << 0x10 | uVar10);
  }
  if (param_4 == 0) {
    trap(7);
    param_4 = 1 / 0;
  }
  uVar11 = LZCOUNT(param_4);
  uVar10 = param_4 >> 0x10;
  if (uVar11 == 0) {
    uVar9 = uVar9 - param_4;
    uVar12 = 1;
    uVar13 = param_4 & 0xffff;
  }
  else {
    param_4 = param_4 << (uVar11 & 0x1f);
    uVar10 = param_4 >> 0x10;
    uVar12 = uVar9 >> (0x20 - uVar11 & 0x1f);
    uVar16 = param_2 >> (0x20 - uVar11 & 0x1f);
    if (uVar10 == 0) {
      trap(7);
    }
    uVar18 = uVar12 / uVar10;
    uVar13 = param_4 & 0xffff;
    param_2 = param_2 << (uVar11 & 0x1f);
    uVar16 = uVar16 | uVar9 << (uVar11 & 0x1f);
    uVar17 = uVar13 * uVar18;
    uVar9 = uVar12 % uVar10 << 0x10 | uVar16 >> 0x10;
    uVar11 = uVar18;
    if (uVar9 < uVar17) {
      uVar9 = uVar9 + param_4;
      uVar11 = uVar18 - 1;
      if ((param_4 <= uVar9) && (uVar9 < uVar17)) {
        uVar11 = uVar18 - 2;
        uVar9 = uVar9 + param_4;
      }
    }
    if (uVar10 == 0) {
      trap(7);
    }
    uVar19 = (uVar9 - uVar17) / uVar10;
    uVar18 = uVar13 * uVar19;
    uVar9 = (uVar9 - uVar17) % uVar10 << 0x10 | uVar16 & 0xffff;
    uVar12 = uVar19;
    if (uVar9 < uVar18) {
      uVar9 = uVar9 + param_4;
      uVar12 = uVar19 - 1;
      if ((param_4 <= uVar9) && (uVar9 < uVar18)) {
        uVar12 = uVar19 - 2;
        uVar9 = uVar9 + param_4;
      }
    }
    uVar9 = uVar9 - uVar18;
    uVar12 = uVar11 << 0x10 | uVar12;
  }
  if (uVar10 == 0) {
    trap(7);
  }
  uVar17 = uVar9 / uVar10;
  uVar11 = uVar17 * uVar13;
  uVar16 = uVar9 % uVar10 << 0x10 | param_2 >> 0x10;
  uVar9 = uVar17;
  if (uVar16 < uVar11) {
    uVar16 = uVar16 + param_4;
    uVar9 = uVar17 - 1;
    if ((param_4 <= uVar16) && (uVar16 < uVar11)) {
      uVar16 = uVar16 + param_4;
      uVar9 = uVar17 - 2;
    }
  }
  if (uVar10 == 0) {
    trap(7);
  }
  uVar17 = (uVar16 - uVar11) / uVar10;
  uVar10 = (uVar16 - uVar11) % uVar10 << 0x10 | param_2 & 0xffff;
  uVar11 = param_4 + uVar10;
  if (uVar10 < uVar17 * uVar13) {
    if ((uVar11 < param_4) || (uVar17 * uVar13 <= uVar11)) {
      uVar17 = uVar9 << 0x10 | uVar17 - 1;
      goto LAB_0001ca70;
    }
    uVar17 = uVar17 - 2;
  }
  uVar17 = uVar9 << 0x10 | uVar17;
LAB_0001ca70:
  return CONCAT44(uVar12,uVar17);
}

