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

randint randint_genmax(randint_source *s,randint genmax)

{
  ulonglong uVar1;
  ulonglong uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  uint in_a2;
  randread_source *s_00;
  size_t size;
  uint in_a3;
  uint uVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  undefined *puVar13;
  int iVar14;
  longlong lVar15;
  randint rVar16;
  randint rVar17;
  uchar buf [8];
  
  puVar13 = PTR___stack_chk_guard_00044624;
  uVar7 = in_a3 + 1;
  iVar10 = (uVar7 < in_a3) + in_a2;
  s_00 = s->source;
  iVar3 = *(int *)PTR___stack_chk_guard_00044624;
  rVar17 = s->randnum;
  uVar1 = s->randmax;
  while( true ) {
    if (uVar1 < CONCAT44(in_a2,in_a3)) {
      size = 0;
      uVar2 = uVar1;
      do {
        do {
          uVar6 = (uint)uVar2 * 0x100;
          uVar4 = uVar6 + 0xff;
          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar2 = CONCAT44(uVar6,uVar4);
          size = size + 1;
        } while (uVar6 < in_a2);
      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));
      randread(s_00,buf,size);
      pbVar8 = buf;
      uVar2 = uVar1;
      rVar16 = rVar17;
      do {
        do {
          uVar6 = (uint)uVar2 * 0x100;
          uVar9 = uVar6 + 0xff;
          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;
          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar1 = CONCAT44(uVar6,uVar9);
          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);
          rVar17 = CONCAT44(iVar12,uVar4);
          pbVar8 = pbVar8 + 1;
          uVar2 = CONCAT44(uVar6,uVar9);
          rVar16 = CONCAT44(iVar12,uVar4);
        } while (uVar6 < in_a2);
      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));
    }
    iVar12 = (int)(uVar1 >> 0x20);
    uVar6 = (uint)uVar1;
    uVar4 = (uint)(rVar17 >> 0x20);
    uVar9 = (uint)rVar17;
    if (uVar1 == CONCAT44(in_a2,in_a3)) break;
    uVar11 = uVar6 - in_a3;
    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);
    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);
    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);
    uVar5 = uVar6 - (int)lVar15;
    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);
    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {
      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);
      s->randnum = rVar16;
      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);
      s->randmax = rVar16;
LAB_0002d774:
      iVar10 = *(int *)puVar13;
      if (iVar3 == iVar10) {
        return rVar17;
      }
      puVar13 = PTR___stack_chk_fail_000445f4;
      (*(code *)PTR___stack_chk_fail_000445f4)();
      (**(code **)(puVar13 + 0x16c7c))();
      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);
      return rVar17;
    }
    uVar1 = lVar15 - 1;
  }
  *(undefined4 *)((int)&s->randmax + 4) = 0;
  *(undefined4 *)&s->randmax = 0;
  *(undefined4 *)((int)&s->randnum + 4) = 0;
  *(undefined4 *)&s->randnum = 0;
  goto LAB_0002d774;
}



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

undefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)

{
  ulonglong uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  byte *pbVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  undefined *puVar13;
  int iVar14;
  longlong lVar15;
  undefined8 uVar16;
  undefined8 uVar17;
  byte local_34 [8];
  int local_2c;
  
  puVar13 = PTR___stack_chk_guard_00044624;
  uVar6 = param_4 + 1;
  iVar11 = (uVar6 < param_4) + param_3;
  uVar8 = *param_1;
  local_2c = *(int *)PTR___stack_chk_guard_00044624;
  uVar17 = *(undefined8 *)(param_1 + 2);
  uVar1 = *(ulonglong *)(param_1 + 4);
  while( true ) {
    if (uVar1 < CONCAT44(param_3,param_4)) {
      iVar9 = 0;
      uVar2 = uVar1;
      do {
        do {
          uVar5 = (uint)uVar2 * 0x100;
          uVar3 = uVar5 + 0xff;
          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar2 = CONCAT44(uVar5,uVar3);
          iVar9 = iVar9 + 1;
        } while (uVar5 < param_3);
      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));
      randread(uVar8,local_34,iVar9);
      pbVar7 = local_34;
      uVar2 = uVar1;
      uVar16 = uVar17;
      do {
        do {
          uVar5 = (uint)uVar2 * 0x100;
          uVar10 = uVar5 + 0xff;
          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;
          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar1 = CONCAT44(uVar5,uVar10);
          iVar9 = (uint)(uVar3 < *pbVar7) +
                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);
          uVar17 = CONCAT44(iVar9,uVar3);
          pbVar7 = pbVar7 + 1;
          uVar2 = CONCAT44(uVar5,uVar10);
          uVar16 = CONCAT44(iVar9,uVar3);
        } while (uVar5 < param_3);
      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));
    }
    iVar9 = (int)(uVar1 >> 0x20);
    uVar5 = (uint)uVar1;
    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);
    uVar10 = (uint)uVar17;
    if (uVar1 == CONCAT44(param_3,param_4)) break;
    uVar12 = uVar5 - param_4;
    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);
    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);
    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);
    uVar4 = uVar5 - (int)lVar15;
    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);
    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {
      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);
      *(undefined8 *)(param_1 + 2) = uVar16;
      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);
      *(undefined8 *)(param_1 + 4) = uVar16;
LAB_0002d774:
      iVar11 = *(int *)puVar13;
      if (local_2c == iVar11) {
        return uVar17;
      }
      puVar13 = PTR___stack_chk_fail_000445f4;
      (*(code *)PTR___stack_chk_fail_000445f4)();
      (**(code **)(puVar13 + 0x16c7c))();
      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);
      return uVar17;
    }
    uVar1 = lVar15 - 1;
  }
  param_1[5] = 0;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  goto LAB_0002d774;
}


lui gp,0x2
addiu gp,gp,-0x145c
addu gp,gp,t9
lw v0,-0x7acc(gp)
addiu sp,sp,-0x70
or v1,a0,zero
addiu a1,a3,0x1
sw s3,0x54(sp)
or s3,a2,zero
sw v0,0x34(sp)
sw s2,0x50(sp)
sltu s2,a1,a3
sw gp,0x10(sp)
addu s2,s2,s3
sw s7,0x64(sp)
sw s6,0x60(sp)
sw s4,0x58(sp)
addiu s4,sp,0x3c
sw s1,0x4c(sp)
sw s0,0x48(sp)
sw ra,0x6c(sp)
sw s8,0x68(sp)
sw s5,0x5c(sp)
sw a3,0x28(sp)
sw a0,0x30(sp)
sw a1,0x1c(sp)
lw a2,0x0(v1)
lw v0,0x0(v0)
lw s6,0x8(v1)
lw s7,0xc(v1)
lw s0,0x10(v1)
lw s1,0x14(v1)
sw a2,0x2c(sp)
sw v0,0x44(sp)
b 0x0002d684
_sltu v0,s0,s3
beq s3,s0,0x0002d7bc
_lw v0,0x28(sp)
beq s0,s3,0x0002d750
_lw v0,0x28(sp)
subu s8,s0,s3
lw t9,-0x7ea0(gp)
or a2,s2,zero
lw a3,0x1c(sp)
subu s5,s1,v0
sltu v0,s1,s5
subu s8,s8,v0
or a1,s5,zero
bal 0x0002ebc0
_or a0,s8,zero
or a0,s6,zero
lw gp,0x10(sp)
or t5,v0,zero
lw a3,0x1c(sp)
or a2,s2,zero
sw t5,0x20(sp)
or a1,s7,zero
lw t9,-0x7ea0(gp)
bal 0x0002ebc0
_sw v1,0x24(sp)
lw t4,0x24(sp)
or t7,v0,zero
lw t5,0x20(sp)
or t6,v1,zero
subu a0,s1,t4
subu s0,s0,t5
sltu s1,s1,a0
subu s0,s0,s1
sltu v0,s0,s6
beq v0,zero,0x0002d7d0
_lw gp,0x10(sp)
addiu s1,t4,-0x1
addiu s0,t5,-0x1
sltu t4,s1,t4
addu s0,t4,s0
or s6,t7,zero
or s7,t6,zero
sltu v0,s0,s3
beq v0,zero,0x0002d5dc
_or a2,zero,zero
or v0,s0,zero
or v1,s1,zero
sll a0,v1,0x8
srl a1,v1,0x18
sll v0,v0,0x8
addiu v1,a0,0xff
or v0,a1,v0
sltu a0,v1,a0
addu v0,a0,v0
sltu a0,v0,s3
bne a0,zero,0x0002d694
_addiu a2,a2,0x1
bne s3,v0,0x0002d6d0
_lw a0,0x28(sp)
sltu a0,v1,a0
bne a0,zero,0x0002d698
_sll a0,v1,0x8
lw t9,-0x7d18(gp)
or a1,s4,zero
bal 0x0002dd8c
_lw a0,0x2c(sp)
or a1,s4,zero
lw gp,0x10(sp)
sll a0,s1,0x8
lbu v1,0x0(a1)
srl a2,s1,0x18
sll s0,s0,0x8
addiu s1,a0,0xff
sll v0,s7,0x8
or s0,a2,s0
sltu a0,s1,a0
addu t1,v1,v0
srl a2,s7,0x18
sll t0,s6,0x8
addu s0,a0,s0
or t0,a2,t0
sltu v1,t1,v1
sltu v0,s0,s3
addu s6,v1,t0
or s7,t1,zero
bne v0,zero,0x0002d6e8
_addiu a1,a1,0x1
bne s3,s0,0x0002d5e4
_lw v0,0x28(sp)
sltu v0,s1,v0
bne v0,zero,0x0002d6e8
_nop
bne s0,s3,0x0002d5ec
_lw v0,0x28(sp)
bne s1,v0,0x0002d5ec
_lw v0,0x28(sp)
lw a0,0x30(sp)
or v1,zero,zero
or v0,zero,zero
sw v1,0x14(a0)
sw v0,0x10(a0)
sw v1,0xc(a0)
sw v0,0x8(a0)
lw v1,0x34(sp)
or v0,s6,zero
lw a1,0x44(sp)
lw a0,0x0(v1)
bne a1,a0,0x0002d84c
_or v1,s7,zero
lw ra,0x6c(sp)
lw s8,0x68(sp)
lw s7,0x64(sp)
lw s6,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x70
sltu v0,s1,v0
beq v0,zero,0x0002d5e4
_or a2,zero,zero
b 0x0002d690
_or v0,s0,zero
bne s6,s0,0x0002d7e0
_sltu a0,a0,s7
bne a0,zero,0x0002d668
_nop
lw s0,0x1c(sp)
or a0,s6,zero
lw t9,-0x7d14(gp)
or a1,s7,zero
sw t6,0x24(sp)
or a2,s2,zero
sw t7,0x20(sp)
bal 0x0002e750
_or a3,s0,zero
or a3,s0,zero
lw gp,0x10(sp)
or a2,s2,zero
lw s0,0x30(sp)
or a0,s8,zero
or a1,s5,zero
lw t9,-0x7d14(gp)
sw v1,0xc(s0)
bal 0x0002e750
_sw v0,0x8(s0)
lw t7,0x20(sp)
lw t6,0x24(sp)
lw gp,0x10(sp)
or s6,t7,zero
sw v1,0x14(s0)
sw v0,0x10(s0)
b 0x0002d774
_or s7,t6,zero
lw t9,-0x7afc(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0002d7bc) */\n\nundefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}\n\n" comment (function_definition "undefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" type_identifier (function_declarator "randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "byte local_34 [8];" type_identifier (array_declarator "local_34 [8]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar13 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar13 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "uVar6 = param_4 + 1;" (assignment_expression "uVar6 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = (uVar6 < param_4) + param_3;" (assignment_expression "iVar11 = (uVar6 < param_4) + param_3" identifier = (binary_expression "(uVar6 < param_4) + param_3" (parenthesized_expression "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) )) + identifier)) ;) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar17 = *(undefined8 *)(param_1 + 2);" (assignment_expression "uVar17 = *(undefined8 *)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulonglong *)(param_1 + 4);" (assignment_expression "uVar1 = *(ulonglong *)(param_1 + 4)" identifier = (pointer_expression "*(ulonglong *)(param_1 + 4)" * (cast_expression "(ulonglong *)(param_1 + 4)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" { (if_statement "if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" if (parenthesized_expression "(uVar1 < CONCAT44(param_3,param_4))" ( (binary_expression "uVar1 < CONCAT44(param_3,param_4)" identifier < (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) )) (compound_statement "{\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));" do (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      }" { (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);" do (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        }" { (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar3 = uVar5 + 0xff;" (assignment_expression "uVar3 = uVar5 + 0xff" identifier = (binary_expression "uVar5 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar2 = CONCAT44(uVar5,uVar3);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" identifier = (call_expression "CONCAT44(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < param_3)" ( (binary_expression "uVar5 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4))" ( (binary_expression "(param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" (parenthesized_expression "(param_3 == uVar5)" ( (binary_expression "param_3 == uVar5" identifier == identifier) )) && (parenthesized_expression "(uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" ( (comma_expression "uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" identifier = (call_expression "CONCAT44(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))) , (binary_expression "uVar3 < param_4" identifier < identifier)) ))) )) ;) (expression_statement "randread(uVar8,local_34,iVar9);" (call_expression "randread(uVar8,local_34,iVar9)" identifier (argument_list "(uVar8,local_34,iVar9)" ( identifier , identifier , identifier ))) ;) (expression_statement "pbVar7 = local_34;" (assignment_expression "pbVar7 = local_34" identifier = identifier) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));" do (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      }" { (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);" do (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        }" { (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar10 = uVar5 + 0xff;" (assignment_expression "uVar10 = uVar5 + 0xff" identifier = (binary_expression "uVar5 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;" (assignment_expression "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100" identifier = (binary_expression "(uint)*pbVar7 + (uint)uVar16 * 0x100" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) + (binary_expression "(uint)uVar16 * 0x100" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar10 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar5)" ( (binary_expression "uVar10 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar1 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar1 = CONCAT44(uVar5,uVar10)" identifier = (call_expression "CONCAT44(uVar5,uVar10)" identifier (argument_list "(uVar5,uVar10)" ( identifier , identifier )))) ;) (expression_statement "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);" (assignment_expression "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < *pbVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < *pbVar7)" ( (binary_expression "uVar3 < *pbVar7" identifier < (pointer_expression "*pbVar7" * identifier)) ))) + (parenthesized_expression "((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" ( (binary_expression "(uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8" (binary_expression "(uint)uVar16 >> 0x18" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)((ulonglong)uVar16 >> 0x20) << 8" (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar17 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar17 = CONCAT44(iVar9,uVar3)" identifier = (call_expression "CONCAT44(iVar9,uVar3)" identifier (argument_list "(iVar9,uVar3)" ( identifier , identifier )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar10)" identifier = (call_expression "CONCAT44(uVar5,uVar10)" identifier (argument_list "(uVar5,uVar10)" ( identifier , identifier )))) ;) (expression_statement "uVar16 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar16 = CONCAT44(iVar9,uVar3)" identifier = (call_expression "CONCAT44(iVar9,uVar3)" identifier (argument_list "(iVar9,uVar3)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar5 < param_3)" ( (binary_expression "uVar5 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4))" ( (binary_expression "(param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" (parenthesized_expression "(param_3 == uVar5)" ( (binary_expression "param_3 == uVar5" identifier == identifier) )) && (parenthesized_expression "(uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" ( (comma_expression "uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (comma_expression "uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar16 = uVar17" identifier = identifier) , (binary_expression "uVar10 < param_4" identifier < identifier))) ))) )) ;) })) (expression_statement "iVar9 = (int)(uVar1 >> 0x20);" (assignment_expression "iVar9 = (int)(uVar1 >> 0x20)" identifier = (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)uVar1;" (assignment_expression "uVar5 = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = (uint)((ulonglong)uVar17 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar17 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (uint)uVar17;" (assignment_expression "uVar10 = (uint)uVar17" identifier = (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar1 == CONCAT44(param_3,param_4)) break;" if (parenthesized_expression "(uVar1 == CONCAT44(param_3,param_4))" ( (binary_expression "uVar1 == CONCAT44(param_3,param_4)" identifier == (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar5 - param_4;" (assignment_expression "uVar12 = uVar5 - param_4" identifier = (binary_expression "uVar5 - param_4" identifier - identifier)) ;) (expression_statement "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);" (assignment_expression "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12)" identifier = (binary_expression "(iVar9 - param_3) - (uint)(uVar5 < uVar12)" (parenthesized_expression "(iVar9 - param_3)" ( (binary_expression "iVar9 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar12)" ( (binary_expression "uVar5 < uVar12" identifier < identifier) ))))) ;) (expression_statement "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" identifier = (call_expression "FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" identifier (argument_list "(iVar14,uVar12,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" identifier = (call_expression "FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" identifier (argument_list "(uVar3,uVar10,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = uVar5 - (int)lVar15;" (assignment_expression "uVar4 = uVar5 - (int)lVar15" identifier = (binary_expression "uVar5 - (int)lVar15" identifier - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);" (assignment_expression "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" identifier = (binary_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" (parenthesized_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20))" ( (binary_expression "iVar9 - (int)((ulonglong)lVar15 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar5 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) ))))) ;) (if_statement "if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" if (parenthesized_expression "((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4))))" ( (binary_expression "(uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))" (parenthesized_expression "(uVar3 <= uVar5)" ( (binary_expression "uVar3 <= uVar5" identifier <= identifier) )) && (parenthesized_expression "((uVar3 != uVar5 || (uVar10 <= uVar4)))" ( (parenthesized_expression "(uVar3 != uVar5 || (uVar10 <= uVar4))" ( (binary_expression "uVar3 != uVar5 || (uVar10 <= uVar4)" (binary_expression "uVar3 != uVar5" identifier != identifier) || (parenthesized_expression "(uVar10 <= uVar4)" ( (binary_expression "uVar10 <= uVar4" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" { (expression_statement "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" identifier = (call_expression "FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" identifier (argument_list "(uVar3,uVar10,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 2) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 2) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" identifier = (call_expression "FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" identifier (argument_list "(iVar14,uVar12,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 4) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002d774:\n      iVar11 = *(int *)puVar13;" statement_identifier : (expression_statement "iVar11 = *(int *)puVar13;" (assignment_expression "iVar11 = *(int *)puVar13" identifier = (pointer_expression "*(int *)puVar13" * (cast_expression "(int *)puVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (local_2c == iVar11) {\n        return uVar17;\n      }" if (parenthesized_expression "(local_2c == iVar11)" ( (binary_expression "local_2c == iVar11" identifier == identifier) )) (compound_statement "{\n        return uVar17;\n      }" { (return_statement "return uVar17;" return identifier ;) })) (expression_statement "puVar13 = PTR___stack_chk_fail_000445f4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000445f4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar13 + 0x16c7c))();" (call_expression "(**(code **)(puVar13 + 0x16c7c))()" (parenthesized_expression "(**(code **)(puVar13 + 0x16c7c))" ( (pointer_expression "**(code **)(puVar13 + 0x16c7c)" * (pointer_expression "*(code **)(puVar13 + 0x16c7c)" * (cast_expression "(code **)(puVar13 + 0x16c7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16c7c)" ( (binary_expression "puVar13 + 0x16c7c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);" (assignment_expression "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11)" identifier = (call_expression "(**(code **)(puVar13 + 0x16dd4))(iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x16dd4))" ( (pointer_expression "**(code **)(puVar13 + 0x16dd4)" * (pointer_expression "*(code **)(puVar13 + 0x16dd4)" * (cast_expression "(code **)(puVar13 + 0x16dd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16dd4)" ( (binary_expression "puVar13 + 0x16dd4" identifier + number_literal) ))))) )) (argument_list "(iVar11)" ( identifier )))) ;) (return_statement "return uVar17;" return identifier ;) })) (expression_statement "uVar1 = lVar15 - 1;" (assignment_expression "uVar1 = lVar15 - 1" identifier = (binary_expression "lVar15 - 1" identifier - number_literal)) ;) })) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d774;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0002d7bc) */\n\nrandint randint_genmax(randint_source *s,randint genmax)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  uint in_a2;\n  randread_source *s_00;\n  size_t size;\n  uint in_a3;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  randint rVar16;\n  randint rVar17;\n  uchar buf [8];\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar7 = in_a3 + 1;\n  iVar10 = (uVar7 < in_a3) + in_a2;\n  s_00 = s->source;\n  iVar3 = *(int *)PTR___stack_chk_guard_00044624;\n  rVar17 = s->randnum;\n  uVar1 = s->randmax;\n  while( true ) {\n    if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }\n    iVar12 = (int)(uVar1 >> 0x20);\n    uVar6 = (uint)uVar1;\n    uVar4 = (uint)(rVar17 >> 0x20);\n    uVar9 = (uint)rVar17;\n    if (uVar1 == CONCAT44(in_a2,in_a3)) break;\n    uVar11 = uVar6 - in_a3;\n    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);\n    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);\n    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);\n    uVar5 = uVar6 - (int)lVar15;\n    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);\n    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  *(undefined4 *)((int)&s->randmax + 4) = 0;\n  *(undefined4 *)&s->randmax = 0;\n  *(undefined4 *)((int)&s->randnum + 4) = 0;\n  *(undefined4 *)&s->randnum = 0;\n  goto LAB_0002d774;\n}\n\n" comment (function_definition "randint randint_genmax(randint_source *s,randint genmax)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  uint in_a2;\n  randread_source *s_00;\n  size_t size;\n  uint in_a3;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  randint rVar16;\n  randint rVar17;\n  uchar buf [8];\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar7 = in_a3 + 1;\n  iVar10 = (uVar7 < in_a3) + in_a2;\n  s_00 = s->source;\n  iVar3 = *(int *)PTR___stack_chk_guard_00044624;\n  rVar17 = s->randnum;\n  uVar1 = s->randmax;\n  while( true ) {\n    if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }\n    iVar12 = (int)(uVar1 >> 0x20);\n    uVar6 = (uint)uVar1;\n    uVar4 = (uint)(rVar17 >> 0x20);\n    uVar9 = (uint)rVar17;\n    if (uVar1 == CONCAT44(in_a2,in_a3)) break;\n    uVar11 = uVar6 - in_a3;\n    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);\n    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);\n    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);\n    uVar5 = uVar6 - (int)lVar15;\n    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);\n    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  *(undefined4 *)((int)&s->randmax + 4) = 0;\n  *(undefined4 *)&s->randmax = 0;\n  *(undefined4 *)((int)&s->randnum + 4) = 0;\n  *(undefined4 *)&s->randnum = 0;\n  goto LAB_0002d774;\n}" type_identifier (function_declarator "randint_genmax(randint_source *s,randint genmax)" identifier (parameter_list "(randint_source *s,randint genmax)" ( (parameter_declaration "randint_source *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "randint genmax" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  uint in_a2;\n  randread_source *s_00;\n  size_t size;\n  uint in_a3;\n  uint uVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  randint rVar16;\n  randint rVar17;\n  uchar buf [8];\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar7 = in_a3 + 1;\n  iVar10 = (uVar7 < in_a3) + in_a2;\n  s_00 = s->source;\n  iVar3 = *(int *)PTR___stack_chk_guard_00044624;\n  rVar17 = s->randnum;\n  uVar1 = s->randmax;\n  while( true ) {\n    if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }\n    iVar12 = (int)(uVar1 >> 0x20);\n    uVar6 = (uint)uVar1;\n    uVar4 = (uint)(rVar17 >> 0x20);\n    uVar9 = (uint)rVar17;\n    if (uVar1 == CONCAT44(in_a2,in_a3)) break;\n    uVar11 = uVar6 - in_a3;\n    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);\n    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);\n    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);\n    uVar5 = uVar6 - (int)lVar15;\n    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);\n    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  *(undefined4 *)((int)&s->randmax + 4) = 0;\n  *(undefined4 *)&s->randmax = 0;\n  *(undefined4 *)((int)&s->randnum + 4) = 0;\n  *(undefined4 *)&s->randnum = 0;\n  goto LAB_0002d774;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "randread_source *s_00;" type_identifier (pointer_declarator "*s_00" * identifier) ;) (declaration "size_t size;" primitive_type identifier ;) (declaration "uint in_a3;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "randint rVar16;" type_identifier identifier ;) (declaration "randint rVar17;" type_identifier identifier ;) (declaration "uchar buf [8];" type_identifier (array_declarator "buf [8]" identifier [ number_literal ]) ;) (expression_statement "puVar13 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar13 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "uVar7 = in_a3 + 1;" (assignment_expression "uVar7 = in_a3 + 1" identifier = (binary_expression "in_a3 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = (uVar7 < in_a3) + in_a2;" (assignment_expression "iVar10 = (uVar7 < in_a3) + in_a2" identifier = (binary_expression "(uVar7 < in_a3) + in_a2" (parenthesized_expression "(uVar7 < in_a3)" ( (binary_expression "uVar7 < in_a3" identifier < identifier) )) + identifier)) ;) (expression_statement "s_00 = s->source;" (assignment_expression "s_00 = s->source" identifier = (field_expression "s->source" identifier -> field_identifier)) ;) (expression_statement "iVar3 = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "iVar3 = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "rVar17 = s->randnum;" (assignment_expression "rVar17 = s->randnum" identifier = (field_expression "s->randnum" identifier -> field_identifier)) ;) (expression_statement "uVar1 = s->randmax;" (assignment_expression "uVar1 = s->randmax" identifier = (field_expression "s->randmax" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n    if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }\n    iVar12 = (int)(uVar1 >> 0x20);\n    uVar6 = (uint)uVar1;\n    uVar4 = (uint)(rVar17 >> 0x20);\n    uVar9 = (uint)rVar17;\n    if (uVar1 == CONCAT44(in_a2,in_a3)) break;\n    uVar11 = uVar6 - in_a3;\n    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);\n    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);\n    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);\n    uVar5 = uVar6 - (int)lVar15;\n    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);\n    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }\n    iVar12 = (int)(uVar1 >> 0x20);\n    uVar6 = (uint)uVar1;\n    uVar4 = (uint)(rVar17 >> 0x20);\n    uVar9 = (uint)rVar17;\n    if (uVar1 == CONCAT44(in_a2,in_a3)) break;\n    uVar11 = uVar6 - in_a3;\n    iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);\n    lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);\n    rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);\n    uVar5 = uVar6 - (int)lVar15;\n    uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);\n    if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" { (if_statement "if (uVar1 < CONCAT44(in_a2,in_a3)) {\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }" if (parenthesized_expression "(uVar1 < CONCAT44(in_a2,in_a3))" ( (binary_expression "uVar1 < CONCAT44(in_a2,in_a3)" identifier < (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) )) (compound_statement "{\n      size = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));\n      randread(s_00,buf,size);\n      pbVar8 = buf;\n      uVar2 = uVar1;\n      rVar16 = rVar17;\n      do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));\n    }" { (expression_statement "size = 0;" (assignment_expression "size = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3));" do (compound_statement "{\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);\n      }" { (do_statement "do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        } while (uVar6 < in_a2);" do (compound_statement "{\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar4 = uVar6 + 0xff;\n          uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar6,uVar4);\n          size = size + 1;\n        }" { (expression_statement "uVar6 = (uint)uVar2 * 0x100;" (assignment_expression "uVar6 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar4 = uVar6 + 0xff;" (assignment_expression "uVar4 = uVar6 + 0xff" identifier = (binary_expression "uVar6 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar6 = (uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar4 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar4 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < uVar6)" ( (binary_expression "uVar4 < uVar6" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar2 = CONCAT44(uVar6,uVar4);" (assignment_expression "uVar2 = CONCAT44(uVar6,uVar4)" identifier = (call_expression "CONCAT44(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier )))) ;) (expression_statement "size = size + 1;" (assignment_expression "size = size + 1" identifier = (binary_expression "size + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < in_a2)" ( (binary_expression "uVar6 < in_a2" identifier < identifier) )) ;) }) while (parenthesized_expression "((in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3))" ( (binary_expression "(in_a2 == uVar6) && (uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3)" (parenthesized_expression "(in_a2 == uVar6)" ( (binary_expression "in_a2 == uVar6" identifier == identifier) )) && (parenthesized_expression "(uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3)" ( (comma_expression "uVar2 = CONCAT44(uVar6,uVar4), uVar4 < in_a3" (assignment_expression "uVar2 = CONCAT44(uVar6,uVar4)" identifier = (call_expression "CONCAT44(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier )))) , (binary_expression "uVar4 < in_a3" identifier < identifier)) ))) )) ;) (expression_statement "randread(s_00,buf,size);" (call_expression "randread(s_00,buf,size)" identifier (argument_list "(s_00,buf,size)" ( identifier , identifier , identifier ))) ;) (expression_statement "pbVar8 = buf;" (assignment_expression "pbVar8 = buf" identifier = identifier) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (expression_statement "rVar16 = rVar17;" (assignment_expression "rVar16 = rVar17" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      } while ((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3));" do (compound_statement "{\n        do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);\n      }" { (do_statement "do {\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        } while (uVar6 < in_a2);" do (compound_statement "{\n          uVar6 = (uint)uVar2 * 0x100;\n          uVar9 = uVar6 + 0xff;\n          uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;\n          uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar6,uVar9);\n          iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);\n          rVar17 = CONCAT44(iVar12,uVar4);\n          pbVar8 = pbVar8 + 1;\n          uVar2 = CONCAT44(uVar6,uVar9);\n          rVar16 = CONCAT44(iVar12,uVar4);\n        }" { (expression_statement "uVar6 = (uint)uVar2 * 0x100;" (assignment_expression "uVar6 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar9 = uVar6 + 0xff;" (assignment_expression "uVar9 = uVar6 + 0xff" identifier = (binary_expression "uVar6 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100;" (assignment_expression "uVar4 = (uint)*pbVar8 + (uint)rVar16 * 0x100" identifier = (binary_expression "(uint)*pbVar8 + (uint)rVar16 * 0x100" (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier) + (binary_expression "(uint)rVar16 * 0x100" (cast_expression "(uint)rVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar6 = (uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar9 < uVar6) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar9 < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar6)" ( (binary_expression "uVar9 < uVar6" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar1 = CONCAT44(uVar6,uVar9);" (assignment_expression "uVar1 = CONCAT44(uVar6,uVar9)" identifier = (call_expression "CONCAT44(uVar6,uVar9)" identifier (argument_list "(uVar6,uVar9)" ( identifier , identifier )))) ;) (expression_statement "iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8);" (assignment_expression "iVar12 = (uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar4 < *pbVar8) + ((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8)" (call_expression "(uint)(uVar4 < *pbVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar4 < *pbVar8)" ( (binary_expression "uVar4 < *pbVar8" identifier < (pointer_expression "*pbVar8" * identifier)) ))) + (parenthesized_expression "((uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8)" ( (binary_expression "(uint)rVar16 >> 0x18 | (int)(rVar16 >> 0x20) << 8" (binary_expression "(uint)rVar16 >> 0x18" (cast_expression "(uint)rVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(rVar16 >> 0x20) << 8" (cast_expression "(int)(rVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(rVar16 >> 0x20)" ( (binary_expression "rVar16 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "rVar17 = CONCAT44(iVar12,uVar4);" (assignment_expression "rVar17 = CONCAT44(iVar12,uVar4)" identifier = (call_expression "CONCAT44(iVar12,uVar4)" identifier (argument_list "(iVar12,uVar4)" ( identifier , identifier )))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = CONCAT44(uVar6,uVar9);" (assignment_expression "uVar2 = CONCAT44(uVar6,uVar9)" identifier = (call_expression "CONCAT44(uVar6,uVar9)" identifier (argument_list "(uVar6,uVar9)" ( identifier , identifier )))) ;) (expression_statement "rVar16 = CONCAT44(iVar12,uVar4);" (assignment_expression "rVar16 = CONCAT44(iVar12,uVar4)" identifier = (call_expression "CONCAT44(iVar12,uVar4)" identifier (argument_list "(iVar12,uVar4)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar6 < in_a2)" ( (binary_expression "uVar6 < in_a2" identifier < identifier) )) ;) }) while (parenthesized_expression "((in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3))" ( (binary_expression "(in_a2 == uVar6) && (uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3)" (parenthesized_expression "(in_a2 == uVar6)" ( (binary_expression "in_a2 == uVar6" identifier == identifier) )) && (parenthesized_expression "(uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3)" ( (comma_expression "uVar2 = uVar1, rVar16 = rVar17, uVar9 < in_a3" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (comma_expression "rVar16 = rVar17, uVar9 < in_a3" (assignment_expression "rVar16 = rVar17" identifier = identifier) , (binary_expression "uVar9 < in_a3" identifier < identifier))) ))) )) ;) })) (expression_statement "iVar12 = (int)(uVar1 >> 0x20);" (assignment_expression "iVar12 = (int)(uVar1 >> 0x20)" identifier = (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar6 = (uint)uVar1;" (assignment_expression "uVar6 = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar4 = (uint)(rVar17 >> 0x20);" (assignment_expression "uVar4 = (uint)(rVar17 >> 0x20)" identifier = (call_expression "(uint)(rVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(rVar17 >> 0x20)" ( (binary_expression "rVar17 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar9 = (uint)rVar17;" (assignment_expression "uVar9 = (uint)rVar17" identifier = (cast_expression "(uint)rVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar1 == CONCAT44(in_a2,in_a3)) break;" if (parenthesized_expression "(uVar1 == CONCAT44(in_a2,in_a3))" ( (binary_expression "uVar1 == CONCAT44(in_a2,in_a3)" identifier == (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar6 - in_a3;" (assignment_expression "uVar11 = uVar6 - in_a3" identifier = (binary_expression "uVar6 - in_a3" identifier - identifier)) ;) (expression_statement "iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11);" (assignment_expression "iVar14 = (iVar12 - in_a2) - (uint)(uVar6 < uVar11)" identifier = (binary_expression "(iVar12 - in_a2) - (uint)(uVar6 < uVar11)" (parenthesized_expression "(iVar12 - in_a2)" ( (binary_expression "iVar12 - in_a2" identifier - identifier) )) - (call_expression "(uint)(uVar6 < uVar11)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar11)" ( (binary_expression "uVar6 < uVar11" identifier < identifier) ))))) ;) (expression_statement "lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7);" (assignment_expression "lVar15 = __umoddi3(iVar14,uVar11,iVar10,uVar7)" identifier = (call_expression "__umoddi3(iVar14,uVar11,iVar10,uVar7)" identifier (argument_list "(iVar14,uVar11,iVar10,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7);" (assignment_expression "rVar17 = __umoddi3(uVar4,uVar9,iVar10,uVar7)" identifier = (call_expression "__umoddi3(uVar4,uVar9,iVar10,uVar7)" identifier (argument_list "(uVar4,uVar9,iVar10,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar5 = uVar6 - (int)lVar15;" (assignment_expression "uVar5 = uVar6 - (int)lVar15" identifier = (binary_expression "uVar6 - (int)lVar15" identifier - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5);" (assignment_expression "uVar6 = (iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5)" identifier = (binary_expression "(iVar12 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar6 < uVar5)" (parenthesized_expression "(iVar12 - (int)((ulonglong)lVar15 >> 0x20))" ( (binary_expression "iVar12 - (int)((ulonglong)lVar15 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar6 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) ))))) ;) (if_statement "if ((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))) {\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }" if (parenthesized_expression "((uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5))))" ( (binary_expression "(uVar4 <= uVar6) && ((uVar4 != uVar6 || (uVar9 <= uVar5)))" (parenthesized_expression "(uVar4 <= uVar6)" ( (binary_expression "uVar4 <= uVar6" identifier <= identifier) )) && (parenthesized_expression "((uVar4 != uVar6 || (uVar9 <= uVar5)))" ( (parenthesized_expression "(uVar4 != uVar6 || (uVar9 <= uVar5))" ( (binary_expression "uVar4 != uVar6 || (uVar9 <= uVar5)" (binary_expression "uVar4 != uVar6" identifier != identifier) || (parenthesized_expression "(uVar9 <= uVar5)" ( (binary_expression "uVar9 <= uVar5" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);\n      s->randnum = rVar16;\n      rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);\n      s->randmax = rVar16;\nLAB_0002d774:\n      iVar10 = *(int *)puVar13;\n      if (iVar3 == iVar10) {\n        return rVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);\n      return rVar17;\n    }" { (expression_statement "rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7);" (assignment_expression "rVar16 = __udivdi3(uVar4,uVar9,iVar10,uVar7)" identifier = (call_expression "__udivdi3(uVar4,uVar9,iVar10,uVar7)" identifier (argument_list "(uVar4,uVar9,iVar10,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "s->randnum = rVar16;" (assignment_expression "s->randnum = rVar16" (field_expression "s->randnum" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7);" (assignment_expression "rVar16 = __udivdi3(iVar14,uVar11,iVar10,uVar7)" identifier = (call_expression "__udivdi3(iVar14,uVar11,iVar10,uVar7)" identifier (argument_list "(iVar14,uVar11,iVar10,uVar7)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "s->randmax = rVar16;" (assignment_expression "s->randmax = rVar16" (field_expression "s->randmax" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_0002d774:\n      iVar10 = *(int *)puVar13;" statement_identifier : (expression_statement "iVar10 = *(int *)puVar13;" (assignment_expression "iVar10 = *(int *)puVar13" identifier = (pointer_expression "*(int *)puVar13" * (cast_expression "(int *)puVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (iVar3 == iVar10) {\n        return rVar17;\n      }" if (parenthesized_expression "(iVar3 == iVar10)" ( (binary_expression "iVar3 == iVar10" identifier == identifier) )) (compound_statement "{\n        return rVar17;\n      }" { (return_statement "return rVar17;" return identifier ;) })) (expression_statement "puVar13 = PTR___stack_chk_fail_000445f4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000445f4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar13 + 0x16c7c))();" (call_expression "(**(code **)(puVar13 + 0x16c7c))()" (parenthesized_expression "(**(code **)(puVar13 + 0x16c7c))" ( (pointer_expression "**(code **)(puVar13 + 0x16c7c)" * (pointer_expression "*(code **)(puVar13 + 0x16c7c)" * (cast_expression "(code **)(puVar13 + 0x16c7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16c7c)" ( (binary_expression "puVar13 + 0x16c7c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10);" (assignment_expression "rVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar10)" identifier = (call_expression "(**(code **)(puVar13 + 0x16dd4))(iVar10)" (parenthesized_expression "(**(code **)(puVar13 + 0x16dd4))" ( (pointer_expression "**(code **)(puVar13 + 0x16dd4)" * (pointer_expression "*(code **)(puVar13 + 0x16dd4)" * (cast_expression "(code **)(puVar13 + 0x16dd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16dd4)" ( (binary_expression "puVar13 + 0x16dd4" identifier + number_literal) ))))) )) (argument_list "(iVar10)" ( identifier )))) ;) (return_statement "return rVar17;" return identifier ;) })) (expression_statement "uVar1 = lVar15 - 1;" (assignment_expression "uVar1 = lVar15 - 1" identifier = (binary_expression "lVar15 - 1" identifier - number_literal)) ;) })) (expression_statement "*(undefined4 *)((int)&s->randmax + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&s->randmax + 4) = 0" (pointer_expression "*(undefined4 *)((int)&s->randmax + 4)" * (cast_expression "(undefined4 *)((int)&s->randmax + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&s->randmax + 4)" ( (binary_expression "(int)&s->randmax + 4" (cast_expression "(int)&s->randmax" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&s->randmax" & (field_expression "s->randmax" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&s->randmax = 0;" (assignment_expression "*(undefined4 *)&s->randmax = 0" (pointer_expression "*(undefined4 *)&s->randmax" * (cast_expression "(undefined4 *)&s->randmax" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->randmax" & (field_expression "s->randmax" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&s->randnum + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&s->randnum + 4) = 0" (pointer_expression "*(undefined4 *)((int)&s->randnum + 4)" * (cast_expression "(undefined4 *)((int)&s->randnum + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&s->randnum + 4)" ( (binary_expression "(int)&s->randnum + 4" (cast_expression "(int)&s->randnum" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&s->randnum" & (field_expression "s->randnum" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)&s->randnum = 0;" (assignment_expression "*(undefined4 *)&s->randnum = 0" (pointer_expression "*(undefined4 *)&s->randnum" * (cast_expression "(undefined4 *)&s->randnum" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->randnum" & (field_expression "s->randnum" identifier -> field_identifier)))) = number_literal) ;) (goto_statement "goto LAB_0002d774;" goto statement_identifier ;) })))
(translation_unit "undefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}\n\n" (function_definition "undefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" type_identifier (function_declarator "randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) ))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" { (declaration "ulonglong uVar1;" type_identifier identifier ;) (declaration "ulonglong uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "longlong lVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "byte local_34 [8];" type_identifier (array_declarator "local_34 [8]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar13 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar13 = PTR___stack_chk_guard_00044624" identifier = identifier) ;) (expression_statement "uVar6 = param_4 + 1;" (assignment_expression "uVar6 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = (uVar6 < param_4) + param_3;" (assignment_expression "iVar11 = (uVar6 < param_4) + param_3" identifier = (binary_expression "(uVar6 < param_4) + param_3" (parenthesized_expression "(uVar6 < param_4)" ( (binary_expression "uVar6 < param_4" identifier < identifier) )) + identifier)) ;) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" * (cast_expression "(int *)PTR___stack_chk_guard_00044624" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar17 = *(undefined8 *)(param_1 + 2);" (assignment_expression "uVar17 = *(undefined8 *)(param_1 + 2)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulonglong *)(param_1 + 4);" (assignment_expression "uVar1 = *(ulonglong *)(param_1 + 4)" identifier = (pointer_expression "*(ulonglong *)(param_1 + 4)" * (cast_expression "(ulonglong *)(param_1 + 4)" ( (type_descriptor "ulonglong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" { (if_statement "if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" if (parenthesized_expression "(uVar1 < CONCAT44(param_3,param_4))" ( (binary_expression "uVar1 < CONCAT44(param_3,param_4)" identifier < (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) )) (compound_statement "{\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));" do (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      }" { (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);" do (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        }" { (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar3 = uVar5 + 0xff;" (assignment_expression "uVar3 = uVar5 + 0xff" identifier = (binary_expression "uVar5 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < uVar5)" ( (binary_expression "uVar3 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar2 = CONCAT44(uVar5,uVar3);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" identifier = (call_expression "CONCAT44(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 < param_3)" ( (binary_expression "uVar5 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4))" ( (binary_expression "(param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" (parenthesized_expression "(param_3 == uVar5)" ( (binary_expression "param_3 == uVar5" identifier == identifier) )) && (parenthesized_expression "(uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" ( (comma_expression "uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" identifier = (call_expression "CONCAT44(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))) , (binary_expression "uVar3 < param_4" identifier < identifier)) ))) )) ;) (expression_statement "randread(uVar8,local_34,iVar9);" (call_expression "randread(uVar8,local_34,iVar9)" identifier (argument_list "(uVar8,local_34,iVar9)" ( identifier , identifier , identifier ))) ;) (expression_statement "pbVar7 = local_34;" (assignment_expression "pbVar7 = local_34" identifier = identifier) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" identifier = identifier) ;) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));" do (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      }" { (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);" do (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        }" { (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" identifier = (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ;) (expression_statement "uVar10 = uVar5 + 0xff;" (assignment_expression "uVar10 = uVar5 + 0xff" identifier = (binary_expression "uVar5 + 0xff" identifier + number_literal)) ;) (expression_statement "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;" (assignment_expression "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100" identifier = (binary_expression "(uint)*pbVar7 + (uint)uVar16 * 0x100" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) + (binary_expression "(uint)uVar16 * 0x100" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar10 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar5)" ( (binary_expression "uVar10 < uVar5" identifier < identifier) ))) + (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" ( (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 >> 0x20)" ( (binary_expression "uVar2 >> 0x20" identifier >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar1 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar1 = CONCAT44(uVar5,uVar10)" identifier = (call_expression "CONCAT44(uVar5,uVar10)" identifier (argument_list "(uVar5,uVar10)" ( identifier , identifier )))) ;) (expression_statement "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);" (assignment_expression "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" identifier = (binary_expression "(uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < *pbVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < *pbVar7)" ( (binary_expression "uVar3 < *pbVar7" identifier < (pointer_expression "*pbVar7" * identifier)) ))) + (parenthesized_expression "((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" ( (binary_expression "(uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8" (binary_expression "(uint)uVar16 >> 0x18" (cast_expression "(uint)uVar16" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "(int)((ulonglong)uVar16 >> 0x20) << 8" (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) << number_literal)) )))) ;) (expression_statement "uVar17 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar17 = CONCAT44(iVar9,uVar3)" identifier = (call_expression "CONCAT44(iVar9,uVar3)" identifier (argument_list "(iVar9,uVar3)" ( identifier , identifier )))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar10)" identifier = (call_expression "CONCAT44(uVar5,uVar10)" identifier (argument_list "(uVar5,uVar10)" ( identifier , identifier )))) ;) (expression_statement "uVar16 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar16 = CONCAT44(iVar9,uVar3)" identifier = (call_expression "CONCAT44(iVar9,uVar3)" identifier (argument_list "(iVar9,uVar3)" ( identifier , identifier )))) ;) }) while (parenthesized_expression "(uVar5 < param_3)" ( (binary_expression "uVar5 < param_3" identifier < identifier) )) ;) }) while (parenthesized_expression "((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4))" ( (binary_expression "(param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" (parenthesized_expression "(param_3 == uVar5)" ( (binary_expression "param_3 == uVar5" identifier == identifier) )) && (parenthesized_expression "(uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" ( (comma_expression "uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (comma_expression "uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar16 = uVar17" identifier = identifier) , (binary_expression "uVar10 < param_4" identifier < identifier))) ))) )) ;) })) (expression_statement "iVar9 = (int)(uVar1 >> 0x20);" (assignment_expression "iVar9 = (int)(uVar1 >> 0x20)" identifier = (cast_expression "(int)(uVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar1 >> 0x20)" ( (binary_expression "uVar1 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "uVar5 = (uint)uVar1;" (assignment_expression "uVar5 = (uint)uVar1" identifier = (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar3 = (uint)((ulonglong)uVar17 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar17 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar17 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar10 = (uint)uVar17;" (assignment_expression "uVar10 = (uint)uVar17" identifier = (cast_expression "(uint)uVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar1 == CONCAT44(param_3,param_4)) break;" if (parenthesized_expression "(uVar1 == CONCAT44(param_3,param_4))" ( (binary_expression "uVar1 == CONCAT44(param_3,param_4)" identifier == (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) )) (break_statement "break;" break ;)) (expression_statement "uVar12 = uVar5 - param_4;" (assignment_expression "uVar12 = uVar5 - param_4" identifier = (binary_expression "uVar5 - param_4" identifier - identifier)) ;) (expression_statement "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);" (assignment_expression "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12)" identifier = (binary_expression "(iVar9 - param_3) - (uint)(uVar5 < uVar12)" (parenthesized_expression "(iVar9 - param_3)" ( (binary_expression "iVar9 - param_3" identifier - identifier) )) - (call_expression "(uint)(uVar5 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar12)" ( (binary_expression "uVar5 < uVar12" identifier < identifier) ))))) ;) (expression_statement "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" identifier = (call_expression "FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" identifier (argument_list "(iVar14,uVar12,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" identifier = (call_expression "FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" identifier (argument_list "(uVar3,uVar10,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "uVar4 = uVar5 - (int)lVar15;" (assignment_expression "uVar4 = uVar5 - (int)lVar15" identifier = (binary_expression "uVar5 - (int)lVar15" identifier - (cast_expression "(int)lVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);" (assignment_expression "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" identifier = (binary_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" (parenthesized_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20))" ( (binary_expression "iVar9 - (int)((ulonglong)lVar15 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" ( (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar5 < uVar4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < uVar4)" ( (binary_expression "uVar5 < uVar4" identifier < identifier) ))))) ;) (if_statement "if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" if (parenthesized_expression "((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4))))" ( (binary_expression "(uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))" (parenthesized_expression "(uVar3 <= uVar5)" ( (binary_expression "uVar3 <= uVar5" identifier <= identifier) )) && (parenthesized_expression "((uVar3 != uVar5 || (uVar10 <= uVar4)))" ( (parenthesized_expression "(uVar3 != uVar5 || (uVar10 <= uVar4))" ( (binary_expression "uVar3 != uVar5 || (uVar10 <= uVar4)" (binary_expression "uVar3 != uVar5" identifier != identifier) || (parenthesized_expression "(uVar10 <= uVar4)" ( (binary_expression "uVar10 <= uVar4" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" { (expression_statement "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" identifier = (call_expression "FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" identifier (argument_list "(uVar3,uVar10,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 2) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 2) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 2)" * (cast_expression "(undefined8 *)(param_1 + 2)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" identifier = (call_expression "FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" identifier (argument_list "(iVar14,uVar12,iVar11,uVar6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 4) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 4)" * (cast_expression "(undefined8 *)(param_1 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002d774:\n      iVar11 = *(int *)puVar13;" statement_identifier : (expression_statement "iVar11 = *(int *)puVar13;" (assignment_expression "iVar11 = *(int *)puVar13" identifier = (pointer_expression "*(int *)puVar13" * (cast_expression "(int *)puVar13" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (local_2c == iVar11) {\n        return uVar17;\n      }" if (parenthesized_expression "(local_2c == iVar11)" ( (binary_expression "local_2c == iVar11" identifier == identifier) )) (compound_statement "{\n        return uVar17;\n      }" { (return_statement "return uVar17;" return identifier ;) })) (expression_statement "puVar13 = PTR___stack_chk_fail_000445f4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000445f4" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" * (cast_expression "(code *)PTR___stack_chk_fail_000445f4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "(**(code **)(puVar13 + 0x16c7c))();" (call_expression "(**(code **)(puVar13 + 0x16c7c))()" (parenthesized_expression "(**(code **)(puVar13 + 0x16c7c))" ( (pointer_expression "**(code **)(puVar13 + 0x16c7c)" * (pointer_expression "*(code **)(puVar13 + 0x16c7c)" * (cast_expression "(code **)(puVar13 + 0x16c7c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16c7c)" ( (binary_expression "puVar13 + 0x16c7c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);" (assignment_expression "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11)" identifier = (call_expression "(**(code **)(puVar13 + 0x16dd4))(iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x16dd4))" ( (pointer_expression "**(code **)(puVar13 + 0x16dd4)" * (pointer_expression "*(code **)(puVar13 + 0x16dd4)" * (cast_expression "(code **)(puVar13 + 0x16dd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar13 + 0x16dd4)" ( (binary_expression "puVar13 + 0x16dd4" identifier + number_literal) ))))) )) (argument_list "(iVar11)" ( identifier )))) ;) (return_statement "return uVar17;" return identifier ;) })) (expression_statement "uVar1 = lVar15 - 1;" (assignment_expression "uVar1 = lVar15 - 1" identifier = (binary_expression "lVar15 - 1" identifier - number_literal)) ;) })) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d774;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT < IDENT)) ))) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * IDENT)) ))) + (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) << LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT))) ))) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined8 randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)\n\n{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" (type_identifier "undefined8") (function_declarator "randint_genmax(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" (identifier "randint_genmax") (parameter_list "(undefined4 *param_1,undefined4 param_2,uint param_3,uint param_4)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) () ")"))) (compound_statement "{\n  ulonglong uVar1;\n  ulonglong uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  byte *pbVar7;\n  undefined4 uVar8;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  undefined *puVar13;\n  int iVar14;\n  longlong lVar15;\n  undefined8 uVar16;\n  undefined8 uVar17;\n  byte local_34 [8];\n  int local_2c;\n  \n  puVar13 = PTR___stack_chk_guard_00044624;\n  uVar6 = param_4 + 1;\n  iVar11 = (uVar6 < param_4) + param_3;\n  uVar8 = *param_1;\n  local_2c = *(int *)PTR___stack_chk_guard_00044624;\n  uVar17 = *(undefined8 *)(param_1 + 2);\n  uVar1 = *(ulonglong *)(param_1 + 4);\n  while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }\n  param_1[5] = 0;\n  param_1[4] = 0;\n  param_1[3] = 0;\n  param_1[2] = 0;\n  goto LAB_0002d774;\n}" ({ "{") (declaration "ulonglong uVar1;" (type_identifier "ulonglong") (identifier "uVar1") (; ";")) (declaration "ulonglong uVar2;" (type_identifier "ulonglong") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined *puVar13;" (type_identifier "undefined") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "longlong lVar15;" (type_identifier "longlong") (identifier "lVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "undefined8 uVar17;" (type_identifier "undefined8") (identifier "uVar17") (; ";")) (declaration "byte local_34 [8];" (type_identifier "byte") (array_declarator "local_34 [8]" (identifier "local_34") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar13 = PTR___stack_chk_guard_00044624;" (assignment_expression "puVar13 = PTR___stack_chk_guard_00044624" (identifier "puVar13") (= "=") (identifier "PTR___stack_chk_guard_00044624")) (; ";")) (expression_statement "uVar6 = param_4 + 1;" (assignment_expression "uVar6 = param_4 + 1" (identifier "uVar6") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = (uVar6 < param_4) + param_3;" (assignment_expression "iVar11 = (uVar6 < param_4) + param_3" (identifier "iVar11") (= "=") (binary_expression "(uVar6 < param_4) + param_3" (parenthesized_expression "(uVar6 < param_4)" (( "(") (binary_expression "uVar6 < param_4" (identifier "uVar6") (< "<") (identifier "param_4")) () ")")) (+ "+") (identifier "param_3"))) (; ";")) (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" (identifier "uVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00044624;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00044624" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00044624" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00044624" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00044624")))) (; ";")) (expression_statement "uVar17 = *(undefined8 *)(param_1 + 2);" (assignment_expression "uVar17 = *(undefined8 *)(param_1 + 2)" (identifier "uVar17") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(ulonglong *)(param_1 + 4);" (assignment_expression "uVar1 = *(ulonglong *)(param_1 + 4)" (identifier "uVar1") (= "=") (pointer_expression "*(ulonglong *)(param_1 + 4)" (* "*") (cast_expression "(ulonglong *)(param_1 + 4)" (( "(") (type_descriptor "ulonglong *" (type_identifier "ulonglong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (while_statement "while( true ) {\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }\n    iVar9 = (int)(uVar1 >> 0x20);\n    uVar5 = (uint)uVar1;\n    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);\n    uVar10 = (uint)uVar17;\n    if (uVar1 == CONCAT44(param_3,param_4)) break;\n    uVar12 = uVar5 - param_4;\n    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);\n    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);\n    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);\n    uVar4 = uVar5 - (int)lVar15;\n    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);\n    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }\n    uVar1 = lVar15 - 1;\n  }" ({ "{") (if_statement "if (uVar1 < CONCAT44(param_3,param_4)) {\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" (if "if") (parenthesized_expression "(uVar1 < CONCAT44(param_3,param_4))" (( "(") (binary_expression "uVar1 < CONCAT44(param_3,param_4)" (identifier "uVar1") (< "<") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) () ")")) (compound_statement "{\n      iVar9 = 0;\n      uVar2 = uVar1;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));\n      randread(uVar8,local_34,iVar9);\n      pbVar7 = local_34;\n      uVar2 = uVar1;\n      uVar16 = uVar17;\n      do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));\n    }" ({ "{") (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" (identifier "uVar2") (= "=") (identifier "uVar1")) (; ";")) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));" (do "do") (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);\n      }" ({ "{") (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        } while (uVar5 < param_3);" (do "do") (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar3 = uVar5 + 0xff;\n          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar2 = CONCAT44(uVar5,uVar3);\n          iVar9 = iVar9 + 1;\n        }" ({ "{") (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" (identifier "uVar5") (= "=") (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "uVar3 = uVar5 + 0xff;" (assignment_expression "uVar3 = uVar5 + 0xff" (identifier "uVar3") (= "=") (binary_expression "uVar5 + 0xff" (identifier "uVar5") (+ "+") (number_literal "0xff"))) (; ";")) (expression_statement "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (identifier "uVar5") (= "=") (binary_expression "(uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < uVar5)" (( "(") (binary_expression "uVar3 < uVar5" (identifier "uVar3") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (( "(") (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar2 = CONCAT44(uVar5,uVar3);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" (identifier "uVar2") (= "=") (call_expression "CONCAT44(uVar5,uVar3)" (identifier "CONCAT44") (argument_list "(uVar5,uVar3)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 < param_3)" (( "(") (binary_expression "uVar5 < param_3" (identifier "uVar5") (< "<") (identifier "param_3")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4))" (( "(") (binary_expression "(param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" (parenthesized_expression "(param_3 == uVar5)" (( "(") (binary_expression "param_3 == uVar5" (identifier "param_3") (== "==") (identifier "uVar5")) () ")")) (&& "&&") (parenthesized_expression "(uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4)" (( "(") (comma_expression "uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar3)" (identifier "uVar2") (= "=") (call_expression "CONCAT44(uVar5,uVar3)" (identifier "CONCAT44") (argument_list "(uVar5,uVar3)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar3") () ")")))) (, ",") (binary_expression "uVar3 < param_4" (identifier "uVar3") (< "<") (identifier "param_4"))) () ")"))) () ")")) (; ";")) (expression_statement "randread(uVar8,local_34,iVar9);" (call_expression "randread(uVar8,local_34,iVar9)" (identifier "randread") (argument_list "(uVar8,local_34,iVar9)" (( "(") (identifier "uVar8") (, ",") (identifier "local_34") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "pbVar7 = local_34;" (assignment_expression "pbVar7 = local_34" (identifier "pbVar7") (= "=") (identifier "local_34")) (; ";")) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" (identifier "uVar2") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar16 = uVar17;" (assignment_expression "uVar16 = uVar17" (identifier "uVar16") (= "=") (identifier "uVar17")) (; ";")) (do_statement "do {\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));" (do "do") (compound_statement "{\n        do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);\n      }" ({ "{") (do_statement "do {\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        } while (uVar5 < param_3);" (do "do") (compound_statement "{\n          uVar5 = (uint)uVar2 * 0x100;\n          uVar10 = uVar5 + 0xff;\n          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;\n          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);\n          uVar1 = CONCAT44(uVar5,uVar10);\n          iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);\n          uVar17 = CONCAT44(iVar9,uVar3);\n          pbVar7 = pbVar7 + 1;\n          uVar2 = CONCAT44(uVar5,uVar10);\n          uVar16 = CONCAT44(iVar9,uVar3);\n        }" ({ "{") (expression_statement "uVar5 = (uint)uVar2 * 0x100;" (assignment_expression "uVar5 = (uint)uVar2 * 0x100" (identifier "uVar5") (= "=") (binary_expression "(uint)uVar2 * 0x100" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (* "*") (number_literal "0x100"))) (; ";")) (expression_statement "uVar10 = uVar5 + 0xff;" (assignment_expression "uVar10 = uVar5 + 0xff" (identifier "uVar10") (= "=") (binary_expression "uVar5 + 0xff" (identifier "uVar5") (+ "+") (number_literal "0xff"))) (; ";")) (expression_statement "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;" (assignment_expression "uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100" (identifier "uVar3") (= "=") (binary_expression "(uint)*pbVar7 + (uint)uVar16 * 0x100" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar7")) (+ "+") (binary_expression "(uint)uVar16 * 0x100" (cast_expression "(uint)uVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar16")) (* "*") (number_literal "0x100")))) (; ";")) (expression_statement "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);" (assignment_expression "uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (identifier "uVar5") (= "=") (binary_expression "(uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (call_expression "(uint)(uVar10 < uVar5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar10 < uVar5)" (( "(") (binary_expression "uVar10 < uVar5" (identifier "uVar10") (< "<") (identifier "uVar5")) () ")"))) (+ "+") (parenthesized_expression "((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8)" (( "(") (binary_expression "(uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8" (binary_expression "(uint)uVar2 >> 0x18" (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(int)(uVar2 >> 0x20) << 8" (cast_expression "(int)(uVar2 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 >> 0x20)" (( "(") (binary_expression "uVar2 >> 0x20" (identifier "uVar2") (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar1 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar1 = CONCAT44(uVar5,uVar10)" (identifier "uVar1") (= "=") (call_expression "CONCAT44(uVar5,uVar10)" (identifier "CONCAT44") (argument_list "(uVar5,uVar10)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar10") () ")")))) (; ";")) (expression_statement "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);" (assignment_expression "iVar9 = (uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" (identifier "iVar9") (= "=") (binary_expression "(uint)(uVar3 < *pbVar7) +\n                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" (call_expression "(uint)(uVar3 < *pbVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar3 < *pbVar7)" (( "(") (binary_expression "uVar3 < *pbVar7" (identifier "uVar3") (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) () ")"))) (+ "+") (parenthesized_expression "((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8)" (( "(") (binary_expression "(uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8" (binary_expression "(uint)uVar16 >> 0x18" (cast_expression "(uint)uVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(int)((ulonglong)uVar16 >> 0x20) << 8" (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar17 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar17 = CONCAT44(iVar9,uVar3)" (identifier "uVar17") (= "=") (call_expression "CONCAT44(iVar9,uVar3)" (identifier "CONCAT44") (argument_list "(iVar9,uVar3)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar3") () ")")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = CONCAT44(uVar5,uVar10);" (assignment_expression "uVar2 = CONCAT44(uVar5,uVar10)" (identifier "uVar2") (= "=") (call_expression "CONCAT44(uVar5,uVar10)" (identifier "CONCAT44") (argument_list "(uVar5,uVar10)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar10") () ")")))) (; ";")) (expression_statement "uVar16 = CONCAT44(iVar9,uVar3);" (assignment_expression "uVar16 = CONCAT44(iVar9,uVar3)" (identifier "uVar16") (= "=") (call_expression "CONCAT44(iVar9,uVar3)" (identifier "CONCAT44") (argument_list "(iVar9,uVar3)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar3") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar5 < param_3)" (( "(") (binary_expression "uVar5 < param_3" (identifier "uVar5") (< "<") (identifier "param_3")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4))" (( "(") (binary_expression "(param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" (parenthesized_expression "(param_3 == uVar5)" (( "(") (binary_expression "param_3 == uVar5" (identifier "param_3") (== "==") (identifier "uVar5")) () ")")) (&& "&&") (parenthesized_expression "(uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4)" (( "(") (comma_expression "uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar2 = uVar1" (identifier "uVar2") (= "=") (identifier "uVar1")) (, ",") (comma_expression "uVar16 = uVar17, uVar10 < param_4" (assignment_expression "uVar16 = uVar17" (identifier "uVar16") (= "=") (identifier "uVar17")) (, ",") (binary_expression "uVar10 < param_4" (identifier "uVar10") (< "<") (identifier "param_4")))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar9 = (int)(uVar1 >> 0x20);" (assignment_expression "iVar9 = (int)(uVar1 >> 0x20)" (identifier "iVar9") (= "=") (cast_expression "(int)(uVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar1 >> 0x20)" (( "(") (binary_expression "uVar1 >> 0x20" (identifier "uVar1") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar5 = (uint)uVar1;" (assignment_expression "uVar5 = (uint)uVar1" (identifier "uVar5") (= "=") (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1"))) (; ";")) (expression_statement "uVar3 = (uint)((ulonglong)uVar17 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar17 >> 0x20)" (identifier "uVar3") (= "=") (call_expression "(uint)((ulonglong)uVar17 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar17 >> 0x20" (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "uVar10 = (uint)uVar17;" (assignment_expression "uVar10 = (uint)uVar17" (identifier "uVar10") (= "=") (cast_expression "(uint)uVar17" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar17"))) (; ";")) (if_statement "if (uVar1 == CONCAT44(param_3,param_4)) break;" (if "if") (parenthesized_expression "(uVar1 == CONCAT44(param_3,param_4))" (( "(") (binary_expression "uVar1 == CONCAT44(param_3,param_4)" (identifier "uVar1") (== "==") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar12 = uVar5 - param_4;" (assignment_expression "uVar12 = uVar5 - param_4" (identifier "uVar12") (= "=") (binary_expression "uVar5 - param_4" (identifier "uVar5") (- "-") (identifier "param_4"))) (; ";")) (expression_statement "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);" (assignment_expression "iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12)" (identifier "iVar14") (= "=") (binary_expression "(iVar9 - param_3) - (uint)(uVar5 < uVar12)" (parenthesized_expression "(iVar9 - param_3)" (( "(") (binary_expression "iVar9 - param_3" (identifier "iVar9") (- "-") (identifier "param_3")) () ")")) (- "-") (call_expression "(uint)(uVar5 < uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < uVar12)" (( "(") (binary_expression "uVar5 < uVar12" (identifier "uVar5") (< "<") (identifier "uVar12")) () ")"))))) (; ";")) (expression_statement "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" (identifier "lVar15") (= "=") (call_expression "FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6)" (identifier "FUN_0002ebc0") (argument_list "(iVar14,uVar12,iVar11,uVar6)" (( "(") (identifier "iVar14") (, ",") (identifier "uVar12") (, ",") (identifier "iVar11") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" (identifier "uVar17") (= "=") (call_expression "FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6)" (identifier "FUN_0002ebc0") (argument_list "(uVar3,uVar10,iVar11,uVar6)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar10") (, ",") (identifier "iVar11") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "uVar4 = uVar5 - (int)lVar15;" (assignment_expression "uVar4 = uVar5 - (int)lVar15" (identifier "uVar4") (= "=") (binary_expression "uVar5 - (int)lVar15" (identifier "uVar5") (- "-") (cast_expression "(int)lVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar15")))) (; ";")) (expression_statement "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);" (assignment_expression "uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" (identifier "uVar5") (= "=") (binary_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4)" (parenthesized_expression "(iVar9 - (int)((ulonglong)lVar15 >> 0x20))" (( "(") (binary_expression "iVar9 - (int)((ulonglong)lVar15 >> 0x20)" (identifier "iVar9") (- "-") (cast_expression "(int)((ulonglong)lVar15 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar15 >> 0x20" (cast_expression "(ulonglong)lVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar15")) (>> ">>") (number_literal "0x20")) () ")")))) () ")")) (- "-") (call_expression "(uint)(uVar5 < uVar4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar5 < uVar4)" (( "(") (binary_expression "uVar5 < uVar4" (identifier "uVar5") (< "<") (identifier "uVar4")) () ")"))))) (; ";")) (if_statement "if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" (if "if") (parenthesized_expression "((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4))))" (( "(") (binary_expression "(uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))" (parenthesized_expression "(uVar3 <= uVar5)" (( "(") (binary_expression "uVar3 <= uVar5" (identifier "uVar3") (<= "<=") (identifier "uVar5")) () ")")) (&& "&&") (parenthesized_expression "((uVar3 != uVar5 || (uVar10 <= uVar4)))" (( "(") (parenthesized_expression "(uVar3 != uVar5 || (uVar10 <= uVar4))" (( "(") (binary_expression "uVar3 != uVar5 || (uVar10 <= uVar4)" (binary_expression "uVar3 != uVar5" (identifier "uVar3") (!= "!=") (identifier "uVar5")) (|| "||") (parenthesized_expression "(uVar10 <= uVar4)" (( "(") (binary_expression "uVar10 <= uVar4" (identifier "uVar10") (<= "<=") (identifier "uVar4")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 2) = uVar16;\n      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);\n      *(undefined8 *)(param_1 + 4) = uVar16;\nLAB_0002d774:\n      iVar11 = *(int *)puVar13;\n      if (local_2c == iVar11) {\n        return uVar17;\n      }\n      puVar13 = PTR___stack_chk_fail_000445f4;\n      (*(code *)PTR___stack_chk_fail_000445f4)();\n      (**(code **)(puVar13 + 0x16c7c))();\n      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);\n      return uVar17;\n    }" ({ "{") (expression_statement "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" (identifier "uVar16") (= "=") (call_expression "FUN_0002e750(uVar3,uVar10,iVar11,uVar6)" (identifier "FUN_0002e750") (argument_list "(uVar3,uVar10,iVar11,uVar6)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar10") (, ",") (identifier "iVar11") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 2) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 2) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 2)" (* "*") (cast_expression "(undefined8 *)(param_1 + 2)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);" (assignment_expression "uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" (identifier "uVar16") (= "=") (call_expression "FUN_0002e750(iVar14,uVar12,iVar11,uVar6)" (identifier "FUN_0002e750") (argument_list "(iVar14,uVar12,iVar11,uVar6)" (( "(") (identifier "iVar14") (, ",") (identifier "uVar12") (, ",") (identifier "iVar11") (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 4) = uVar16;" (assignment_expression "*(undefined8 *)(param_1 + 4) = uVar16" (pointer_expression "*(undefined8 *)(param_1 + 4)" (* "*") (cast_expression "(undefined8 *)(param_1 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (labeled_statement "LAB_0002d774:\n      iVar11 = *(int *)puVar13;" (statement_identifier "LAB_0002d774") (: ":") (expression_statement "iVar11 = *(int *)puVar13;" (assignment_expression "iVar11 = *(int *)puVar13" (identifier "iVar11") (= "=") (pointer_expression "*(int *)puVar13" (* "*") (cast_expression "(int *)puVar13" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar13")))) (; ";"))) (if_statement "if (local_2c == iVar11) {\n        return uVar17;\n      }" (if "if") (parenthesized_expression "(local_2c == iVar11)" (( "(") (binary_expression "local_2c == iVar11" (identifier "local_2c") (== "==") (identifier "iVar11")) () ")")) (compound_statement "{\n        return uVar17;\n      }" ({ "{") (return_statement "return uVar17;" (return "return") (identifier "uVar17") (; ";")) (} "}"))) (expression_statement "puVar13 = PTR___stack_chk_fail_000445f4;" (assignment_expression "puVar13 = PTR___stack_chk_fail_000445f4" (identifier "puVar13") (= "=") (identifier "PTR___stack_chk_fail_000445f4")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000445f4)();" (call_expression "(*(code *)PTR___stack_chk_fail_000445f4)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000445f4)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000445f4" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000445f4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000445f4"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar13 + 0x16c7c))();" (call_expression "(**(code **)(puVar13 + 0x16c7c))()" (parenthesized_expression "(**(code **)(puVar13 + 0x16c7c))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x16c7c)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x16c7c)" (* "*") (cast_expression "(code **)(puVar13 + 0x16c7c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x16c7c)" (( "(") (binary_expression "puVar13 + 0x16c7c" (identifier "puVar13") (+ "+") (number_literal "0x16c7c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);" (assignment_expression "uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11)" (identifier "uVar17") (= "=") (call_expression "(**(code **)(puVar13 + 0x16dd4))(iVar11)" (parenthesized_expression "(**(code **)(puVar13 + 0x16dd4))" (( "(") (pointer_expression "**(code **)(puVar13 + 0x16dd4)" (* "*") (pointer_expression "*(code **)(puVar13 + 0x16dd4)" (* "*") (cast_expression "(code **)(puVar13 + 0x16dd4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar13 + 0x16dd4)" (( "(") (binary_expression "puVar13 + 0x16dd4" (identifier "puVar13") (+ "+") (number_literal "0x16dd4")) () ")"))))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")")))) (; ";")) (return_statement "return uVar17;" (return "return") (identifier "uVar17") (; ";")) (} "}"))) (expression_statement "uVar1 = lVar15 - 1;" (assignment_expression "uVar1 = lVar15 - 1" (identifier "uVar1") (= "=") (binary_expression "lVar15 - 1" (identifier "lVar15") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "param_1[5] = 0;" (assignment_expression "param_1[5] = 0" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[4] = 0;" (assignment_expression "param_1[4] = 0" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[3] = 0;" (assignment_expression "param_1[3] = 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0002d774;" (goto "goto") (statement_identifier "LAB_0002d774") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator 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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (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: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))))

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

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

{
  ulonglong uVar1;
  ulonglong uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  byte *pbVar7;
  undefined4 uVar8;
  int iVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  undefined *puVar13;
  int iVar14;
  longlong lVar15;
  undefined8 uVar16;
  undefined8 uVar17;
  byte local_34 [8];
  int local_2c;
  
  puVar13 = PTR___stack_chk_guard_00044624;
  uVar6 = param_4 + 1;
  iVar11 = (uVar6 < param_4) + param_3;
  uVar8 = *param_1;
  local_2c = *(int *)PTR___stack_chk_guard_00044624;
  uVar17 = *(undefined8 *)(param_1 + 2);
  uVar1 = *(ulonglong *)(param_1 + 4);
  while( true ) {
    if (uVar1 < CONCAT44(param_3,param_4)) {
      iVar9 = 0;
      uVar2 = uVar1;
      do {
        do {
          uVar5 = (uint)uVar2 * 0x100;
          uVar3 = uVar5 + 0xff;
          uVar5 = (uint)(uVar3 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar2 = CONCAT44(uVar5,uVar3);
          iVar9 = iVar9 + 1;
        } while (uVar5 < param_3);
      } while ((param_3 == uVar5) && (uVar2 = CONCAT44(uVar5,uVar3), uVar3 < param_4));
      randread(uVar8,local_34,iVar9);
      pbVar7 = local_34;
      uVar2 = uVar1;
      uVar16 = uVar17;
      do {
        do {
          uVar5 = (uint)uVar2 * 0x100;
          uVar10 = uVar5 + 0xff;
          uVar3 = (uint)*pbVar7 + (uint)uVar16 * 0x100;
          uVar5 = (uint)(uVar10 < uVar5) + ((uint)uVar2 >> 0x18 | (int)(uVar2 >> 0x20) << 8);
          uVar1 = CONCAT44(uVar5,uVar10);
          iVar9 = (uint)(uVar3 < *pbVar7) +
                  ((uint)uVar16 >> 0x18 | (int)((ulonglong)uVar16 >> 0x20) << 8);
          uVar17 = CONCAT44(iVar9,uVar3);
          pbVar7 = pbVar7 + 1;
          uVar2 = CONCAT44(uVar5,uVar10);
          uVar16 = CONCAT44(iVar9,uVar3);
        } while (uVar5 < param_3);
      } while ((param_3 == uVar5) && (uVar2 = uVar1, uVar16 = uVar17, uVar10 < param_4));
    }
    iVar9 = (int)(uVar1 >> 0x20);
    uVar5 = (uint)uVar1;
    uVar3 = (uint)((ulonglong)uVar17 >> 0x20);
    uVar10 = (uint)uVar17;
    if (uVar1 == CONCAT44(param_3,param_4)) break;
    uVar12 = uVar5 - param_4;
    iVar14 = (iVar9 - param_3) - (uint)(uVar5 < uVar12);
    lVar15 = FUN_0002ebc0(iVar14,uVar12,iVar11,uVar6);
    uVar17 = FUN_0002ebc0(uVar3,uVar10,iVar11,uVar6);
    uVar4 = uVar5 - (int)lVar15;
    uVar5 = (iVar9 - (int)((ulonglong)lVar15 >> 0x20)) - (uint)(uVar5 < uVar4);
    if ((uVar3 <= uVar5) && ((uVar3 != uVar5 || (uVar10 <= uVar4)))) {
      uVar16 = FUN_0002e750(uVar3,uVar10,iVar11,uVar6);
      *(undefined8 *)(param_1 + 2) = uVar16;
      uVar16 = FUN_0002e750(iVar14,uVar12,iVar11,uVar6);
      *(undefined8 *)(param_1 + 4) = uVar16;
LAB_0002d774:
      iVar11 = *(int *)puVar13;
      if (local_2c == iVar11) {
        return uVar17;
      }
      puVar13 = PTR___stack_chk_fail_000445f4;
      (*(code *)PTR___stack_chk_fail_000445f4)();
      (**(code **)(puVar13 + 0x16c7c))();
      uVar17 = (**(code **)(puVar13 + 0x16dd4))(iVar11);
      return uVar17;
    }
    uVar1 = lVar15 - 1;
  }
  param_1[5] = 0;
  param_1[4] = 0;
  param_1[3] = 0;
  param_1[2] = 0;
  goto LAB_0002d774;
}

